SSO 单点登录方式
一、SSO 单点登录
单点登录(Single Sign-On)是指在同一帐号平台下的多个应用系统中,用户只需登录一次,即可访问所有相互信任的应用系统。本质就是在多个应用系统中共享登录状态。举例来说,百度贴吧和百度地图是百度公司旗下的两个不同的应用系统,如果用户在百度贴吧登录过之后,当他访问百度地图时无需再次登录,那么就说明百度贴吧和百度地图之间实现了单点登录。
2. SSO 机制实现流程
用户首次访问时,需要在认证中心登录:
1)用户访问网站 a.com 下的 pageA 页面。
2)由于没有登录,则会重定向到认证中心,并带上回调地址 www.sso.com?return_uri=a.com/pageA,以便登录后直接进入对应页面。
3)用户在认证中心输入账号密码,提交登录。
4)认证中心验证账号密码有效,然后重定向 a.com?ticket=123 带上授权码 ticket,并将认证中心 sso.com 的登录态写入 Cookie。
5)在 a.com 服务器中,拿着 ticket 向认证中心确认,授权码 ticket 真实有效。
6)验证成功后,服务器将登录信息写入 Cookie(此时客户端有 2 个 Cookie 分别存有 a.com 和 sso.com 的登录态)。
认证中心登录完成之后,继续访问 a.com 下的其他页面:
这个时候,由于 a.com 存在已登录的 Cookie 信息,所以服务器端直接认证成功。
如果认证中心登录完成之后,访问 b.com 下的页面:
这个时候,由于认证中心存在之前登录过的 Cookie
,所以也不用再次输入账号密码,直接返回第 4 步,下发 ticket
给 b.com
即可。
说明:上面提到的授权码ticket ,可以采用 JWT 或 sessionId 的方式,二者都可以作为授权凭证进行传递和验证。具体选择哪种方式,取决于系统的设计需求、复杂性以及扩展性考虑。
二、OAuth2.0 第三方登录
OAuth 2.0 是 OAuth 1.0 的一个升级版本,并在安全性、灵活性和使用便利性上做了大量的改进。
OAuth 第三方登录方式通常使用以下三种方式:
OAuth 机制实现流程
这里以微信开放平台的接入流程为例:
1)首先,a.com 的运营者需要在微信开放平台注册账号,并向微信申请使用微信登录功能。
2)申请成功后,得到申请的 appid、appsecret。
3)用户在 a.com 上选择使用微信登录。
4)这时会跳转微信的 OAuth 授权登录,并带上 a.com 的回调地址。
5)用户输入微信账号和密码,登录成功后,需要选择具体的授权范围,如:授权用户的头像、昵称等。
6)授权之后,微信会根据拉起 a.com?code=123 ,这时带上了一个临时票据 code。
7)获取 code 之后, a.com 会拿着 code 、appid、appsecret,向微信服务器申请 token,验证成功后,微信会下发一个 token。
8)有了 token 之后, a.com 就可以凭借 token 拿到对应的微信用户头像,用户昵称等信息了。
9)a.com 提示用户登录成功,并将登录状态写入 Cookie,以作为后续访问的凭证。
其他平台的接入方式可以去对应得官方文档查看,流程基本类似。
三、SSO单点登录与OAuth2.0 登录的区别
1. OAuth2.0 登录主要关注授权,让第三方应用能够代表用户访问其资源。
2. 单点登录(SSO)主要关注 身份认证,允许用户在多个系统中只登录一次。
3. OAuth2.0 可以实现单点登录
OAuth2.0可以作为单点登录的一种实现方式。OAuth2.0 是一种授权框架,但它的认证过程(Authorization Code Grant 流程)也可以用来实现 SSO。当你在一个系统中登录后,OAuth2.0 可以作为身份验证的手段,在多个应用之间共享用户的登录状态。
参考链接:
https://juejin.cn/post/6933115003327217671
标签:单点,登录,微信,认证,SSO,com From: https://www.cnblogs.com/hld123/p/18548655