点击这里给我发消息 点击这里给我发消息

多站点单点登录(SSO)设计

添加时间:2010-12-10
    相关阅读: 设计 开发 C# 项目

这是一个老话题了,当前各门户一般也都实现了多个业务之间的单点登录。下面根据我经历过的项目,谈一下我自己的看法。

  为什么需要单点登录:

  产品刚上线时,一般由于用户量少,所有的功能都放在一起,一般也不需要具体的单点登录。随着用户量和业务发展的需要,要求逐步将产品按功能或性能分为相应独立的站点,并分开部署,这就需要在各个站点之间进行单点登录,以达到用户一次登录,就可以使用多个站点。

  单点登录的实现:

  简单方法: 在同一个域内的站点,可以简单的通过共享Cookie(将登录用户名存放Cookie中)来实现单点登录。这种方法实现简单,安全性方法可以通过将Cookie值加密方式加强,但对不同域下及不同开发语言下(如A站点C#,B站点C)实现麻烦。

  推荐方法:建立统一的认证中心,认证中心提供:

  1、用户登录认证(认证用户名和密码),如果成功,返回表示本次登录的登录Token

  2、登录Token认证(认证Token是否正确),如果成功,返回当前登录的用户名

  3、延长Token有效期

  4、退出(使Token失效)

  认证中心独立于各个站点,单点流程一般场景如下:

  1、用户在站点A输入用户名和密码点击登录

  2、站点A将用户名和密码转发给认证中心进行认证,认证中心返回Token

  3、站点A将当前登录用户和Token存入Session(或Cookie)

  4、在站点A上点击连接访问站点B,通过URL参数方式,将Token带给站点B

  5、站点B将Token转交到认证中心,认证正确,返回当前用户名。

  6、站点B将当前登录用户和Token存入Session(或Cookie),完成登录流程

  这样的设计下的Token,还可以用在异步使用Ajax去访问服务器端的接口(接口可能独立部署在不同的站点下),这样只需要带上Token,服务器端的接口认证Token通过后,直接返回这个登录用户的相应用户信息。

  安全性考虑:

  1、用户登录认证接口,可增加认证频率、认证IP等限制,防止暴力攻击

  2、Token其实就是一串表示本次登录的唯一字符串,可以生成字符串时,增加摘要信息。如Token的组成为:A+MD5(A+PWD) 的方式,A为随机生成的GUID,这样在验证Token时,就可以直接通过算法来验证合法性,只有算法验证通过后,再进行下一步的操作。

  以上只是从整体上描述统一认证的设计,中间还有很多细节没有描述出来,需要了解的我们可进一步讨论

本文作者:未知
咨询热线:020-85648757 85648755 85648616 0755-27912581 客服:020-85648756 0755-27912581 业务传真:020-32579052
广州市网景网络科技有限公司 Copyright◎2003-2008 Veelink.com. All Rights Reserved.
广州商务地址:广东省广州市黄埔大道中203号(海景园区)海景花园C栋501室
= 深圳商务地址:深圳市宝源路华丰宝源大厦606
研发中心:广东广州市天河软件园海景园区 粤ICP备05103322号 工商注册