单点登陆

本文于 1817 天之前发表,文中内容可能已经过时。

单点登陆一般的做法有两种。

  1. 共享cookie。cookie可以设置作用域,实现单点登陆的功能。设置简单,只需要配置一下cookie就可以实现。
    缺点是只能在同个域名下操作,而且session_id是共享的易被修改且不安全

  2. 通过第三方实现验证中心实现,cas登陆模式。可以通过cookie或者session去实现。

cas单点登陆介绍

CAS是一个单点登录框架,开始是由耶鲁大学的一个组织开发,后来归到apereo去管。分为客户端和服务端。客户端有各种语言提供,服务端的话,官网目前只有java版本。

实现原理

具体实现流程

https://www.processon.com/view/link/5b88adffe4b0bd4db9259e7d

cas具体实现

注意事项

  1. 验证权限的时候,使用的是ticket验证,存储ticket有两种验证的方式分为cookie和mysql。cookie存在一些风险。
    官方推荐的使用mysql的方式,确保验证的正确,操作数据库的时候使用了mysql的锁
1
2
3
SELECT GET_LOCK('123123',10);    // 打开一个10s超时的锁
SELECT * FROM users; // 操作数据库
select release_lock('123123'); // 释放锁
  1. 登陆验证成功后的处理逻辑。可以有一个各个客户端公用的cookie,或者各个客户端单独的cookie或session。考虑公司网站正常运营,使用原有的cookie或session机制。

  2. 退出的操作。客户端退出全部退出,server端退出的话,cas没有给出具体的处理,可以自己进行逐个通知客户端,清除session或者cookie

官方流程图

http://cdn.yanwenqing.xyz/cas_flow_diagram.png