认证——SSO 与 CAS
2018-04-12 本文已影响38人
一块大番薯
SSO 全称 Single Sign On,单点登录。
CAS 全称 Central Authentication Service,中心认证服务。
CAS 是实现 SSO 的一种著名的方案。
使用情景:为了在多个不同的系统使用同一用户和密码,从而实现一处登录,处处登录。
实现机制
- 用户首次登录系统 A,会重定向到 CAS。
- 用户在 CAS 渲染的表单填写账号密码,如果认证通过,CAS 将会做几件事:
- 建立会话。
- 生成一个 ticket 。
- 把 ticket 放在 URL 中,重定向到系统 A,同时把 cookie 发给浏览器。
- 系统 A 收到 ticket 后向 CAS 认证,如果认证通过,则认为用户已经登录。
- 系统 A 再给用户发送 cookie,这样用户就可以访问系统 A 中受保护的页面。
注意:第一个 cookie 是用来标记用户已经登录,第二个 cookie 是系统 A 发给用户的,用来让用户可以访问受保护页面,而其他系统是不能接触到这个 cookie 的。
如果用户在此基础上要登录系统 B,流程与登录系统 A 差不多,只是少了填写表单这一步:
- 用户首次登录系统 B,会带有已登录的 cookie 重定向到 CAS。
- 认证已通过,CAS 将会做几件事:
- 建立会话。
- 生成一个 ticket 。
- 把 ticket 放在 URL 中,重定向到系统 B 。
- 系统 B 收到 ticket 后向 CAS 认证,如果认证通过,则认为用户已经登录。
- 系统 B 再给用户发送 cookie,这样用户就可以访问系统 B 中受保护的页面。
单点退出
实现效果,一处退出,处处退出。
当系统 A 向 CAS 认证 ticket 时,如果认证通过,除了系统 A 认为用户已登录外,CAS 也会注册系统 A 。
当用户在任一个系统退出时,认证服务器会通知已注册的所有系统,把用户的 cookie 干掉。