关于单点登录(SSO)的一点思考

实现方式:做一个用户中心,所有的站点全部请求这个地方进行登录退出,使用iframe标签,内联框架的形式。

用户第一次进入A系统,发现未登录,js脚本主动请求用户中心,请求时需带上一些固定参数,1,type,请求来源,2,重定向地址等,用户中心查看是否有登陆,如果未登录,直接跳转到用户中心的未登陆页面,

未登陆:用户进行登录操作,登录成功后。将用户信息存入redis服务器或者缓存,并在用户中心生成cookie,将用户信息session_id和应用地址存入。并生成一个token令牌。然后将session_id和token一起传回A系统,A系统拿着令牌到验证系统验证,成功就生成cookie在浏览器,value存session_id,并删除token。

已登录:将session_id 和生成一个一次性令牌token传回给A,A拿着令牌再做一次校验。

另:如果有其他B.C.D系统,使用同一个用户中心,登录与退出全都请求用户中心,进行校验及其其他 操作。存入redis的数据以session_id

为key,应用系统登录时就可以拿着这个key去取数据。

生成一次性令牌的目的是校验session_id的合法性。

你可能感兴趣的:(关于单点登录(SSO)的一点思考)