[java-identity-provider COMMIT] /trunk/idp-authn-impl/src/main/resources/flows/authn-flow.xml

noreply at shibboleth.net noreply at shibboleth.net
Mon Aug 26 14:14:36 EDT 2013


Author: scantor
Date: Mon Aug 26 14:14:36 2013
New Revision: 4723

URL: http://svn.shibboleth.net/view/java-identity-provider?rev=4723&view=rev
Log:
Comments, some fixes.

Modified:
    trunk/idp-authn-impl/src/main/resources/flows/authn-flow.xml

Modified: trunk/idp-authn-impl/src/main/resources/flows/authn-flow.xml
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-authn-impl/src/main/resources/flows/authn-flow.xml?rev=4723&r1=4722&r2=4723&view=diff
==============================================================================
--- trunk/idp-authn-impl/src/main/resources/flows/authn-flow.xml (original)
+++ trunk/idp-authn-impl/src/main/resources/flows/authn-flow.xml Mon Aug 26 14:14:36 2013
@@ -2,10 +2,20 @@
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/webflow classpath:/org/springframework/webflow/engine/model/builder/spring-webflow-2.0.xsd">
 
+    <!--
+    This is the Authentication subflow. It handles retrieval of an existing session,
+    set up and eventual selection of an subflow or active AuthenticationResult, and
+    finalization of the processing such as updating a session, before returning control
+    to the calling flow.
+    -->
+    
+    <!-- START FLOW SETUP -->
     <action-state id="InitializeAuthenticationContext">
         <evaluate expression="InitializeAuthenticationContext" />
         <transition on="proceed" to="ExtractActiveAuthenticationResults" />
     </action-state>
+    
+    <!-- TODO: session extraction goes here -->
     
     <action-state id="ExtractActiveAuthenticationResults">
         <evaluate expression="ExtractActiveAuthenticationResults" />
@@ -21,7 +31,14 @@
         <evaluate expression="FilterFlowsByPassivity" />
         <transition on="proceed" to="SelectAuthenticationFlow" />
     </action-state>
+    <!-- END FLOW SETUP -->
     
+    <!--
+    The Select action is the "dispatching" step. Proceed here routes around
+    calling a new subflow, and goes directly to the Finalize step. Anything
+    starting with "AuthenticationFlow/" is a flow descriptor that we send
+    control to to attempt a login.
+    -->
     <action-state id="SelectAuthenticationFlow">
         <evaluate expression="SelectAuthenticationFlow" />
         
@@ -32,24 +49,44 @@
         <transition on="#{currentEvent.id.startsWith('AuthenticationFlow/')}" to="CallAuthenticationFlow" />
     </action-state>
 
+    <!--
+    This invokes an authentication flow to attempt a login. Anything but proceed
+    is an error, otherwise the called flow is finalized.
+    -->
     <subflow-state id="CallAuthenticationFlow" subflow="#{currentEvent.id}">
         <transition on="proceed" to="FinalizeAuthenticationFlow" />
         
         <transition on="#{true}" to="#{currentEvent.id}" />
     </subflow-state>
     
+    <!-- This wraps up a fresh login by checking on the result of subject c14n. -->
     <action-state id="FinalizeAuthenticationFlow">
         <evaluate expression="FinalizeAuthenticationFlow" />
         
-        <transition on="proceed" to="proceed" />
+        <transition on="proceed" to="FinalizeAuthentication" />
         
-        <!-- TODO: support appropriate behavior for IdentitySwitch here -->
+        <!-- TODO: support appropriate behavior for IdentitySwitch here, maybe as a subflow -->
     </action-state>
 
+    <!-- Wraps up the subflow by producing a SubjectContext. -->
+    <action-state id="FinalizeAuthentication">
+        <evaluate expression="FinalizeAuthentication" />
+    </action-state>
+
+    <!-- Successful completion of subflow. -->
     <end-state id="proceed" />
+
+    <!-- Error events to reflect back from this subflow. -->    
+    <end-state id="IdentitySwitch" />
+    <end-state id="InputOutputError" />
+    <end-state id="InvalidCredentials" />
+    <end-state id="InvalidProfileContext" />
+    <end-state id="NoCredentials" />
     <end-state id="NoPotentialFlow" />
     <end-state id="RequestUnsupported" />
+    <end-state id="SubjectCanonicalizationError" />
 
+    <!-- Default is to turn any event into its own end-state. -->
     <global-transitions>
         <transition on="#{true}" to="#{currentEvent.id}" />
     </global-transitions>



More information about the commits mailing list