summaryrefslogtreecommitdiffstats
path: root/python/doc/tutorial/sp-logout-process-idp-initiated-soap-request.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/doc/tutorial/sp-logout-process-idp-initiated-soap-request.py')
-rw-r--r--python/doc/tutorial/sp-logout-process-idp-initiated-soap-request.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/python/doc/tutorial/sp-logout-process-idp-initiated-soap-request.py b/python/doc/tutorial/sp-logout-process-idp-initiated-soap-request.py
new file mode 100644
index 00000000..6f7ad43d
--- /dev/null
+++ b/python/doc/tutorial/sp-logout-process-idp-initiated-soap-request.py
@@ -0,0 +1,30 @@
+import lasso
+
+
+## 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.