none
用户单点登录 RRS feed

答案

  • 你好:

    SSO(Single Sign-On)直译为一次登录,用户只使用一个用户名和口令,就可以访问所有的资源,这对系统管理和维护来说是非常重要的。单点登录有效地解决了用户使用网络时的多帐号、多密码、多次登录问题,方便了用户。

    SSO的前提条件

    1、所有应用系统共享一个身份认证系统

    所有服务器必须共享用户注册表(用户数据库),用户注册表可以是LDAP数据库,也可以采用用户自己实现的用户注册表。要注意的是在某些情况下是不能使用自己实现的用户注册表的,例如,Domino不支持用户自己实现的用户注册表,所以WebSphere和Domino之间实现SSO时只能采用LDAP数据库作为公有的用户注册表。

    统一的认证系统是SSO的前提之一。认证系统的主要功能是将用户的登录信息和用户信息库相比较,对用户进行登录认证;认证成功后,认证系统应该生成统一的认证标志(token),返还给用户。另外,认证系统还应该对token进行效验,判断其有效性。

    2、所有应用系统能够识别和提取token信息

    要实现SSO的功能,让用户只登录一次,就必须让应用系统能够识别已经登录过的用户。应用系统应该能对token进行识别和提取,通过与认证系统的通讯,能自动判断当前用户是否登录过,从而完成单点登录的功能。

    3、单一的用户信息数据库并不是必须的

    有许多系统不能将所有的用户信息都集中存储,应该允许用户信息放置在不同的存储中。事实上,只要统一认证系统,统一token的产生和效验,无论用户信息存储在什么地方,都能实现单点登录。

    4、统一的认证系统并不是说只有单个的认证服务器

    认证服务器之间要通过标准的通讯协议,互相交换认证信息,就能完成更高级别的单点登录。如:当用户在访问应用系统1时,由第一个认证服务器进行认证后,得到由此服务器产生的token。当他访问应用系统2的时候,认证服务器2能够识别此token是由第一个服务器产生的,通过认证服务器之间标准的通讯协议(例如SAML)来交换认证信息,仍然能够完成SSO的功能。

    5、对应用系统的修改不可避免

    并不是任何系统都能够使用SSO,只有那些符合SSO规范,使用SSO API的应用系统才具有SSO的功能。简单地说就是要修改已有的应用系统(在本项目中,已有的业务系统要实现单点登录,如果步具备相应的条件,则必须进行修改),屏蔽已有的应用系统的用户认证模块,使用系统提供的SSO API来验证用户,以及对用户的操作进行授权。

    实现单点登录的两种方式

    SSO都要有一个单一的登录点,由此登录点将创建的会话(认证标志)token传递给应用系统。SSO需要建立一个统一的认证、权限信息库。根据认证、授权实现的位置可以分为两种实现方式:

    1、Agent的方式

    即在后端为每个Web应用系统(或者其他系统)都安装一个Agent,由Agent来接管该系统的身份验证和访问控制,目录服务器中会存放自己的用户信息,以及这些用户与其他系统的用户对应信息。这些Agent能够通过配置,轻松的接管了后面的系统的身份验证和访问控制。

    对于不同的系统,Agent不同,这些Agent能够通过配置,轻松的接管后面系统的身份验证和访问控制。可以通过一个统一的LDAP,存放企业内部的用户信息,然后通过策略服务器,控制后端所有系统的URL访问权限,这样也实现了单点登录。

    使用这种方式,其安全性较高,用户信息都保存在各系统中,但是这种方式需要在各个系统中都安装Agent,降低了系统的灵活性。

    2、Proxy的方式

    即具有一个Proxy Server,由它来接管对于后端系统的访问,提交请求和读取数据,然后再返回给调用者。同时调用者可以存放用户信息以及用户的对应关系。Proxy Server会通过存储的用户对应关系和用户名和密码,自动完成后端系统的登录,然后就象一个浏览器一样,提取数据,返回数据给后端系统。后台系统不用做任何修改,身份认证和访问控制仍然由各个系统自己管理。

    该方法的优点是:后端系统不用做任何改动。即便是没有Portal,其他系统还可以照常使用。缺点是:需要在策略服务器中存储用户名称和密码,密码会多处存放,同步困难;用户可以绕开Portal,直接访问后端系统。Proxy Server可能是单点故障。缺点解决:目前有密码同步产品;Proxy Server也大多支持集群。

    由以上两种方式可以看出,哪种方式的编程量都不是很大,大多可以通过配置来实现,而且功能也很强大,可以根据系统实际情况进行选择。

    详情请参考以下链接:
    http://www.cnblogs.com/iloveu/archive/2009/07/12/1522028.html
    http://chnking.cnblogs.com/archive/2006/03/07/344506.html
    http://www.cnblogs.com/xugang2008/archive/2009/12/03/1616263.html
    http://home.cnblogs.com/group/topic/31823.html
    http://www.cnblogs.com/wenanry/archive/2009/08/06/1540777.html


    I am here!
    2010年12月7日 3:23
    版主