SSO(单点登录)就是只需在一个登录认证服务下进行登录后,就可访问所有相互信任的应用。CAS是一个经典的SSO实现,它分服务端和客户端,服务端就是登录认证服务,客户端各个需要保护授权的应用,它的流程是:
假设分别有www.360kjh.com(简称www)、agent.360kjh.com(简称agent)两个主业务服务,和1个passport.360kjh.com(简称passport)登录认证服务。用户在未登录状态访问www某个需要授权的资源时,则跳转到passport,用户输入用户密码认证成功后,携带一个票据跳转到www,www拿着票据和passport进行再一次认证,认证成功后passport向www返回用户名。用户访问agent某个需要授权的资源时,则跳转到passport,此时passport不再需要登录,而为agent创建票据并跳转到agent,agent拿着票据和passport进行再一次认证,认证成功后passport向agent返回用户名。
由于CAS需要购买证书,这个项目暂时利用共享主域Cookie和Redis模拟CAS,就是passport服务登录成功后,向Cookie写入票据,然后www和agent写了个拦截器,读取此Cookie,将Cookie的值在Redis查找此用户对象,最后判断是否登录成功。