SSO统一身份认证

  1. sso身份认证是什么?

sso身份认证,不在本系统中登录,跳转到第三方系统进行登录,登录后,再携带登录的用户信息在本系统中进行登录。

需要知道的是,本系统,与sso server相比,是作为sso client的。

例子:

整个过程很像,在一个系统中,用qq或者微信账号进行登录,登录时,会弹出qq输入账户密码的页面,qq登录认证成功后,返回本系统。

2.sso认证登录的过程

1)拦截T系统的所有页面,检查session中是否含有用户信息(术语有的称之为,用户未认证,需要sso server认证)

2)用户未认证,则直接跳转到sso server(第三方系统),这时候,一般是携带一个url的(这个url以为会是currentPage或者index页面)

3)sso server验证用户信息

sso验证过程是不用我们操心的,我们只需要关心得到的返回的结果就ok了,比如,qq验证账号密码是否正确,整个过程我们是看不到的,作为sso client一方,也不用我们关心,我们只需要拿到qq验证的结果(true or false)

4)sso server返回数据

sso server返回数据,一般是不会直接返回结果的,一般会返回一个token,也有的是ticket,即,身份证明。该身份证明是一次性的,我们利用token,调用sso server 的远程接口(SSO Server API),以获取用户信息

5)SSO Server API,一般会有两个接口,第一个用于获取令牌,第二个利用令牌,加上token,得到用户信息

  • 获取令牌

通过post/get,向接口发送数据,得到返回值,返回值一般会包含三个东西:access_token(得到用户信息的接口的api中需要的参数)issucc(是否成功)expires_in(令牌过期时间,从当前时间开始多少秒后过期)

  • 得到用户信息

通过post/get,向接口发送数据,得到返回值,返回值一般包含三个东西;

字段名

参数说明

error_description

错误信息

succeeded

是否成功

user_login_name

用户账号

6)sso注销

本系统在注销相关session和cookie的同时,向sso注销接口发送post/get请求,注销访问。