公司最近有对办公各个平台进行统一门户的需求,其中很重要的技术点就是单点登录,故有此文。
单点登录大致流程:
第一步:用户访问第三方系统。第三方根据局部会话判断用户是否登录此系统,没有登录,则重定向到认证系统去进行认证操作。
第二步:重定向到认证系统,根据全局会话判断用户是否登录,未登录则跳转登录界面,用户输入用户名密码。认证系统将用户登录的信息记录到服务器的session中。
第三步:认证系统给浏览器发送一个ticket凭证,浏览器将凭证交给第三方系统,第三方系统则拿着浏览器交给他的凭证ticket去认证系统验证凭证ticket是否有效。凭证ticket若是有效,将登录信息保存第三方系统的session,并告知第三方系统,用户通过认证。
第四步:用户通过认证,浏览器与网站之间进行正常的访问。
第五步:当用户再次访问第三方系统,由于第三方系统的session中有登录信息,所以就不用经过认证系统认证,就可以直接访问第三方系统了。
第六步:当用户再去访问其他应用系统时,浏览器会带着凭证ticket过去,该应用系统到认证系统验证凭证,凭证ticket若是有效,将用户信息保存到该系统的session,并告知该系统,用户通过认证。用户通过认证,浏览器与网站之间进行正常的访问。
流程图: