summaryrefslogtreecommitdiffstats
path: root/python/doc/tutorial/sp-logout-send-request.py
blob: d68b3de585ef8c97797b74b99836b7d11652fc01 (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
import lasso

lasso.init()

## Logout initiated by service provider: Send a logout request to identity provider.
##
## Called when the user press logout button on service provider.

server_dump = [...] # Load string server_dump from file or database or...
server = lasso.Server.new_from_dump(server_dump)
user_dump = [...] # Retrieve string user_dump from logged user account.
user = lasso.User.new_from_dump(user_dump)
logout = lasso.Logout.new(server, user)
if logout.init_request():
    raise Exception('Logout error')
if logout.build_request_msg():
    raise Exception('Logout error')
if not logout.msg_body:
    [...] # Reply a HTTP redirect to logout.msg_url.
else:
    # Send a logout SOAP message to identity provider.
    [...] # Logout user from service provider, but do not erase user_dump.
    soap_response = [...] # Send SOAP message logout.msg_body to URL logout.msg_url.
    if logout.handle_response(soap_response, lasso.httpMethods['soap']):
        raise Exception('Logout error')
    # Save the updated user_dump into account.
    user_dump = logout.user.dump()
    [...] # Store string user_dump into account (replace the previous one).
    # User is now logged out => delete session, cookie...
    [...]

lasso.shutdown()