|
| 1 | +# Render with https://www.websequencediagrams.com |
| 2 | + |
| 3 | +title SATOSA SAML Authn Response |
| 4 | +# v3.4.8 |
| 5 | + |
| 6 | +note right of Gunicorn: GET \nsaml2/acs/post |
| 7 | +Gunicorn->*SATOSA_STATE: preceding\nAuthnRequest |
| 8 | +Gunicorn->+WsgiApplication\n(SATOSABase): __call__ |
| 9 | +WsgiApplication\n(SATOSABase)->*Context: |
| 10 | +WsgiApplication\n(SATOSABase)->WsgiApplication\n(SATOSABase): unpack_request() |
| 11 | +WsgiApplication\n(SATOSABase)->+WsgiApplication\n(SATOSABase): run(Context) |
| 12 | +WsgiApplication\n(SATOSABase)->+WsgiApplication\n(SATOSABase): _load_state(Context) |
| 13 | + SATOSA_STATE-->WsgiApplication\n(SATOSABase): |
| 14 | +WsgiApplication\n(SATOSABase)-->-WsgiApplication\n(SATOSABase): |
| 15 | +WsgiApplication\n(SATOSABase)->+ModuleRouter: endpoint_routing(context) -> endpoint |
| 16 | +ModuleRouter-->-WsgiApplication\n(SATOSABase): authn_response |
| 17 | + |
| 18 | +WsgiApplication\n(SATOSABase)-->+WsgiApplication\n(SATOSABase): _run_bound_endpoint\n(\authn_response) |
| 19 | +WsgiApplication\n(SATOSABase)->+SAMLBackend\n(Backendmodule): authn_response |
| 20 | +SAMLBackend\n(Backendmodule)->+SAMLBackend\n(Backendmodule): _translate_response |
| 21 | +SAMLBackend\n(Backendmodule)->SAMLBackend\n(Backendmodule): saml2.sigver.\n_check_signature |
| 22 | +SAMLBackend\n(Backendmodule)->*InternalData: |
| 23 | +SAMLBackend\n(Backendmodule)-->-SAMLBackend\n(Backendmodule): |
| 24 | +SAMLBackend\n(Backendmodule)->+WsgiApplication\n(SATOSABase): _auth_resp_callback_func |
| 25 | + |
| 26 | +note over Context, SAMLFrontend |
| 27 | + Incorrect notation: Looping over Response Micro Services is in fact a recursive design: |
| 28 | + Each microservice calls the next in the list, and the last one calls _handle_authn_response(). |
| 29 | +end note |
| 30 | +loop for all Response Micro Services |
| 31 | + WsgiApplication\n(SATOSABase)->+Instances of \nRequestMicroService: process |
| 32 | + Instances of \nRequestMicroService->+WsgiApplication\n(SATOSABase): _auth_resp_finish |
| 33 | + WsgiApplication\n(SATOSABase)->+ModuleRouter:frontend_routing |
| 34 | + ModuleRouter-->-WsgiApplication\n(SATOSABase): Frontend |
| 35 | + WsgiApplication\n(SATOSABase)->+SAMLFrontend: handle_authn_response |
| 36 | + SAMLFrontend->+SAMLFrontend: _handle_authn_response |
| 37 | + SAMLFrontend->SAMLFrontend: load_state |
| 38 | + SAMLFrontend->+SAMLFrontend: _get_approved_attributes |
| 39 | + SAMLFrontend->+SAMLFrontend: _filter_attributes |
| 40 | + SAMLFrontend->*Response: |
| 41 | + SAMLFrontend-->-SAMLFrontend: |
| 42 | + SAMLFrontend-->-SAMLFrontend: Response |
| 43 | + SAMLFrontend-->-WsgiApplication\n(SATOSABase): Response |
| 44 | + WsgiApplication\n(SATOSABase)-->-SAMLFrontend: Response |
| 45 | + SAMLFrontend-->-WsgiApplication\n(SATOSABase): Response |
| 46 | + WsgiApplication\n(SATOSABase)-->-Instances of \nRequestMicroService: Response |
| 47 | + Instances of \nRequestMicroService-->-WsgiApplication\n(SATOSABase): Response |
| 48 | +end |
| 49 | + |
| 50 | +WsgiApplication\n(SATOSABase)-->-SAMLBackend\n(Backendmodule): |
| 51 | +SAMLBackend\n(Backendmodule)-->-WsgiApplication\n(SATOSABase): |
| 52 | +WsgiApplication\n(SATOSABase)-->-WsgiApplication\n(SATOSABase): |
| 53 | +WsgiApplication\n(SATOSABase)->+WsgiApplication\n(SATOSABase): _save_state(Context) |
| 54 | + destroy SATOSA_STATE |
| 55 | +WsgiApplication\n(SATOSABase)-->WsgiApplication\n(SATOSABase): |
| 56 | +WsgiApplication\n(SATOSABase)-->-Gunicorn: |
| 57 | + |
0 commit comments