[java-identity-provider COMMIT] in /trunk/idp-conf/src/main/resources: system/flows/saml/saml2/slo-front-abstract-flo...

noreply at shibboleth.net noreply at shibboleth.net
Mon Sep 8 22:02:51 EDT 2014


Author: scantor
Date: Mon Sep  8 22:02:51 2014
New Revision: 6512

URL: http://svn.shibboleth.net/view/java-identity-provider?rev=6512&view=rev
Log:
IDP-224 - Move async logout handling out of view into flow.

Modified:
    trunk/idp-conf/src/main/resources/system/flows/saml/saml2/slo-front-abstract-flow.xml
    trunk/idp-conf/src/main/resources/views/logout.vm

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=6512&r1=6511&r2=6512&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 Mon Sep  8 22:02:51 2014
@@ -47,9 +47,31 @@
             <evaluate expression="flowRequestContext.getExternalContext().getNativeRequest()" result="viewScope.request" />
             <evaluate expression="flowRequestContext.getExternalContext().getNativeResponse()" result="viewScope.response" />
         </on-render>
-        <transition on="proceed" to="BuildResponse" />
-        <transition on="AsyncLogout" to="HandleErrorWithView" />
+        <transition on="proceed" to="CheckAsync" />
     </view-state>
+    
+    <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="HandleAsyncWithView" />
+    </action-state>
+    
+    <!-- Same machinery as error view, but writes the audit log unconditionally. -->
+    
+    <end-state id="HandleAsyncWithView" view="#{MapEventToView.apply(currentEvent)}">
+        <on-entry>
+            <evaluate expression="ErrorViewPopulateAuditContext" />
+            <evaluate expression="WriteAuditLog" />
+            <evaluate expression="opensamlProfileRequestContext" result="requestScope.profileRequestContext" />
+            <evaluate expression="T(net.shibboleth.utilities.java.support.codec.HTMLEncoder)" result="requestScope.encoder" />
+            <evaluate expression="flowRequestContext.getExternalContext().getNativeRequest()" result="requestScope.request" />
+            <evaluate expression="flowRequestContext.getExternalContext().getNativeResponse()" result="requestScope.response" />
+        </on-entry>
+    </end-state>
     
     <action-state id="BuildResponse">
         <evaluate expression="AddLogoutResponse" />

Modified: trunk/idp-conf/src/main/resources/views/logout.vm
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-conf/src/main/resources/views/logout.vm?rev=6512&r1=6511&r2=6512&view=diff
==============================================================================
--- trunk/idp-conf/src/main/resources/views/logout.vm (original)
+++ trunk/idp-conf/src/main/resources/views/logout.vm Mon Sep  8 22:02:51 2014
@@ -17,6 +17,9 @@
         <meta charset="utf-8" />
         <title>Example Logout Page</title>
         <link rel="stylesheet" type="text/css" href="$request.getContextPath()/css/main.css"/>
+        <style type="text/css">
+        iframe#buffer { position:absolute; visibility:hidden; left:0; top:0; } */
+        </style>
   	</head>
 
   	<body>
@@ -65,14 +68,9 @@
         </div>
       </div>
 
+      <!-- If flowExecutionUrl set, complete the flow by adding a hidden iframe. -->
       #if ( $flowExecutionUrl )
-        <p align="center">
-        #if ( $asynchronous )
-          <iframe width="800" src="$flowExecutionUrl&_eventId_AsyncLogout" />
-        #else
-          <iframe width="800" src="$flowExecutionUrl&_eventId_proceed" />
-        #end
-        </p>
+          <iframe id="buffer" src="$flowExecutionUrl&_eventId_proceed" />
       #end
       
       <footer>



More information about the commits mailing list