Extensive refactoring of Fediz response web flow

Project: http://git-wip-us.apache.org/repos/asf/cxf-fediz/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf-fediz/commit/f637eedf
Tree: http://git-wip-us.apache.org/repos/asf/cxf-fediz/tree/f637eedf
Diff: http://git-wip-us.apache.org/repos/asf/cxf-fediz/diff/f637eedf

Branch: refs/heads/master
Commit: f637eedfc0eacd5b9e538665f053032a2846d1cc
Parents: 861d366
Author: Colm O hEigeartaigh <[email protected]>
Authored: Fri Nov 25 18:05:55 2016 +0000
Committer: Colm O hEigeartaigh <[email protected]>
Committed: Fri Nov 25 18:05:55 2016 +0000

----------------------------------------------------------------------
 .../cxf/fediz/service/idp/IdpConstants.java     |  2 +-
 .../idp/beans/SigninParametersCacheAction.java  | 23 +++------
 .../TrustedIdpFacebookProtocolHandler.java      |  5 +-
 .../TrustedIdpOIDCProtocolHandler.java          |  5 +-
 .../TrustedIdpSAMLProtocolHandler.java          |  4 +-
 .../TrustedIdpWSFedProtocolHandler.java         |  3 +-
 .../flows/federation-signin-response.xml        | 17 +++---
 .../flows/federation-validate-request.xml       | 20 ++++----
 .../WEB-INF/flows/saml-validate-request.xml     | 54 +++++++++++++-------
 9 files changed, 68 insertions(+), 65 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf-fediz/blob/f637eedf/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/IdpConstants.java
