码迷,mamicode.com
首页 > 其他好文 > 详细

统一认证系统(一)

时间:2016-06-29 15:51:59      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:

  每个系统都需要识别操作者的身份,并根据其不同的身份,分配一定的权限,做一些操作上的限制。随着系统的增多,若是单独给每个系统都设计了一套用户资料和权限管理的机制,并提供了用户登录证认,虽可以解决问题,但是将会带来和用户账号管理不方便,用户资料不统一等等问题。所以,将用户资料整合起来,进行统一管理很多必要。

  本文的目的,将有一定联系,拥有统一用户群的系统进行关联,统一用户的登录资料,并提供统一的登录认证入口,这里称为 统一认证系统。

 

  根据我们的需求,用户的体验一般有两种:

  一、需要访问某个子系统,则需要在 认证系统上,登陆用户,在跳转到需要访问的页面;

  二、如果在某个子系统登录超时了,在直接进入特定子系统之前,需要重新 登录验证

 

技术分享

1、用户先与统一登录系统进行交互,使用唯一的帐号密码进行登录,此时不涉及任何子系统;

2、用户登录成功后,统一登录系统将信任的应用子系统列表呈现给用户;

3、用户根据需要,选择子系统连接访问子系统,用户与子系统的交互开始;

4、由于用户与子系统此时还没有建立认证关系,所以子系统将用户重定向到统一登录系统;

5、统一登录系统验证用户的登录信息,发现用户已经登录,便将登录信息插入到数据库,再将验证信息发给用户,即返回一个等待页面;

6、用户将等待页面中的验证信息提交(自动)到子系统,子系统获取认证信息;

7、子系统通过一定的办法和等待页面中的验证信息进行验证,并与用户建立了信任关系;

 

分两种方式进行实现,详细情况如下:

第一种方式:通过MD5加密随机字符串,使用了Web服务实现了子系统和统一认证系统之间的交互验证。验证信息包含两部分用户在统一登录系统的Session ID和数据库中的随机ID。当子系统将用户重定向到统一登录系统的时候,验证的交互过程开始,详细步骤如下:

1、统一登录系统获取用户的Session ID和登录名

2、统一登录系统将Session ID和登录名插入到数据库,产生一个随机的数据库ID

3、将Session ID和数据库ID结合起来,进行MD5加密

4、使用MD5密文和数据库ID构建一个登录等待页面,返回给用户

5、用户将登录等待页面中的信息自动提交给子系统

6、子系统通过Web服务将MD5密文和数据库ID提交回统一登录系统

7、统一登录系统查询数据库,并进行验证

8、统一登录系统返回用户登录名,并删除数据库中的登录记录。

9、子系统与用户建立认证关系

技术分享

图2. MD5随机加密,Web服务实现验证

第二种方式:通过对认证信息(登录令牌)进行非对称加密,一次交互实现验证。验证信息为一个包含了产生时间的Token类。验证的交互过程同样是在重定向到统一登录系统的时候开始,详细步骤如下:

1、构建一个包含生成时间的Token类,将Token类序列化

2、使用SHA-1,对序列化Token编码进行散列,产生验证码H

3、将序列化Token编码和验证码H结合,使用公钥加密

4、使用密文构建一个登录等待页面,返回给用户

5、用户将登录等待页面中的信息自动提交给子系统

6、子系统使用私钥进行解密

7、子系统分离出散列验证码H和序列化Token编码,并进行SHA-1验证

8、检查Token中的生成时间,判断是否超时

9、子系统与用户建立认证关系

技术分享

 

参考链接:http://blog.csdn.net/llftc/article/details/6995496

统一认证系统(一)

标签:

原文地址:http://www.cnblogs.com/panie2015/p/5627096.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!