[java-identity-provider COMMIT] in /trunk/idp-conf/src/main/resources: conf/errors.xml messages/authn-messages.proper...

noreply at shibboleth.net noreply at shibboleth.net
Wed Oct 28 18:44:17 EDT 2015


Author: scantor
Date: Wed Oct 28 18:44:17 2015
New Revision: 7900

URL: http://svn.shibboleth.net/view/java-identity-provider?rev=7900&view=rev
Log:
IDP-224 - Single Logout implementation

Rework async and logout responses as system views
Match result of LogoutResponse to JSON format of CAS prop flow

Added:
    trunk/idp-conf/src/main/resources/system/views/logout/saml-async.vm   (with props)
    trunk/idp-conf/src/main/resources/system/views/logout/saml-result.vm   (with props)
Modified:
    trunk/idp-conf/src/main/resources/conf/errors.xml
    trunk/idp-conf/src/main/resources/messages/authn-messages.properties
    trunk/idp-conf/src/main/resources/system/flows/saml/saml2/slo-front-abstract-flow.xml

Modified: trunk/idp-conf/src/main/resources/conf/errors.xml
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-conf/src/main/resources/conf/errors.xml?rev=7900&r1=7899&r2=7900&view=diff
==============================================================================
--- trunk/idp-conf/src/main/resources/conf/errors.xml	(original)
+++ trunk/idp-conf/src/main/resources/conf/errors.xml	Wed Oct 28 18:44:17 2015
@@ -14,8 +14,7 @@
 
     <!-- Map local events to alternate view templates. -->
     <util:map id="shibboleth.EventViewMap">
-        <!-- Handles final result of SAML 2 LogoutResponse messages. -->
-        <entry key="LogoutResponse" value="logout-response" />
+        <!-- <entry key="EventToChange" value="viewname" /> -->
     </util:map>
 
     <!--

Modified: trunk/idp-conf/src/main/resources/messages/authn-messages.properties
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-conf/src/main/resources/messages/authn-messages.properties?rev=7900&r1=7899&r2=7900&view=diff
==============================================================================
--- trunk/idp-conf/src/main/resources/messages/authn-messages.properties	(original)
+++ trunk/idp-conf/src/main/resources/messages/authn-messages.properties	Wed Oct 28 18:44:17 2015
@@ -66,9 +66,3 @@
 idp.logout.complete = The logout operation is complete, and no other services appear to have been accessed during this session.
 idp.logout.local = You elected not to log out of all the applications accessed during your session.
 idp.logout.attempt = Attempting to log out of the following services:
-
-AsyncLogout = async-logout
-
-async-logout.title = Logout Completed
-async-logout.message = Logout complete. Service provider requested no response.
-

Modified: trunk/idp-conf/src/main/resources/system/flows/saml/saml2/slo-front-abstract-flow.xml
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-conf/src/main/resources/system/flows/saml/saml2/slo-front-abstract-flow.xml?rev=7900&r1=7899&r2=7900&view=diff
==============================================================================
--- trunk/idp-conf/src/main/resources/system/flows/saml/saml2/slo-front-abstract-flow.xml	(original)
+++ trunk/idp-conf/src/main/resources/system/flows/saml/saml2/slo-front-abstract-flow.xml	Wed Oct 28 18:44:17 2015
@@ -11,16 +11,17 @@
         
         <transition on="proceed" to="DecodeMessage" />
     </action-state>
+
+    <!--
+    This flow pulls double duty handling LogoutRequest and LogoutResponse.
+    Response handling is just translating the status of the LogoutResponse into a JSON
+    result compatible with the logout propagation flow contract.
+    -->
     
     <decision-state id="DoProfileWork">
         <if test="opensamlProfileRequestContext.getInboundMessageContext().getMessage() instanceof T(org.opensaml.saml.saml2.core.LogoutResponse)"
-            then="DoLogoutResponse" else="PopulateClientStorageLoadContext"/>
-    </decision-state>
-
-    <action-state id="DoLogoutResponse">
-        <evaluate expression="'LogoutResponse'" />
-        <transition to="HandleSuccessWithView" />
-    </action-state>
+            then="LogoutResponseView" else="PopulateClientStorageLoadContext"/>
+    </decision-state>
 
     <!-- Load client storage if needed. -->
     
@@ -137,17 +138,68 @@
     
     <decision-state id="CheckAsync">
         <if test="opensamlProfileRequestContext.getInboundMessageContext().getMessage().getExtensions() == null or opensamlProfileRequestContext.getInboundMessageContext().getMessage().getExtensions().getUnknownXMLObjects(T(org.opensaml.saml.ext.saml2aslo.Asynchronous).DEFAULT_ELEMENT_NAME).isEmpty()"
-            then="BuildResponse" else="DoAsync" />
-    </decision-state>
-    
-    <action-state id="DoAsync">
-        <evaluate expression="'AsyncLogout'" />
-        <transition to="HandleSuccessWithView" />
-    </action-state>
-    
-    <!-- Same machinery as error view, but writes audit log unconditionally. -->
-    
-    <end-state id="HandleSuccessWithView" view="#{MapEventToView.apply(currentEvent)}">
+            then="BuildResponse" else="AsyncLogoutView" />
+    </decision-state>
+    
+    <action-state id="BuildResponse">
+        <evaluate expression="AddLogoutResponse" />
+        <evaluate expression="AddInResponseToToResponse" />
+        
+        <evaluate expression="'proceed'" />

[... 134 lines stripped ...]


More information about the commits mailing list