----------------------------------------------------------------------
diff --git 
a/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/IdpConstants.java 
b/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/IdpConstants.java
index 5d9c0f2..fc4e831 100644
--- 
a/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/IdpConstants.java
+++ 
b/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/IdpConstants.java
@@ -41,7 +41,7 @@ public final class IdpConstants {
     /**
      * A Context variable associated with the request (independent of protocol)
      */
-    public static final String CONTEXT = "context";
+    public static final String CONTEXT = "context_key";
     
     
     

http://git-wip-us.apache.org/repos/asf/cxf-fediz/blob/f637eedf/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/beans/SigninParametersCacheAction.java
----------------------------------------------------------------------
diff --git 
a/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/beans/SigninParametersCacheAction.java
 
b/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/beans/SigninParametersCacheAction.java
index 2ecb08e..f719860 100644
--- 
a/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/beans/SigninParametersCacheAction.java
+++ 
b/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/beans/SigninParametersCacheAction.java
@@ -24,14 +24,12 @@ import java.util.Map;
 import java.util.UUID;
 
 import org.apache.cxf.fediz.core.FederationConstants;
-import org.apache.cxf.fediz.core.SAMLSSOConstants;
 import org.apache.cxf.fediz.core.exception.ProcessingException;
 import org.apache.cxf.fediz.service.idp.IdpConstants;
 import org.apache.cxf.fediz.service.idp.domain.Application;
 import org.apache.cxf.fediz.service.idp.domain.Idp;
 import org.apache.cxf.fediz.service.idp.samlsso.SAMLAuthnRequest;
 import org.apache.cxf.fediz.service.idp.util.WebUtils;
-import org.apache.cxf.rs.security.oauth2.utils.OAuthConstants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
@@ -86,21 +84,12 @@ public class SigninParametersCacheAction {
         LOG.info("SignIn parameters cached and context set to [" + uuidKey + 
"].");
     }
     
-    public void restore(RequestContext context) {
+    public void restore(RequestContext context, String contextKey) {
         
-        String uuidKey = (String)WebUtils.getAttributeFromFlowScope(context, 
FederationConstants.PARAM_CONTEXT);
-        
-        if (uuidKey == null) {
-            uuidKey = (String)WebUtils.getAttributeFromFlowScope(context, 
SAMLSSOConstants.RELAY_STATE);
-        }
-        if (uuidKey == null) {
-            uuidKey = (String)WebUtils.getAttributeFromFlowScope(context, 
OAuthConstants.STATE);
-        }
-        
-        if (uuidKey != null) {
+        if (contextKey != null) {
             @SuppressWarnings("unchecked")
             Map<String, Object> signinParams =
-                (Map<String, 
Object>)WebUtils.getAttributeFromExternalContext(context, uuidKey);
+                (Map<String, 
Object>)WebUtils.getAttributeFromExternalContext(context, contextKey);
             
             if (signinParams != null) {
                 String value = 
(String)signinParams.get(FederationConstants.PARAM_REPLY);
@@ -111,14 +100,14 @@ public class SigninParametersCacheAction {
                 if (value != null) {
                     WebUtils.putAttributeInFlowScope(context, 
FederationConstants.PARAM_TREALM, value);
                 }
+                // TODO - Remove
                 value = 
(String)signinParams.get(FederationConstants.PARAM_HOME_REALM);
                 if (value != null) {
                     WebUtils.putAttributeInFlowScope(context, 
FederationConstants.PARAM_HOME_REALM, value);
+                    WebUtils.putAttributeInFlowScope(context, 
IdpConstants.HOME_REALM, value);
                 }
-                // TODO...
                 value = (String)signinParams.get(IdpConstants.HOME_REALM);
                 if (value != null) {
-                    WebUtils.putAttributeInFlowScope(context, 
FederationConstants.PARAM_HOME_REALM, value);
                     WebUtils.putAttributeInFlowScope(context, 
IdpConstants.HOME_REALM, value);
                 }
                 
@@ -137,7 +126,7 @@ public class SigninParametersCacheAction {
                 LOG.debug("SignIn parameters restored: {}", 
signinParams.toString());
                 WebUtils.removeAttributeFromFlowScope(context, 
FederationConstants.PARAM_CONTEXT);
                 LOG.info("SignIn parameters restored and " + 
FederationConstants.PARAM_CONTEXT + "[" 
-                    + uuidKey + "] cleared.");
+                    + contextKey + "] cleared.");
                 
                 value = 
(String)signinParams.get(FederationConstants.PARAM_CONTEXT);
                 if (value != null) {

http://git-wip-us.apache.org/repos/asf/cxf-fediz/blob/f637eedf/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/protocols/TrustedIdpFacebookProtocolHandler.java
----------------------------------------------------------------------
diff --git 
a/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/protocols/TrustedIdpFacebookProtocolHandler.java
 
b/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/protocols/TrustedIdpFacebookProtocolHandler.java
index 643eb7c..36db3ae 100644
--- 
a/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/protocols/TrustedIdpFacebookProtocolHandler.java
+++ 
b/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/protocols/TrustedIdpFacebookProtocolHandler.java
@@ -30,7 +30,7 @@ import javax.ws.rs.core.Response;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
-import org.apache.cxf.fediz.core.FederationConstants;
+import org.apache.cxf.fediz.service.idp.IdpConstants;
 import org.apache.cxf.fediz.service.idp.domain.Idp;
 import org.apache.cxf.fediz.service.idp.domain.TrustedIdp;
 import org.apache.cxf.fediz.service.idp.util.WebUtils;
@@ -118,8 +118,7 @@ public class TrustedIdpFacebookProtocolHandler extends 
AbstractTrustedIdpOAuth2P
             // user's claims
             String subjectName = getSubjectName(apiEndpoint, 
accessToken.getTokenKey(), trustedIdp);
             try {
-                String whr = (String) 
WebUtils.getAttributeFromFlowScope(context,
-                                                                         
FederationConstants.PARAM_HOME_REALM);
+                String whr = (String) 
WebUtils.getAttributeFromFlowScope(context, IdpConstants.HOME_REALM);
                 if (whr == null) {
                     LOG.warn("Home realm is null");
                     throw new IllegalStateException("Home realm is null");

http://git-wip-us.apache.org/repos/asf/cxf-fediz/blob/f637eedf/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/protocols/TrustedIdpOIDCProtocolHandler.java
----------------------------------------------------------------------
diff --git 
a/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/protocols/TrustedIdpOIDCProtocolHandler.java
 
b/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/protocols/TrustedIdpOIDCProtocolHandler.java
index 8eb8af8..b45c763 100644
--- 
a/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/protocols/TrustedIdpOIDCProtocolHandler.java
+++ 
b/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/protocols/TrustedIdpOIDCProtocolHandler.java
@@ -33,10 +33,10 @@ import javax.ws.rs.core.Response;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
-import org.apache.cxf.fediz.core.FederationConstants;
 import org.apache.cxf.fediz.core.exception.ProcessingException;
 import org.apache.cxf.fediz.core.util.CertsUtils;
 import org.apache.cxf.fediz.core.util.DOMUtils;
+import org.apache.cxf.fediz.service.idp.IdpConstants;
 import org.apache.cxf.fediz.service.idp.domain.Idp;
 import org.apache.cxf.fediz.service.idp.domain.TrustedIdp;
 import org.apache.cxf.fediz.service.idp.util.WebUtils;
@@ -157,8 +157,7 @@ public class TrustedIdpOIDCProtocolHandler extends 
AbstractTrustedIdpOAuth2Proto
             client.close();
             
             try {
-                String whr = (String) 
WebUtils.getAttributeFromFlowScope(context,
-                                                                         
FederationConstants.PARAM_HOME_REALM);
+                String whr = (String) 
WebUtils.getAttributeFromFlowScope(context, IdpConstants.HOME_REALM);
                 if (whr == null) {
                     LOG.warn("Home realm is null");
                     throw new IllegalStateException("Home realm is null");

http://git-wip-us.apache.org/repos/asf/cxf-fediz/blob/f637eedf/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/protocols/TrustedIdpSAMLProtocolHandler.java
----------------------------------------------------------------------
diff --git 
a/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/protocols/TrustedIdpSAMLProtocolHandler.java
 
b/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/protocols/TrustedIdpSAMLProtocolHandler.java
index 3f5c0a2..4214705 100644
--- 
a/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/protocols/TrustedIdpSAMLProtocolHandler.java
+++ 
b/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/protocols/TrustedIdpSAMLProtocolHandler.java
@@ -42,7 +42,6 @@ import org.w3c.dom.Element;
 import org.apache.cxf.common.util.Base64Exception;
 import org.apache.cxf.common.util.Base64Utility;
 import org.apache.cxf.common.util.StringUtils;
-import org.apache.cxf.fediz.core.FederationConstants;
 import org.apache.cxf.fediz.core.util.CertsUtils;
 import org.apache.cxf.fediz.core.util.DOMUtils;
 import org.apache.cxf.fediz.service.idp.IdpConstants;
@@ -200,8 +199,7 @@ public class TrustedIdpSAMLProtocolHandler extends 
AbstractTrustedIdpProtocolHan
                 new SecurityToken(id, validatorResponse.getCreated(), 
validatorResponse.getSessionNotOnOrAfter());
 
             idpToken.setToken(validatorResponse.getAssertionElement());
-            String whr = (String) WebUtils.getAttributeFromFlowScope(context,
-                                                                     
FederationConstants.PARAM_HOME_REALM);
+            String whr = (String) WebUtils.getAttributeFromFlowScope(context, 
IdpConstants.HOME_REALM);
             LOG.info("[IDP_TOKEN={}] created from [RP_TOKEN={}] issued by home 
realm [{}]",
                      id, validatorResponse.getResponseId(), whr);
             LOG.debug("Created date={}", validatorResponse.getCreated());

http://git-wip-us.apache.org/repos/asf/cxf-fediz/blob/f637eedf/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/protocols/TrustedIdpWSFedProtocolHandler.java
----------------------------------------------------------------------
diff --git 
a/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/protocols/TrustedIdpWSFedProtocolHandler.java
 
b/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/protocols/TrustedIdpWSFedProtocolHandler.java
index 25a5e9c..ea8feb4 100644
--- 
a/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/protocols/TrustedIdpWSFedProtocolHandler.java
+++ 
b/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/protocols/TrustedIdpWSFedProtocolHandler.java
@@ -115,8 +115,7 @@ public class TrustedIdpWSFedProtocolHandler extends 
AbstractTrustedIdpProtocolHa
     public SecurityToken mapSignInResponse(RequestContext context, Idp idp, 
TrustedIdp trustedIdp) {
 
         try {
-            String whr = (String) WebUtils.getAttributeFromFlowScope(context,
-                                                                     
FederationConstants.PARAM_HOME_REALM);
+            String whr = (String) WebUtils.getAttributeFromFlowScope(context, 
IdpConstants.HOME_REALM);
     
             if (whr == null) {
                 LOG.warn("Home realm is null");

http://git-wip-us.apache.org/repos/asf/cxf-fediz/blob/f637eedf/services/idp/src/main/webapp/WEB-INF/flows/federation-signin-response.xml
----------------------------------------------------------------------
diff --git 
a/services/idp/src/main/webapp/WEB-INF/flows/federation-signin-response.xml 
b/services/idp/src/main/webapp/WEB-INF/flows/federation-signin-response.xml
index 3e459cd..8d8f4ec 100644
--- a/services/idp/src/main/webapp/WEB-INF/flows/federation-signin-response.xml
+++ b/services/idp/src/main/webapp/WEB-INF/flows/federation-signin-response.xml
@@ -29,23 +29,22 @@ subflow to get a RP token from the STS.
         http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd";>
 
     <input name="idpConfig" />
-    <input name="wctx" />
-    <input name="wauth" />
+    <input name="context_key" />
     <input name="wresult" />
     <input name="RelayState" />
     <input name="SAMLResponse" />
     <input name="state" />
     <input name="code" />
-    <input name="whr" />
+    <input name="home_realm" />
 
     <on-start>
         <!-- restore the original request parameters for the current context 
-->
-        <evaluate 
expression="signinParametersCacheAction.restore(flowRequestContext)" />
+        <evaluate 
expression="signinParametersCacheAction.restore(flowRequestContext, 
context_key)" />
     </on-start>
     
-    <!-- validate token issued by requestor IDP ('wresult') given its 'whr' -->
+    <!-- validate token issued by requestor IDP given its home realm -->
     <action-state id="validateToken">
-        <evaluate 
expression="trustedIdpProtocolAction.mapSignInResponse(flowRequestContext, whr)"
+        <evaluate 
expression="trustedIdpProtocolAction.mapSignInResponse(flowRequestContext, 
home_realm)"
             result="flowScope.idpToken" 
result-type="org.apache.cxf.ws.security.tokenstore.SecurityToken" />
         <transition to="checkCacheTrustedIdpToken" />
         <transition
@@ -55,16 +54,16 @@ subflow to get a RP token from the STS.
     </action-state>
     
     <action-state id="checkCacheTrustedIdpToken">
-        <evaluate 
expression="idpConfig.findTrustedIdp(flowScope.whr).cacheTokens" />
+        <evaluate 
expression="idpConfig.findTrustedIdp(flowScope.home_realm).cacheTokens" />
         <transition on="yes" to="requestRpToken">
-            <set name="externalContext.sessionMap[flowScope.whr]"
+            <set name="externalContext.sessionMap[flowScope.home_realm]"
                     value="flowScope.idpToken" />
         </transition>
         <transition on="no" to="requestRpToken" />
     </action-state>
 
     <end-state id="requestRpToken">
-        <output name="whr" value="flowScope.whr" />
+        <output name="home_realm" value="flowScope.home_realm" />
         <output name="wctx" value="flowScope.wctx" />
         <output name="wreply" value="flowScope.wreply" />
         <output name="wtrealm" value="flowScope.wtrealm" />

http://git-wip-us.apache.org/repos/asf/cxf-fediz/blob/f637eedf/services/idp/src/main/webapp/WEB-INF/flows/federation-validate-request.xml
----------------------------------------------------------------------
diff --git 
a/services/idp/src/main/webapp/WEB-INF/flows/federation-validate-request.xml 
b/services/idp/src/main/webapp/WEB-INF/flows/federation-validate-request.xml
index 1ac194d..578be04 100644
--- a/services/idp/src/main/webapp/WEB-INF/flows/federation-validate-request.xml
+++ b/services/idp/src/main/webapp/WEB-INF/flows/federation-validate-request.xml
@@ -39,6 +39,7 @@
             <set name="flowScope.wtrealm" value="requestParameters.wtrealm" />
             <set name="flowScope.wreply" value="requestParameters.wreply" />
             <set name="flowScope.wctx" value="requestParameters.wctx" />
+            <set name="flowScope.context_key" value="requestParameters.wctx" />
             <set name="flowScope.wfresh" value="requestParameters.wfresh" />
             <set name="flowScope.whr" value="requestParameters.whr" />
             <set name="flowScope.wresult" value="requestParameters.wresult" />
@@ -57,22 +58,24 @@
     <decision-state id="selectSAMLProcess">
         <on-entry>
             <set name="flowScope.RelayState" 
value="requestParameters.RelayState" />
+            <set name="flowScope.context_key" 
value="requestParameters.RelayState" />
             <set name="flowScope.SAMLResponse" 
value="requestParameters.SAMLResponse" />
         </on-entry>
-        <if test="requestParameters.RelayState == null or 
requestParameters.RelayState.length() == 0"
+        <if test="requestParameters.RelayState == null or 
requestParameters.RelayState.isEmpty()"
             then="viewBadRequest" />
-        <if test="requestParameters.SAMLResponse == null or 
requestParameters.SAMLResponse.length() == 0"
+        <if test="requestParameters.SAMLResponse == null or 
requestParameters.SAMLResponse.isEmpty()"
             then="viewBadRequest" else="signinResponse" />
     </decision-state>
     
     <decision-state id="selectOIDCAuthorizationCodeFlowProcess">
          <on-entry>
             <set name="flowScope.state" value="requestParameters.state" />
+            <set name="flowScope.context_key" value="requestParameters.state" 
/>
             <set name="flowScope.code" value="requestParameters.code" />
         </on-entry>
-        <if test="requestParameters.code == null or 
requestParameters.code.length() == 0"
+        <if test="requestParameters.code == null or 
requestParameters.code.isEmpty()"
             then="viewBadRequest" />
-        <if test="requestParameters.state == null or 
requestParameters.state.length() == 0"
+        <if test="requestParameters.state == null or 
requestParameters.state.isEmpty()"
             then="viewBadRequest" else="signinResponse" />
     </decision-state>
     
@@ -121,23 +124,22 @@
     <subflow-state id="signinResponse" subflow="signinResponse">
         <input name="idpConfig" value="flowScope.idpConfig" />
         <input name="wfresh" value="flowScope.wfresh" />
-        <input name="wctx" value="flowScope.wctx" />
-        <input name="wauth" value="flowScope.wauth" />
+        <input name="context_key" value="flowScope.context_key" />
         <input name="wresult" value="flowScope.wresult" />
         <input name="RelayState" value="flowScope.RelayState" />
         <input name="SAMLResponse" value="flowScope.SAMLResponse" />
         <input name="state" value="flowScope.state" />
         <input name="code" value="flowScope.code" />
-        <input name="whr" value="flowScope.whr" />
+        <input name="home_realm" value="flowScope.whr" />
 
         <output name="wtrealm" />
         <output name="wreply" />
         <output name="wctx" />
-        <output name="whr" />
+        <output name="home_realm" />
         <output name="idpToken" />
 
         <transition on="requestRpToken" to="requestRpToken">
-            <set name="flowScope.whr" value="currentEvent.attributes.whr" />
+            <set name="flowScope.whr" 
value="currentEvent.attributes.home_realm" />
             <set name="flowScope.wctx" value="currentEvent.attributes.wctx" />
             <set name="flowScope.wtrealm" 
value="currentEvent.attributes.wtrealm" />
             <set name="flowScope.wreply" 
value="currentEvent.attributes.wreply" />

http://git-wip-us.apache.org/repos/asf/cxf-fediz/blob/f637eedf/services/idp/src/main/webapp/WEB-INF/flows/saml-validate-request.xml
----------------------------------------------------------------------
diff --git 
a/services/idp/src/main/webapp/WEB-INF/flows/saml-validate-request.xml 
b/services/idp/src/main/webapp/WEB-INF/flows/saml-validate-request.xml
index b52d122..4bb0531 100644
--- a/services/idp/src/main/webapp/WEB-INF/flows/saml-validate-request.xml
+++ b/services/idp/src/main/webapp/WEB-INF/flows/saml-validate-request.xml
@@ -22,25 +22,44 @@
     xsi:schemaLocation="http://www.springframework.org/schema/webflow
                           
http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd";>
 
-    <!-- protocol check -->
-    <decision-state id="SAMLRequestCheck">
+    <decision-state id="evaluateProtocol">
+        <on-entry>
+            <set name="flowScope.idpConfig" 
value="config.getIDP(fedizEntryPoint.getRealm())" />
+        </on-entry>
+        <if test="requestParameters.wa == 'wsignin1.0'" 
then="selectWsFedProcess" />
+        <if test="requestParameters.SAMLRequest != null or 
requestParameters.SAMLResponse != null" 
+            then="selectSAMLProcess" else="viewBadRequest"
+        />
+    </decision-state>
+    
+    <decision-state id="selectWsFedProcess">
+        <on-entry>
+            <set name="flowScope.wresult" value="requestParameters.wresult" />
+            <set name="flowScope.wctx" value="requestParameters.wctx" />
+            <set name="flowScope.context_key" value="requestParameters.wctx" />
+        </on-entry>
+        <if test="requestParameters.wctx == null or 
requestParameters.wctx.isEmpty()"
+            then="viewBadRequest" />
+        <if test="requestParameters.wresult == null or 
requestParameters.wresult.isEmpty()"
+            then="viewBadRequest" />
+        <if test="requestParameters.wtrealm != null and 
!requestParameters.wtrealm.isEmpty()"
+            then="signinResponse" else="viewBadRequest" />
+    </decision-state>
+    
+    <decision-state id="selectSAMLProcess">
         <on-entry>
             <set name="flowScope.RelayState" 
value="requestParameters.RelayState" />
+            <set name="flowScope.context_key" 
value="requestParameters.RelayState" />
+            <set name="flowScope.SAMLResponse" 
value="requestParameters.SAMLResponse" />
             <set name="flowScope.SAMLRequest" 
value="requestParameters.SAMLRequest" />
             <set name="flowScope.Signature" 
value="requestParameters.Signature" />
-            <set name="flowScope.wresult" value="requestParameters.wresult" />
-            <set name="flowScope.wctx" value="requestParameters.wctx" />
-            <set name="flowScope.idpConfig" 
value="config.getIDP(fedizEntryPoint.getRealm())" />
         </on-entry>
+        <if test="requestParameters.RelayState == null or 
requestParameters.RelayState.isEmpty()"
+            then="handleBadRequestError" />
         <if test="requestParameters.SAMLRequest != null and 
!requestParameters.SAMLRequest.isEmpty()"
             then="signinSAMLRequest" />
-        <if test="requestParameters.wresult != null and 
!requestParameters.wresult.isEmpty()"
-            then="signinResponse" />
-        <if test="requestParameters.SAMLResponse == null or 
requestParameters.SAMLResponse.length() == 0"
-            then="viewBadRequest" else="signinResponse" />
-        <!-- TODO Refactor this -->
-        <if test="requestParameters.RelayState == null or 
requestParameters.RelayState.length() == 0"
-            then="handleBadRequestError" />
+        <if test="requestParameters.SAMLResponse == null or 
requestParameters.SAMLResponse.isEmpty()"
+            then="handleBadRequestError" else="signinResponse" />
     </decision-state>
     
     <subflow-state id="signinSAMLRequest" subflow="signinSAMLRequest">
@@ -73,25 +92,24 @@
      <subflow-state id="signinResponse" subflow="signinResponse">
         <input name="idpConfig" value="flowScope.idpConfig" />
         <input name="wfresh" value="flowScope.wfresh" />
-        <input name="wctx" value="flowScope.wctx" />
-        <input name="wauth" value="flowScope.wauth" />
+        <input name="context_key" value="flowScope.context_key" />
         <input name="wresult" value="flowScope.wresult" />
         <input name="RelayState" value="flowScope.RelayState" />
         <input name="SAMLResponse" value="flowScope.SAMLResponse" />
         <input name="state" value="flowScope.state" />
         <input name="code" value="flowScope.code" />
-        <input name="whr" value="flowScope.whr" />
+        <input name="home_realm" value="flowScope.whr" />
 
         <output name="wtrealm" />
         <output name="wreply" />
         <output name="wctx" />
-        <output name="whr" />
+        <output name="home_realm" />
         <output name="idpToken" />
         <output name="saml_authn_request" />
         <output name="RelayState" />
 
         <transition on="requestRpToken" to="requestRpToken">
-            <set name="flowScope.home_realm" 
value="currentEvent.attributes.whr" />
+            <set name="flowScope.home_realm" 
value="currentEvent.attributes.home_realm" />
             <set name="flowScope.idpToken" 
value="currentEvent.attributes.idpToken" />
             <set name="flowScope.saml_authn_request" 
value="currentEvent.attributes.saml_authn_request" />
             <set name="flowScope.RelayState" 
value="currentEvent.attributes.RelayState" />
@@ -153,7 +171,7 @@
                       result="requestScope.samlAction"/>
         </on-entry>
         <!-- See if we managed to at least parse the request to get the 
response URL -->
-        <if test="requestScope.samlAction == null or 
requestScope.samlAction.length() == 0"
+        <if test="requestScope.samlAction == null or 
requestScope.samlAction.isEmpty()"
             then="viewBadRequestParsingError" else="viewBadRequest"/>
     </decision-state>
     

Reply via email to