单点登录
单点登录(SSO)系统允许用户在多个应用程序之间共享身份验证状态,即在一个应用程序中登录后,用户可以在其他应用程序中自动登录。
下面的流程描述了在不同域的系统之间实现单点登录的基本步骤:
-
用户首次访问:用户首次访问应用A,发现用户未登录(通常是通过检查cookie来判断),应用A将用户重定向到认证服务器。
-
用户登录:用户在认证服务器上输入其凭据(例如,用户名和密码)。认证服务器验证用户凭据。
-
生成全局会话:如果用户凭据有效,认证服务器会创建—个全局会话,并将相关的session id存储在一个cookie中,该cookie对认证服务器域是可见的。
-
生成服务票据:认证服务器生成一个服务票据(ST)给应用A,然后将用户重定向回应用A,并在重定向请求中包含此服务票据。
-
验证服务票据:应用A收到服务票据后,需要回调认证服务器验证这个服务票据。
-
生成局部会话:认证服务器验证服务票据有效后,应用A创建一个局部会话,并将相关的session id存储在一个cookie中,该cookie对应用A域是可见的。
-
用户访问其他应用:用户现在可以访问应用A的受保护资源。当用户第一次访问另一个应用B时,应用B发现用户未登录,与步骤1相同,应用B将用户重定向到认证服务器。
-
检查全局会话:这次用户访问认证服务器时,认证服务器发现用户的全局会话已存在(通过检查之前存储的cookie),所以用户无需再次输入凭据。
-
生成新的服务票据:认证服务器为应用B生成一个新的服务票据,并将用户重定向回应用B,与步骤4相同
-
验证新的服务票据并创建新的局部会话:与步骤5和6相同,应用B验证新的服务票据,并创建—个新的局部会话。
以上就是不同域的系统之间实现单点登录的基本流程,常见的SSO协议和标准,如OAuth2. 0,OpenID Connect,SAML等都遵循类似的流程。
单点退出
实现跨域单点登录(Single Sign-On,SSO)的同时,也需要考虑单点退出(Single Sign-Out,SSO)的问题。
单点退出意味着用户在任何一个系统中退出后,其他所有系统也会同时退出。
以下是一种常见的基于Token或者Session的单点退出过程:文章来源:https://www.toymoban.com/news/detail-448419.html
- 用户在任何一个系统(System A)中点击“退出”按钮。
- System A收到退出请求,会先清除本地的用户登录状态(如删除Cookie或者清除Session),然后将退出请求发送到认证中心(Authentication Center)。
- 认证中心收到退出请求后,会清除该用户的全局会话信息,并查看该用户在其它系统(如System B, C, D)中的登录状态。
- 认证中心向其他所有系统发送退出请求。
- System B, C, D等系统收到退出请求后,会清除各自的用户登录状态。
- 所有系统都退出登录状态后,单点退出流程结束。
这种方式确保了用户在任何一个系统中退出后,其他所有系统也都会退出。需要注意的是,实现这个功能需要各个系统之间有很好的通信机制,通常涉及到跨域请求的处理。另外,为了安全性,各种请求最好都是加密的,并且要有有效的错误处理机制。文章来源地址https://www.toymoban.com/news/detail-448419.html
到了这里,关于单点登录 & 单点退出(chatgpt)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!