Met with Ivan and Ali in January 2024 to try and merge the work she had done into Satosa. There are some conflicts and Hannah would like guidance how to proceed.
In provious discussions, the recommendation was to hide the single logout capabilities behind a flag in order to control when they are enabled, so that changes will not affect existing workflows. This allows merging without breaking, and testing and testing and fixing things as we go along. Then when everything looks good, either remove the flag, or keep it so people have the option to enable or disable the feature.
Important to document what the new features are - what bindings are supported, what the checks that are implemented actually do, verify messages, signatures, and identifiers within logout request and response messages.
The most important thing is to record what we do with the state. To support logout we need to keep state, The state has to do with the sessions, the identifiers of the users, and the identifiers of requests that came in and correspond to the logout message. Also allows us to avoid attacks where someone could send logout requests using an identifier they found somewhere.
It would be good to update the state diagrams
Hannah felt an important idea was to move the session handling to SATOSA rather than SAML ends - this is under discussion
Ali's work has the storage within SATOSA - some parts of the storage are in the frontend or backend. There is a map between frontends and backends connecting the session. The logout request should not be specific to only one protocol. This required the session to be kept within SATOSA. Currently Ali's work supports Postgres. Can add other adapters. Also has the logout enabled flag.
There are differences in the work Ali and Hannah have done, not just the protocol but also the flow itself. Hannah has worked on SP initiated logout - with SAML SPs and only logs out SAML IdPs. It will not log out OIDC-based IdPs. Ali worked on the OP initiated logout. Even so, the requirements and the state that needs to be kept are very similar.
Need to get back to original code and review it. Should be able to merge PRs independently, as long as they are behind the feature flag. Storage - abstract managed by the proxy and not related to the protocols directly. This will add some complexity before and can be messy. Ivan is not totally sure this is the right way. If code is kept isolated, should work.
There was some discussion on 1) whether the flag should be the same or separate for each protocol. Ivan seemed to think it should be the same overall. 2) Whether the logout should work for both protocols (no matter which protocol initiates the logout, SPs and IdPs from both protocols are logged out). Ivan thinks eventually it should work this way but initially each developer should focus on the protocol they have been working with.
Hannah asks are there any services to use as test RP/OP? At one time Ivan had done someting simple with Apache module - modauth openidc
https://github.com/OpenIDC/mod_auth_openidc. Ivan doesn't think she should worry about that right now. Merge the initial patches and then worry about oidc.