一次帮你缕清【单点登录】与【单设备登录】

一次帮你缕清【单点登录】与【单设备登录】,第1张

首先说明一下单点登录与单设备登录的含义。

单点登录 (Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。用人话说就是:从一个系统登录以后,其他地方不用再登录,可直接访问。例如:QQ,我在QQ空间登录一次,我可以去访问QQ产品的其他服务:QQ邮箱、腾讯新闻等,都能保证你的账户保持登录状态。

单设备登录: 就是只能在一个设备上登录,若同时在其他设备登录,先前登录的用户会被提醒:该账户在其他设备登录。例如qq,小米手机登录中,同时拿华为手机登录该账户,小米手机的账户会被挤下线。

一机一号机制: 一个手机只能上一个账号,一个账号只能在一个手机登录。

单点登录的机制如下图所示:

1当用户第一次访问应用系统的时候,因为还没有登录,会被引导到认证系统中进行登录;

2根据用户提供的登录信息,认证系统进行身份效验,如果通过效验,应该返回给用户一个认证的凭据--ticket;

3用户再访问别的应用的时候3,5就会将这个ticket带上,作为自己认证的凭据,应用系统接受到请求之后会把ticket送到认证系统进行效验,检查ticket的合法性4,6。如果通过效验,用户就可以在不用再次登录的情况下访问应用系统2和应用系统3了。

[重点是Ticket,参考中国电信,重点还有 认证中心]

要实现SSO,首先所有应用系统需共享一个身份认证系统。认证系统的主要功能是将用户的登录信息和用户信息库相比较,对用户进行登录认证;认证成功后,认证系统应该生成统一的认证标志(ticket),返还给用户。另外,认证系统还应该对ticket进行效验,判断其有效性。

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

统一的认证系统并不是说只有单个的认证服务器,如下图所示,整个系统可以存在两个以上的认证服务器,这些服务器甚至可以是不同的产品。认证服务器之间要通过标准的通讯协议,互相交换认证信息,就能完成更高级别的单点登录。如下图,当用户在访问应用系统1时,由第一个认证服务器进行认证后,得到由此服务器产生的ticket。当他访问应用系统4的时候,认证服务器2能够识别此ticket是由第一个服务器产生的,通过认证服务器之间标准的通讯协议(例如SAML)来交换认证信息,仍然能够完成SSO的功能。

1、windows域登录与SSO服务器整合

11 分析:windows域登录过程采用Kerberose v5协议进行登录,过程非常复杂,并且登录中身份认证以及域的权

限整合在一起。要剥离身份认证和权限赋权非常困难。要整合现有的SSO服务器,可以考虑,采用windows域控制器

统一管理用户,SSO服务器采用该域控制器的Active Directory中的用户信息。windows工作站(比如winxp)登录

域过程中,保持原域登录的过程,在其中添加SSO服务器的登录过程。

12 实现:通过修改GINA模块,在windows工作站(比如winxp)登录域过程中,winlogon调用GINA组模块,把用户

提供的账号和密码传达给GINA,由GINA负责在域控制器中以及SSO服务器中账号和密码的有效性验证,然后把验证

结果反馈给Winlogon程序,只有域控制器和SSO服务器同时认证成功,才是登录成功。

另外开发一个DLL程序,暂时称为SSOLogin模块,GINA在登录成功后,将SSO的登录信息传递给SSOLogin模块,动力

工作站在启动时,首先调用SSOLogin模块,判断已经登录的用户,然后通过动力工作站访问其他应用时,就可以通

过SSO服务器进行单点登录。

13 技术点:

(1)通过jCIFS实现SSO服务器在Active Directory进行域登录。

(2)采用WFC开发框架对GINAdll进行修改,在注册表中进行注册

14 风险难点:(1)、windows域登录过程的分析与改造。(2)、windows的应用不开源,代码分析会比较困难。

15 其他:是否还考虑linux操作系统加入windows域的过程?

16 winxp登录域过程如下:

 (1)用户首先按Ctrl+Alt+Del组合键。

 (2)Winlogon检测到用户按下SAS键,就调用GINA,由GINA显示登录对话

框,以便用户输入账号和密码。

 (3)用户选择所要登录的域和填写账号与密码,确定后,GINA将用户输入的

信息发送给LSA进行验证。

 (4)在用户登录到本机的情况下,LSA将请求发送给Kerberos验证程序包。

通过散列算法,根据用户信息生成一个密钥,并将密钥存储在证书缓存区中。

 (5)Kerberos验证程序向KDC(Key Distribution Center--密钥分配中心)发

送一个包含用户身份信息和验证预处理数据的验证服务请求,其中包含用户证

书和散列算法加密时间的标记。

(6)KDC接收到数据后,利用自己的密钥对请求中的时间标记进行解密,通

过解密的时间标记是否正确,就可以判断用户是否有效。

 (7)如果用户有效,KDC将向用户发送一个TGT(Ticket-Granting Ticket--

票据授予票据)。该TGT(AS_REP)将用户的密钥进行解密,其中包含会话密钥、

该会话密钥指向的用户名称、该票据的最大生命期以及其他一些可能需要的数

据和设置等。用户所申请的票据在KDC的密钥中被加密,并附着在AS_REP中。

在TGT的授权数据部分包含用户账号的SID以及该用户所属的全局组和通用组的

SID。注意,返回到LSA的SID包含用户的访问令牌。票据的最大生命期是由域

策略决定的。如果票据在活动的会话中超过期限,用户就必须申请新的票据。

 (8)当用户试图访问资源时,客户系统使用TGT从域控制器上的Kerberos

TGS请求服务票据(TGS_REQ)。然后TGS将服务票据(TGS_REP)发送给客户。该

服务票据是使用服务器的密钥进行加密的。同时,SID被Kerberos服务从TGT复

制到所有的Kerberos服务包含的子序列服务票据中。  

 (9)客户将票据直接提交到需要访问的网络服务上,通过服务票据就能证明

用户的标识和针对该服务的权限,以及服务对应用户的标识。

  什么是身份验证和授权

 根据RFC2828(Internet Security Glossary,May2000),验证是“校验被或向某系统实体声明的身份的过程”。此处的关键字是校验,而正确的术语是“验证系统校验身份”。

 验证可以提供保证,确保用户(或系统)是他们所说的身份。应用程序获取用户的凭据(各种形式的标识,如用户名和密码)并通过某些授权机构验证那些凭据。如果这些凭据有效,则提交这些凭据的实体被视为经过身份验证的标识。授权指用户访问网络资源的能力,通过对已验证身份授予或拒绝特定权限来限制访问权限。

 验证可以直接在用户试图访问的计算机上执行,但在分布式环境中,用户帐户和安全信息通常由特殊的安全服务器存储和管理。当用户登录时,用户名和密码靠安全服务器进行校验。如果校验正确,密码将不会再通过电缆发送。用户密码保持秘密并从不通过网络是至关重要的,尤其是当密码为可读文本时,窃听者可以轻易捕获这些信息并使用它假装成该用户访问安全系统。相反,独特的握手式方案如此处所述以安全方式验证用户身份。

 尽管单独的安全服务器提供许多好处(集中的安全和安全管理),但在分布式环境中对用户进行身份验证呈现出许多有趣的挑战。

 例如,假设某用户希望访问称为DOCS的安全服务器,当该用户登录时,其登录信息直接或间接地用于验证其身份。现在该用户试图访问DOCS服务器,假设DOCS“信任”该安全服务器,并假设它可正确地验证该用户。安全服务器已经验证了该用户的身份,因此DOCS也尝试验证该用户的身份就没有意。所需要的是“一次注册”验证方案,该方案可在无需进一步的登录请求的情况下使该用户访问信托网络环境中的任何系统,假设该用户具有整个网络的一个用户帐户。这可以按如下所示完成。

 该用户的登录信息可以被缓存。当该用户访问另一台服务器时,该服务器获取登录信息,并用安全服务器校验登录信息。

 当该用户第一次登录时,安全服务器可以发出登录凭证。该用户在登录会话的期间访问其他系统时将使用这些凭证。根据RFC l704 (On Internet Authentication, October 1994)释义,一个安全验证方案必须提供如下所示的“强相互验证”:

 相互验证 交换中的双方使用可靠的方法了解对方身份的真实性。

 强验证 双方都不获取可用于在另一会话中假冒对方的信息。

 密码可用于相互验证,但不用于强验证。如果一方将其密码直接交给另一方,则会将有关自身的某些内容暴露出来,而其他系统可以使用这些信息冒充它。本质上,第一个“说话者”放弃了密码,并且变得易受攻击。窃听者也可以捕获密码并在以后使用(除非密码为一次性密码)。

 强验证方案允许双方显示它们知道秘密而不展现实际秘密。再看前面的示例,假设某用户具有一个机密密码,他必须向安全服务器证明他知道密码,但不将密码通过网络传输。下面的四路握手方案是一个示例:

 1、当该用户登录时,他的计算机生成随机数,并使用密钥对其加密。请注意,此密钥是从密码中导出的,或者是从本地加密文件获取的,而该加密文件只有在输入了正确的密码后才可访问。

 2、结果发送到安全服务器,后者使用共享的密钥进行解密。

 3、现在安全服务器具有该用户的服务器生成的随机数。它将该数字加1,然后生成自己的随机数,并用共享密钥为两者分别加密。

 4、该用户的计算机接收该消息并解密。消息的第一部分应该是此计算机原来发送到安全服务器并加1的随机数,它证明此计算机与知道共享密钥的系统有联系。

 5、下一步,该用户的计算机将从安全服务器接收的随机数加1,进行加密,然后将它返回到服务器。

 6、当服务器接收此消息时,其随机数已经加1,服务器知道客户端一定是可信的。

 经过验证后,客户端和服务器建立新密钥,在会话的剩余时间内该新密钥用于加密。这使登录密钥的使用变得最小。当然,共享的秘密必须保持秘密。如果有人获得它,这个人即可伪装成客户端或服务器。

 经过这么多年,已经开发了许多验证协议和技术。CHAP(挑战握手验证协议)是一种加密的验证方式,能够避免建立连接时传送用户的真实密码。NAS向远程用户发送一个挑战口令,其中包括会话ID和一个任意生成的挑战字串。远程客户必须使用MD5单向哈希算法(one-way hashing algorithm)返回用户名和加密的挑战口令,会话ID以及用户口令,其中用户名以非哈希方式发送。

 另一个协议是EAP(可扩展验证协议)。EAP是一种框架,支持可选择的多重PPP验证机制,包括纯文本密码,挑战-响应和任意对话顺序。

 下面概述其他几种更先进的方案:

 双因子验证 在此方法中,使用令牌设备(如智能卡)生成一个附加登录代码。此登录代码与服务器知道的代码在时间上同步。用户在登录时输入此代码、用户名及密码。因而需要两项才能登录:用户知道的某些内容(用户密码)以及用户具有的某些内容(令牌)。此方案要求所有用户都要有智能卡,并且此方案通常是为远程用户实现的。

 Kerberos Kerberos是一个根据票证执行验证的制定得很好的协议。其命名是根据希腊神话中守卫冥王大门的长有三头的看门狗做的。定名是贴切的,因为Kerberos是一个三路处理方法,根据称为密匙分配中心(KDC)的第三方服务来验证计算机相互的身份,并建立密匙以保证计算机间安全连接。

 票证是由称为KDC(密钥分发中心)的专用安全服务器发放的加密数据分组。KDC通常在企业网的内部进行维护,而企业网是KDC的授权区或管辖区。当用户登录时,由KDC处理验证。如果用户验证正确,则KDC向该用户颁发票证(称为“票证授权票”或TGT)。当此用户希望访问某个网络服务器时,KDC检查自己先前提供给用户的TGT(以校验票证依然可信),然后向用户颁发服务票证,以允许用户访问目标服务器。目标服务器具有自己的校验票证以确认用户可信的方法,并根据预定义的访问控制授予用户访问权限。

 Kerberos协议基本上是可行的,因为每台计算机分享KDC一个秘密,KDC有两个部件:一个Kerberos认证服务器和一个授票服务器。如果KDC不知请求的目标服务器,则求助于另一个KDC完成认证交易。Kerberos是一种网络认证协议,允许一台计算机通过交换加密消息在整个非安全网络上与另一台计算机互相证明身份。一旦身份得到验证,Kerberos协议给这两台计算机提供密匙,以进行安全通讯对话。Kerberos协议认证试图等录上网用户的身份,并通过使用密匙密码为用户间的通信加密。

 证书、公钥和PKI(公共密钥基础结构) 如果要求安全登录到因特网服务器或其他公共服务器,则证书方案是适当的。证书基本上是数字ID,它受众所周知的证书颁发机构(如VeriSign)保护。它可以证明在连接另一端的人是其所说的身份。此方案使用公钥加密,并为用户提供一种方法,以向您提供其用于身份验证的公钥,以及在客户端和服务器之间加密会话。此方案与Kerberos的区别是Kerberos要求联机安全服务器对用户进行验证。证书是自包含的数据分组,其中包括对用户进行验证所需的所有内容。但是,它要求某实体颁发证书。这可以通过公共服务(如VeriSign)完成,可通过内部证书服务器完成(当公司希望颁发自己的证书给雇员时)。

 圣杯一次注册

 SSO(一次注册)的概念很简单。用户只需要一次键入其用户名和密码(第一次登录时),以访问任何网络资源。在某些情况下,SSO甚至无需用户进一步提供证书即允许访问外部网络系统和因特网Web服务器。

 Windows 2000网络通过使用Kerberos和Secure Sockets Layer (安全套接字层)协议可提高一次注册功能。这两种协议的优点是它们在混合网络环境中允许一次注册,而混合环境中的一些服务器可能是UNIX、Linux或也支持这两种协议的NetWare服务器。Microsoft SNA Server将SSO功能扩展到大型机环境。Microsoft声称Windows 2000是在异类网络中用作SSO集线器的最佳选择,原因是Windows 2000的SSO可以与其他供应商如此多的操作系统具有互操作性。在Windows 2000中,每个域控制器都是一个Kerberos密钥分发中心,该中心具有对应于该域的辖区。

 SSL是由Netscape设计的一种开放协议;它指定了一种在应用程序协议(例如http、telnet、NNTP、FTP)和TCP/IP之间提供数据安全性分层的机制。它为TCP/IP连接提供数据加密、服务器认证、消息完整性以及可选的客户机认证。SSL的主要目的是在两个通信应用程序之间提供私密信和可靠性。

 任何SSO的一个重要特性是它可以附加到用作网络管理信息(包括用户帐户)的单个储备库的一些目录服务上。Novell NetWare和Microsoft Active Directory就是这样的目录服务。目录服务提供每个用户对整个网络中系统的权限和特权的一个权威性列表,这简化了管理和控制,并允许管理员在任何时候从单个位置更改登录特权和访问权限。

 可以使用的SSO解决方案很多,在此将它们列出。

 PassGo验证服务器 提供一次注册或单击访问公司企业网络上的所有资源,并有助于强化公司安全标准和规程。

 Axent Technologies公司的企业安全管理器 企业安全管理器使得可以从单个位置自动化计划、管理和控制安全策略。

 CyberSafe Trust Broker安全套件 这种套件的特点是多平台、一次注册验证,包括公钥和Kerberos加密。它保护一个组织的公司网和外部网免受内部和外部威胁。

 Platinum Technologies公司的自动安全一次注册 AutoSecure SSO设计用于异类环境,包括大型机、分布式系统和PC。它不依赖于平台、应用程序、网络甚至其他安全机制。

 ZOOMIT VIA 一个元目录服务,它使得设计、自定义和布署统一的企业目录服务变得容易。对于此讨论最重要的是,VIA对多个系统提供一次注册。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 一次帮你缕清【单点登录】与【单设备登录】

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情