最近项目中关于授权登录的内容比较多,涉及的同学比较多,但是大家的知识点有些参差不齐,这边的专题科普一下相关点,并抛出一个我关注的iframe中的第三方页面登录态问题
先从什么是SSO单点登录开始
Single Sign-On,简单说就是一次访问,多处可用。
了解SSO之前,我们也可以了解一下CAS( Central Authentication Service ),来帮助我们跟深入的了解这个能力的背景:https://developer.ibm.com/zh/articles/os-cn-cas/
从官方文档总结来看,基础模式的SSO流程主要有以下步骤:
- 访问服务: SSO 客户端发送请求访问应用系统提供的服务资源。
- 定向认证: SSO 客户端会重定向用户请求到 SSO 服务器。
- 用户认证:用户身份认证。
- 发放票据: SSO 服务器会产生一个随机的 Service Ticket 。
- 验证票据: SSO 服务器验证票据 Service Ticket 的合法性,验证通过后,允许客户端访问服务。
- 传输用户信息: SSO 服务器验证票据通过后,传输用户认证结果信息给客户端。
那是不是还有多点登录
多点登录用一句话概括是,一个账号可以在多个端登录,但是每个端只能有一个该账号的登录实例。
IM是典型的多点登录应用。
多点登录一般不用于第三方登录,这里不做讨论。
Oauth2.0授权
第三方单点登录主要目的是授权,Oauth2.0,是现在最为推荐使用的授权机制。
入门:http://www.ruanyifeng.com/blog/2019/04/oauth_design.html
进阶:https://tools.ietf.org/html/rfc6749
既然有2.0,那就也有1.0,想要了解历史可以看下面的文章