[java-identity-provider COMMIT] in /trunk: idp-conf/src/main/resources/conf/error-mappings.xml idp-conf/src/main/reso...

noreply at shibboleth.net noreply at shibboleth.net
Tue Sep 9 13:47:42 EDT 2014


Author: scantor
Date: Tue Sep  9 13:47:41 2014
New Revision: 6517

URL: http://svn.shibboleth.net/view/java-identity-provider?rev=6517&view=rev
Log:
IDP-224 - Add trivial processing of SAML logout responses.

Added:
    trunk/idp-conf/src/main/resources/views/logout-response.vm   (with props)
    trunk/idp-war/src/main/webapp/WEB-INF/jsp/logout-response.jsp   (with props)
Modified:
    trunk/idp-conf/src/main/resources/conf/error-mappings.xml
    trunk/idp-conf/src/main/resources/system/flows/saml/saml2/slo-front-abstract-flow.xml

Modified: trunk/idp-conf/src/main/resources/conf/error-mappings.xml
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-conf/src/main/resources/conf/error-mappings.xml?rev=6517&r1=6516&r2=6517&view=diff
==============================================================================
--- trunk/idp-conf/src/main/resources/conf/error-mappings.xml (original)
+++ trunk/idp-conf/src/main/resources/conf/error-mappings.xml Tue Sep  9 13:47:41 2014
@@ -12,13 +12,15 @@
     <bean id="shibboleth.DefaultErrorView" class="java.lang.String" c:_0="%{idp.errors.defaultView:error}" />
 
     <!-- If desired, map events to alternate error view templates. -->
+    <util:map id="shibboleth.EventViewMap">
     <!--
-    <util:map id="shibboleth.EventViewMap">
         <entry key="MessageReplay" value="stale-error" />
         <entry key="MessageExpired" value="stale-error" />
         <entry key="UnableToDecode" value="stale-error" />
+    -->
+        <!-- Handles final result of SAML 2 LogoutResponse messages. -->
+        <entry key="LogoutResponse" value="logout-response" />
     </util:map>
-    -->
 
     <!-- List of events to trap and handle with local views, without returning to SPs. -->
     <!--

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=6517&r1=6516&r2=6517&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 Tue Sep  9 13:47:41 2014
@@ -11,8 +11,18 @@
         
         <transition on="proceed" to="DecodeMessage" />
     </action-state>
+    
+    <decision-state id="DoProfileWork">
+        <if test="opensamlProfileRequestContext.getInboundMessageContext().getMessage() instanceof T(org.opensaml.saml.saml2.core.LogoutResponse)"
+            then="DoLogoutResponse" else="DoLogoutRequest"/>
+    </decision-state>
 
-    <action-state id="DoProfileWork">
+    <action-state id="DoLogoutResponse">
+        <evaluate expression="'LogoutResponse'" />
+        <transition to="HandleSuccessWithView" />
+    </action-state>
+
+    <action-state id="DoLogoutRequest">
         <evaluate expression="ProcessLogoutRequest" />
         <evaluate expression="LogoutPopulateAuditContext" />
         <evaluate expression="PopulateMultiRPContextFromLogoutContext" />
@@ -40,7 +50,6 @@
     <view-state id="LogoutView" view="logout">
         <on-render>
             <evaluate expression="opensamlProfileRequestContext" result="viewScope.profileRequestContext" />
-            <evaluate expression="opensamlProfileRequestContext.getInboundMessageContext().getMessage().getExtensions() != null and !opensamlProfileRequestContext.getInboundMessageContext().getMessage().getExtensions().getUnknownXMLObjects(T(org.opensaml.saml.ext.saml2aslo.Asynchronous).DEFAULT_ELEMENT_NAME).isEmpty()" result="viewScope.asynchronous" />
             <evaluate expression="opensamlProfileRequestContext.getSubcontext(T(net.shibboleth.idp.session.context.LogoutContext))" result="viewScope.logoutContext" />
             <evaluate expression="opensamlProfileRequestContext.getSubcontext(T(net.shibboleth.idp.profile.context.MultiRelyingPartyContext))" result="viewScope.multiRPContext" />
             <evaluate expression="T(net.shibboleth.utilities.java.support.codec.HTMLEncoder)" result="viewScope.encoder" />
@@ -57,12 +66,12 @@
     
     <action-state id="DoAsync">
         <evaluate expression="'AsyncLogout'" />
-        <transition to="HandleAsyncWithView" />
+        <transition to="HandleSuccessWithView" />
     </action-state>
     
-    <!-- Same machinery as error view, but writes the audit log unconditionally. -->
+    <!-- Same machinery as error view, but writes audit log unconditionally. -->
     
-    <end-state id="HandleAsyncWithView" view="#{MapEventToView.apply(currentEvent)}">
+    <end-state id="HandleSuccessWithView" view="#{MapEventToView.apply(currentEvent)}">
         <on-entry>
             <evaluate expression="ErrorViewPopulateAuditContext" />
             <evaluate expression="WriteAuditLog" />



More information about the commits mailing list