单点登录是大型架构的必备技能,也是大厂经常会考察和涉及的核心内容,下面我就重点详解单点登录原理@mikechen
单点登录
单点登录(Single Sign-On,SSO)是一种用户身份验证机制,使得用户在一次登录后可以访问多个应用系统,无需每次都进行登录验证。
单点登录(SSO),的核心目标:是简化用户的认证过程,提升用户体验,同时保证安全性。
比如:用户只需登录一次,即可访问多个应用程序、或系统,提高用户体验;
而且,单点登录系统,可以集中管理用户身份、和访问控制,减少安全风险;
并且,单点登录系统,还可以简化用户管理、和密码管理,降低管理成本。
所以,很多大型网站或者大厂,都会使用到单点登录。
单点登录原理
单点登录的实现原理,会包含如下组件:
CAS Server(CAS 服务器)
CAS Server ,是 SSO 系统的核心,它负责:验证用户的身份。
主要会包含如下功能:
身份验证
当用户首次访问受保护的资源时,会重定向到 CAS Server 进行身份验证,比如:用户输入用户名和密码后,CAS Server 验证其合法性。
票据生成
验证通过后,CAS Server 会生成一个唯一的 Ticket(票据),这个 Ticket 包含了用户身份的相关信息。
CAS Client(CAS 客户端)
CAS Client :代表需要保护的应用、或服务,也就是服务提供者。
主要会包含如下功能:
票据验证
当用户访问 CAS Client 的受保护资源时,CAS Client 会检查用户是否持有有效的 Ticket;
如果没有有效的 Ticket,CAS Client 会将用户重定向到 CAS Server ,并进行身份验证。
资源访问
如果 Ticket 有效,CAS Client 就会允许用户访问相应的资源。
Ticket(票据)
Ticket: 是一个加密的字符串,包含了:用户身份信息…等等个人信息,类似于一张通行证。
每个 Ticket 只能使用一次,防止被恶意利用,并且,Ticket 有效期,过期后无效。
单点登录,整体流程如下:
首先,用户登录
用户访问单点登录系统,并输入登录凭据(如:用户名、和密码)。
其次,身份验证
单点登录系统,对用户的登录凭据进行身份验,。如果身份验证成功,系统将生成一个会话令牌或票据(如Cookie、或Token)。
单点登录系统,将会话令牌、或票据,发送给用户的浏览器、或客户端。
然后,票据验证
保护资源接收到用户的请求后,会将会话令牌、或票据,发送给单点登录系统进行验证。
最后,授权
如果票据验证成功,单点登录系统将向保护资源返回授权结果,允许用户访问保护资源。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注作者「mikechen」公众号,获取更多技术干货!

后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》,后台回复【面试】即可获取《史上最全阿里Java面试题总结》