Single Logout Channel="back"

Tomaz Majerhold tomaz.majerhold at arnes.si
Wed Dec 3 04:51:43 EST 2014


I think that Single Logout is very important, because of data privacy.

I) Scenario: We have AAI enabled applications
a) Users share computer and they logout from one application but not 
close the browser, so another user can access data of first user.
b) User have multiple AAI accounts, he logout from one application, but 
he don't wont to close a browser and then he login with second AAI 
account in a second application and he will access a data from previous 
AAI account.


II) So this SLO concept that SP notify application is ok, but it is not 
well defined. SOAP was NEVER defined by Request/Response message but 
with WSDL.

WSDL defines:
Services, Bindings, Port Type, Messages, Types

So what is missing, WSDL!

III) So I create my example of WSDL:
a) Beacuse SP send user shibboleth session id I rename it to 
UserShibSessionId (String)
b) Return type is boolean:
     true := appliacation find session ID and destroy user session
     false := application not find or destroy user session

c) SOAPFault is thrown if same error happened in application

WSDL:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<definitions
     targetNamespace="urn:mace:shibboleth:2.0:sp:notify"
     name="LogoutNotificationService"
     xmlns="http://schemas.xmlsoap.org/wsdl/"
     xmlns:wsp="http://www.w3.org/ns/ws-policy"
     xmlns:tns="urn:mace:shibboleth:2.0:sp:notify"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
     xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy"
     xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
     xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">

   <types>
     <xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
         <xs:element name="Logout" type="xs:boolean"/>
         <xs:element name="UserShibSessionId" nillable="false" 
type="xs:string"/>
     </xs:schema>
   </types>

   <message name="LogoutNotification">
     <part name="UserShibSessionId" type="xsd:string"/>
   </message>
   <message name="LogoutNotificationResponse">
     <part name="Logout" type="xsd:boolean"/>
   </message>

   <portType name="LogoutNotificationService">
     <operation name="LogoutNotification">
       <input 
wsam:Action="urn:mace:shibboleth:2.0:sp:notify:LogoutNotificationService:LogoutNotificationRequest" 
message="tns:LogoutNotification"/>
       <output 
wsam:Action="urn:mace:shibboleth:2.0:sp:notify:LogoutNotificationService:LogoutNotificationResponse" 
message="tns:LogoutNotificationResponse"/>
     </operation>
   </portType>

   <binding name="LogoutNotificationServicePortBinding" 
type="tns:LogoutNotificationService">
     <soap:binding transport="http://schemas.xmlsoap.org/soap/http" 
style="rpc"/>
     <operation name="LogoutNotification">
       <soap:operation 
soapAction="http://localhost:8080/appl/LogoutNotificationServiceService/LogoutNotificationService/LogoutNotification"/>
       <input>
         <soap:body use="literal" 
namespace="urn:mace:shibboleth:2.0:sp:notify"/>
       </input>
       <output>
         <soap:body use="literal" 
namespace="urn:mace:shibboleth:2.0:sp:notify"/>
       </output>
     </operation>
   </binding>

   <service name="LogoutNotificationService">
     <port name="LogoutNotificationServicePort" 
binding="tns:LogoutNotificationServicePortBinding">
       <soap:address 
location="http://localhost:8080/appl/LogoutNotificationServiceService/LogoutNotificationService"/>
     </port>
   </service>
</definitions>


SOAP Request:
<?xml version="1.0" encoding="UTF-8"?><S:Envelope 
xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
     <SOAP-ENV:Header/>
     <S:Body>
         <ns2:LogoutNotification 
xmlns:ns2="urn:mace:shibboleth:2.0:sp:notify">
<UserShibSessionId>_d5628602323819f716fcee04103ad5ef</UserShibSessionId>
         </ns2:LogoutNotification>
     </S:Body>
</S:Envelope>

SOAP Response:
<?xml version="1.0" encoding="UTF-8"?><S:Envelope 
xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
     <SOAP-ENV:Header/>
     <S:Body>
         <ns2:LogoutNotificationResponse 
xmlns:ns2="urn:mace:shibboleth:2.0:sp:notify">
             <Logout>true</Logout>
         </ns2:LogoutNotificationResponse>
     </S:Body>
</S:Envelope>

IV) SP should be able to configure to send notification to all 
LocationMatch  in Apache HTTP configuration, by Notify tag


Regards, Tomaz






More information about the users mailing list