单点登录系统简单实现

来源:互联网 发布:淘宝上的外贸原单店铺 编辑:程序博客网 时间:2024/05/28 16:20

      最近要做单点登录系统,网上参考了一下,就是得整个授权服务,其他需要进行单点登录的应用的授权,注销都通过该授权服务来决定,然后就是一处登录,处处登录;一次注销,处处注销。

      简单说明实现原理:

      1.授权信任问题,主要是同过加密凭据来处理,各个系统有个相同的app_key用来做密钥,并且系统之间有通信校验,就是向授权服务请求时凭据中带有一个随机的seed或时间戳之类的东东,授权服务返回时进行对应的验证,这样就可以基于url来传递信息了

      2.譬如现有验证应用A,需要进行单点登录的系统S1,S2。现在S1需要进行登录验证,首先会考虑S1本身的身份验证,如Session或cookie之类的,若没有相应的凭证,则需要跳转至A进行验证,这时S1会把一些信息(时间戳,seed,本身的信息等等)加密后通过url传递到A,到A后,A首先检查是否已经登录过(可能其他应用如S2已经登录过,这一般可以通过cookie记录),若已经登录过,则记录当前登录的应用的标识并直接返回登入用户的凭证的加密信息,S1接收到相应的授权信息,并设置相应的用户已经登录;若A检查尚未有用户进行登录,则跳转到登录页面,若输入的用户名密码成功登录,则A保存当前登录用户的凭证,并返回该凭证到S1,S1再进行如上的处理。现在S2进行登录验证,A会直接返回S1登录的凭证给S2。若S1进行退出操作,则其通知A自己需要退出,A这时清除当前登录的凭证,并通知所有已经登录的应用当前凭证已经失效,这个通知在web系统可以通过访问图片/js的方式来实现(主要是跨域的问题),然后S1清除本地的凭证。

      其他tips:各个应用的信息可以预先存到数据库里如验证地址,验证登出地址,本地退出地址之类的,然后就是url里加密的信息也可以传递很多有用的信息,如应用标识之类的

      相关例子下载

 

 

原创粉丝点击