单Web应用登录,主要涉及到认证、授权、会话建立、取消会话等几个关键环节。在多系统,每个系统也会涉及到认证、授权、会话建立取消等工作。那我们把每个系统的认证工作抽象出来,放到单独的服务应用中取处理,我们把这个负责认证工作的系统叫做认证中心。
下面声明两个概念,局部变量和全局会话
局部会话:浏览器客户端与应用系统之间保持的会话。
全局会话:浏览器客户端与认证中心的会话。
实现单点登录sso我们还需要考虑几个问题:
1、应用系统将登录认证工作交给认证中心?---此处我们可以采用一个http的重定向,将客户端的请求重定向到认证中心
2、用户在认证中心登录后,如何将处理结果传递给应用系统?--- 我们知道,http协议传递信息的方式有两种,cookie和参数两种,cookie在此处会遇到跨域问题,那么我们只能采用参数的传递方式,将参数做成令牌(token)传递
3、应用系统如何能够识别此令牌就是认证中心发出的有效令牌?--- 那么我们还需要应用系统与认证中心进行服务端通信,因为此通信不经过浏览器,难以截获,是相对安全的。
4、登录状态的判断--- 通过我们前面说的局部和全局会话
5、登出问题--- 当客户端执行了登出的操作,如何保证在访问其他系统时处于状态一致,下面我简要描述一下登出的过程,一、客户端发出登出请求,请求到达应用系统,应用系统重定向到认证中心,应用系统告诉客户端登出成功,然后认证中心已广播的形式告诉所有该用户访问应用系统,该用户已经登出。