假设我有一个场景,即用户使用 OAuth2/OpenID Connect 流通过身份提供程序登录到客户端应用程序,如何管理决定撤销客户端对其配置文件的访问权限的用户?也就是说,如何确保客户端应用程序自动终止本地会话?
如上所述,在使用外部提供程序登录时,是否有在客户端应用程序级别实现会话管理的推荐方法?
TL;DR:如何使用OAuth2/OpenID Connect流程实现单点注销?
您可以查看 OpenID 会话管理草稿:
此规范是对OpenID Connect Core 1.0的补充。 [OpenID.Core] 规范,通过定义如何监控最终用户的 持续在 OpenID 提供程序上的登录状态,以便信赖方可以注销已注销OpenID 的最终用户 供应商。
互联网上也有一些关于这个主题的文档:
- https://medium.com/@technospace/managing-sessions-with-openid-connect-d3b6fb4f552b
- https://oa.dnc.global/web/-OpenID-Connect-SSO-management-de-session-etc-.html#draftmanagementdesessionopenidconnect
- https://connect2id.com/products/server/docs/api/check-session
你也可以检查 django-oidc-provider 是如何管理的: https://django-oidc-provider.readthedocs.io/en/latest/sections/sessionmanagement.html