zoukankan      html  css  js  c++  java
  • 统一认证系统(一)

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

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

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

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

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

    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

  • 相关阅读:
    一些常看的网站 工具
    JavaScript 学习
    我的周记15——“5年后,你想成为怎样的人”
    一点分享:从日课到晨记
    跟着高淇学Python——第一到第三章总结
    在新的电脑上的Git本地库 与远程库关联前的一些设置
    搭建环境
    查询XML树
    Linq to XML的基本操作
    LINQ to XML概述
  • 原文地址:https://www.cnblogs.com/panie2015/p/5627096.html
Copyright © 2011-2022 走看看