记得曾经网站通行证开发是很热门的话题,最近正好有了解到相关的, 和大家谈谈我所了解的单点登录是怎么实现的。
单点登录即几个不同网站(CP应用)只要在一个地方登录就在所有其它网站同时登录了。首先我们要一个SSO站点来统一登录。
访问一个 CP网站需要登录页面流程应该是这样的:
用户点击一个需要登录页面
CP网站判断本站是否已经有认证信息(如检查cookie) ,有认证信息用户可以访问页面,没有认证信息跳转到SSO站点检查认证信息页面(url带上成功后返回页面URL:returnUrl)
SSO站点检查是否有认证信息,有认证信息转到returnUrl,并带上sessionId。没有则转到SSO登录页面进行登录直到用户登录成功后转到returnUrl,并带上sessionId。
这里回到CP网站需要登录页面(returnUrl),这里URL带有sessionId,直接通过SSO提供的认证信息读取接口取到并在本CP上登录(程序自动实现)。则用户可以访问页面。
也就是说登录都是在SSO站点进行的,即使CP网站上有登录框提交目标页也是SSO的登录页面。SSO还需要提供一个检查认证信息页的URL,一个通过sessionId取认证信息的接口(可以使用SOAP协议)。
CP需要实现的就是本身认证检查程序, 通过sessionId取用户信息的程序。