summaryrefslogtreecommitdiffstats
path: root/python/doc/tutorial/sp-logout-process-idp-initiated-soap-request.py
blob: dc17fe8105b8fff8de8c8513b68a692e2aad4b5e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import lasso

lasso.init()

## SOAP Logout initiated by identity provider.

soap_request = [...] # Get content of HTTP POST command.
server_dump = [...] # Load string server_dump from file or database or...
server = lasso.Server.new_from_dump(server_dump)
logout = lasso.Logout.new(server)
if logout.handle_request(soap_request, lasso.httpMethods['soap']):
    raise Exception('Logout error')
name_identifier = logout.response.name_identifier
account = [...] # Retrieve user account having this name_identifier.
if not account:
    # Unknown account.
    logout.response_status = lasso.libStatusCodes['unknownPrincipal']
else:
    user_dump = [...] # Retrieve string user_dump from account.
    if not user_dump:
        logout.response_status = lasso.libStatusCodes['unknownPrincipal']		
    else:
        user = lasso.User.new_from_dump(user_dump)
        del user.authn_assertion
        user_dump = user.dump()
        [...] # Store string user_dump into account (replace the previous one).
        # User is now logged out => delete session, cookie...
        [...]
if logout.build_response_msg():
    raise Exception('Logout error')
[...] # Reply a HTTP SOAP response using logout.msg_body.

lasso.shutdown()