`

单点登陆(Single Sign On-SSO)

阅读更多

      随着信息技术和网络技术的迅猛发展,企业内部的应用系统越来越多。比如在媒体行业,常见的应用系统就有采编系统、排版系统、印刷系统、广告管理系 统、财务系统、办公自动化系统、决策支持系统、客户关系管理系统和网站发布系统等。由于这些系统互相独立,用户在使用每个应用系统之前都必须按照相应的系 统身份进行登录,为此用户必须记住每一个系统的用户名和密码,这给用户带来了不少麻烦。特别是随着系统的增多,出错的可能性就会增加,受到非法截获和破坏 的可能性也会增大,安全性就会相应降低。针对于这种情况,统一用户认证、单点登录等概念应运而生,同时不断地被应用到企业应用系统中。

统一用户管理的基本原理

      一般来说,每个应用系统都拥有独立的用户信息管理功能,用户信息的格式、命名与存储方式也多种多样。当用户需要使用多个应用系统时就会带来用户信息同步问题。用户信息同步会增加系统的复杂性,增加管理的成本。例如,用户X需要同时使用A系统与B系统,就必须在A系统与B系统中都创建用户X,这样在A、B任一系统中用户X的信息更改后就必须同步至另一系 统。如果用户X需要同时使用10个应用系统,用户信息在任何一个系统中做出更改后就必须同步至其他9个系统。用户同步时如果系统出现意外,还要保证数据的 完整性,因而同步用户的程序可能会非常复杂。

     解决用户同步问题的根本办法是建立统一用户管理系统(UUMS)。UUMS统一存储所有应用系统的用户信息,应用系统对用户的相关操作全部通过UUMS完成,而授权等操作则由各应用系统完成,即统一存储、分布授权。UUMS应具备以下基本功能:

      1.用户信息规范命名、统一存储,用户ID全局惟一。用户ID犹如身份证,区分和标识了不同的个体。

      2.UUMS向各应用系统提供用户属性列表,如姓名、电话、地址、邮件等属

性,各应用系统可以选择 本系统所需要的部分或全部属性。

      3.应用系统对用户基本信息的增加、修改、删除和查询等请求由UUMS处理。

      4.应用系统保留用户管理功能,如用户分组、用户授权等功能。

      5.UUMS应具有完善的日志功能,详细记录各应用系统对UUMS的操作。

        统一用户认证是以UUMS为基础,对所有应用系统提供统一的认证方式和认证策略,以识别用户身份的合法性。统一用户认证应支持以下几种认证方式:

      1. 匿名认证方式: 用户不需要任何认证,可以匿名的方式登录系统。

      2. 用户名/密码认证: 这是最基本的认证方式。

      3. PKI/CA数字证书认证: 通过数字证书的方式认证用户的身份。

      4. IP地址认证: 用户只能从指定的IP地址或者IP地址段访问系统。

      5. 时间段认证: 用户只能在某个指定的时间段访问系统。

      6. 访问次数认证: 累计用户的访问次数,使用户的访问次数在一定的数值范围之内。

      以上认证方式应采用模块化设计,管理员可灵活地进行装载和卸载,同时还可按照用户的要求方便地扩展新的认证模块。

      认证策略是指认证方式通过与、或、非等逻辑关系组合后的认证方式。管理员可以根据认证策略对认证方式进行增、删或组合,以满足各种认证的要求。比 如,某集团用户多人共用一个账户,用户通过用户名密码访问系统,访问必须限制在某个IP地址段上。该认证策略可表示为: 用户名/密码“与”IP地址认证。

      PKI/CA数字证书认证虽不常用,但却很有用,通常应用在安全级别要求较高的环境中。PKI(Public Key Infrastructure)即公钥基础设施是利用公钥理论和数字证书来确保系统信息安全的一种体系。

      在公钥体制中,密钥成对生成,每对密钥由一个公钥和一个私钥组成,公钥公布于众,私钥为所用者私有。发送者利用接收者的公钥发送信息,称为数字加 密,接收者利用自己的私钥解密; 发送者利用自己的私钥发送信息,称为数字签名,接收者利用发送者的公钥解密。PKI通过使用数字加密和数字签名技术,保证了数据在传输过程中的机密性(不 被非法授权者偷看)、完整性(不能被非法篡改)和有效性(数据不能被签发者否认)。

      数字证书有时被称为数字身份证,数字证书是一段包含用户身份信息、用户公钥信息以及身份验证机构数字签名的数据。身份验证机构的数字签名可以确保证书信息的真实性。

      完整的PKI系统应具有权威认证机构CA(Certificate Authority)、证书注册系统RA(Registration Authority)、密钥管理中心KMC(Key Manage Center)、证书发布查询系统和备份恢复系统。CA是PKI的核心,负责所有数字证书的签发和注销; RA接受用户的证书申请或证书注销、恢复等申请,并对其进行审核; KMC负责加密密钥的产生、存贮、管理、备份以及恢复; 证书发布查询系统通常采用OCSP(Online Certificate Status Protocol,在线证书状态协议)协议提供查询用户证书的服务,用来验证用户签名的合法性; 备份恢复系统负责数字证书、密钥和系统数据的备份与恢复。


      单点登录

      单点登录(SSO,Single Sign-on)是一种方便用户访问多个系统的技术,用户只需在登录时进行一次注册,就可以在多个系统间自由穿梭,不必重复输入用户名和密码来确定身份。 单点登录的实质就是安全上下文(Security Context)或凭证(Credential)在多个应用系统之间的传递或共享。当用户登录系统时,客户端软件根据用户的凭证(例如用户名和密码)为用 户建立一个安全上下文,安全上下文包含用于验证用户的安全信息,系统用这个安全上下文和安全策略来判断用户是否具有访问系统资源的权限。遗憾的是J2EE 规范并没有规定安全上下文的格式,因此不能在不同厂商的J2EE产品之间传递安全上下文。


     目前业界已有很多产品支持SSO,如IBM的WebSphere和BEA的WebLogic,但各家SSO产品的实现方式也不尽相同。 WebSphere通过Cookie记录认证信息,WebLogic则是通过Session共享认证信息。Cookie是一种客户端机制,它存储的内容主 要包括: 名字、值、过期时间、路径和域,路径与域合在一起就构成了Cookie的作用范围,因此用Cookie方式可实现SSO,但域名必须相同; Session是一种服务器端机制,当客户端访问服务器时,服务器为客户端创建一个惟一的SessionID,以使在整个交互过程中始终保持状态,而交互 的信息则可由应用自行指定,因此用Session方式实现SSO,不能在多个浏览器之间实现单点登录,但却可以跨域。

      实现SSO有无标准可寻?如何使业界产品之间、产品内部之间信息交互更标准、更安全呢?基于此目的,OASIS(结构化信息标准促进组织)提出了SAML解决方案(有关SAML的知识参看链接)。

用户认证中心实际上就是将以上所有功能、所有概念形成一个整体,为企业提供一套完整的用户认证和单点登录解决方案。一个完整的用户认证中心应具备以下功能:

     1. 统一用户管理。实现用户信息的集中管理,并提供标准接口。

     2. 统一认证。用户认证是集中统一的,支持PKI、用户名/密码、B/S和C/S等多种身份认证方式。

     3. 单点登录。支持不同域内多个应用系统间的单点登录。用户认证中心提供了统一认证的功能,那么用户认证中心如何提供统一授权的功能呢?这就是授权管理中,其中应用最多的就是PMI。

     PMI(Privilege Management Infrastructure,授权管理基础设施)的目标是向用户和应用程序提供授权管理服务,提供用户身份到应用授权的映射功能,提供与实际应用处理模 式相对应的、与具体应用系统开发和管理无关的授权和访问控制机制,简化具体应用系统的开发与维护。PMI是属性证书(Attribute Certificate)、属性权威(Attribute Authority)、属性证书库等部件的集合体,用来实现权限和证书的产生、管理、存储、分发和撤销等功能。

      PMI以资源管理为核心,对资源的访问控制权统一交由授权机构统一处理,即由资源的所有者来进行访问控制。同公钥基础设施PKI相比,两者主要区别在于: PKI证明用户是谁,而PMI证明这个用户有什么权限,能干什么,而且PMI可以利用PKI为其提供身份认证。


      单点登录通用设计模型

      统一用户认证和单点登录通用设计模型,它由以下产品组成:

      1. PKI体系: 包括CA服务器、RA服务器、KMC和OCSP服务器。

      2. AA管理服务器: 即认证(Authentication)和授权(Authorization)服务器,它为系统管理员提供用户信息、认证和授权的管理。

      3. UUMS模块: 为各应用系统提供UUMS接口。

      4. SSO: 包括SSO代理和SSO服务器。SSO代理部署在各应用系统的服务器端,负责截获客户端的SSO 请求,并转发给SSO服务器,如果转发的是OCSP请求,则SSO服务器将其转发给OCSP服务器。在C/S方式中,SSO代理通常部署在客户端。

      5. PMI: 包括PMI代理和PMI服务器。PMI代理部署在各应用系统的服务器端,负责截获客户端的PMI请求,并转发给PMI服务器。

      6. LDAP服务器: 统一存储用户信息、证书和授权信息。

      为判断用户是否已经登录系统,SSO服务器需要存储一张用户会话(Session)表,以记录用户登录和登出的时间,SSO服务器通过检索会话表就 能够知道用户的登录情况,该表通常存储在数据库中。AA系统提供了对会话的记录、监控和撤消等管理功能。为保证稳定与高效,SSO、PMI和OCSP可部 署两套或多套应用,同时提供服务。


      SAML

      SAML(Security Assertion Markup Language,安全性断言标记语言)是一种基于XML的框架,主要用于在各安全系统之间交换认证、授权和属性信息,它的主要目标之一就是SSO。在 SAML框架下,无论用户使用哪种信任机制,只要满足SAML的接口、信息交互定义和流程规范,相互之间都可以无缝集成。SAML规范的完整框架及有关信 息交互格式与协议使得现有的各种身份鉴别机制(PKI、Kerberos和口令)、各种授权机制(基于属性证书的PMI、ACL、Kerberos的访问 控制)通过使用统一接口实现跨信任域的互操作,便于分布式应用系统的信任和授权的统一管理。

      SAML并不是一项新技术。确切地说,它是一种语言,是一种XML描述,目的是允许不同安全系统产生的信息进行交换。SAML规范由以下部分组成:

      1. 断言与协议: 定义XML格式的断言的语法语义以及请求和响应协议。  SMAL主要有三种断言: 身份认证断言、属性断言和访问授权断言。

      2. 绑定与配置文件: 从SAML请求和响应消息到底层通信协议如SOAP或SMTP的映射。

      3. 一致性规范: 一致性规范设置了一种基本标准,必须满足这一SAML标准的实现才能够称为一致性实现。这样有助于提高互操作性和兼容性。

      4. 安全和保密的问题: SAML体系结构中的安全风险,具体而言就是SAML如何应对这些风险以及无法解决的风险。要注意的是,SAML并不是专为SSO设计,但它却为SSO的标准化提供了可行的框架。

分享到:
评论

相关推荐

    CAS单点登录SSO( Single Sign-On)

    CAS(Central Authentication Service)单点登录(Single Sign-On,简称SSO)是一种网络认证协议,旨在简化用户在多个应用系统间的登录流程。当用户通过CAS认证后,可以在无需再次输入凭证的情况下访问已接入CAS的...

    单点登录Single Sign On

    单点登录(Single Sign-On,简称SSO)是一种身份验证机制,它允许用户在通过一次认证后,可以访问多个相互信任的应用系统,而无需再次输入凭证。这种技术大大提升了用户体验,减少了用户记忆和输入多种登录凭据的...

    单点登陆(Single Sign On) 简称为 SSO

    单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统

    XXL-SSO是一个分布式单点登录框架

    XXL-SSO是一个专为分布式环境设计的单点登录(Single Sign-On,简称SSO)框架,旨在简化用户在多个相互信任的应用系统之间的身份验证流程。用户只需进行一次登录,即可无限制地访问所有关联的系统,极大地提高了用户...

    xxl-sso-1.1.0

    XXL-SSO 1.1.0 是一个专为初学者设计的简单单点登录(Single Sign-On,简称SSO)系统示例。这个项目是基于Maven构建的,适用于那些想要学习如何实现SSO功能的开发者。通过将源代码导入Eclipse等开发工具,用户可以...

    single-sign-on-v2

    自定义的单点登录系统,可返回各个子系统的登录页及支持CAS Server集群。(https://github.com/liyingqiao121727/single-sign-on-v2)

    WebSphere环境下的SSO(Single sign-on:单点登录、全网漫游)实现之: -- SSO(Single Sign-On)实现步骤

    本文中作者给大家详细的演示了如何实现WebSphere服务器和webpshere服务器之间的SSO(“单点登录、全网漫游”),并且给大家详细地解释了实现过程中的关键点和相关选项的含义,并且给出了开发带有安全性能要求的web...

    smart-sso.rar

    单点登录(Single Sign-On,简称SSO)是一种身份验证机制,允许用户在一次登录后访问多个相互关联的应用系统,而无需再次输入凭证。在本文中,我们将深入探讨基于Spring Boot、MyBatis和Redis实现的SSO解决方案——...

    Laravel开发-discourse-sso-laravel

    "Laravel开发-discourse-sso-laravel"项目是针对Laravel框架的一个特定扩展,旨在实现与Discourse论坛的单点登录(Single Sign-On, SSO)集成。 Discourse是一款现代化的开源讨论平台,被许多社区和组织用于在线...

    SSO-Single-Sign-on实战.docx

    SSO-Single Sign-on实战 SSO(Single Sign-on)是一种单点登录技术,能够让用户在多个相关的应用程序之间进行身份验证,提高用户体验和安全性。SSO可以分为Web SSO和桌面SSO两种,Web SSO是指客户端的单点登录,而...

    Single Sign-on

    单点登录(Single Sign-on,简称SSO)是企业级应用集成解决方案中的一个重要组成部分,它旨在提供用户在多个系统和应用程序之间无缝切换的能力,而无需多次输入认证信息。微软为其实现提供了集成服务,如与Microsoft...

    CAS 单点登录(Single Sign On)

    CAS(Central Authentication Service)单点登录(Single Sign-On,简称SSO)是一种网络认证协议,它允许用户在一次登录后,就能访问多个相互信任的应用系统,而无需再次进行身份验证。这种技术对于大型企业或组织的...

    SSO解决方案大全-Single-Sign-On-for-everyone.docx

    单点登录(Single Sign-On,简称SSO)是近年来非常热门的话题。许多客户都有多个运行在.NET框架中的Web应用程序或者多个子域名,而他们希望在不同的域名中只登录一次就可以畅游所有站点。本文将详细介绍如何在各种...

    Sharepoint 2007 Single Sign On(SSO)设置说明文档

    SharePoint 2007 单点登录(Single Sign-On, SSO)是该平台提供的一种身份验证机制,允许用户登录一次后即可访问多个相互关联的软件系统,无需重复输入凭证。SSO 提高了用户体验,同时简化了权限管理,尤其是在大型...

    golang实现单点登录系统(go-sso)

    单点登录(Single Sign-On,简称SSO)是一种常见的身份验证技术,它允许用户在多个应用程序和服务中使用一次登录来访问所有相互信任的应用程序。这种方式极大地提高了用户体验,同时也简化了用户的密码管理。本文将...

    SSO(SingleSign-On)基于YMP框架实现的单点登录服务模块

    SSO (Single Sign-On) 基于YMP框架实现的单点登录服务模块

    单点登录(SingleSignOn-SSO)完整案例

    单点登录(Single Sign-On,简称SSO)是一种身份验证机制,允许用户在一次登录后访问多个相互关联的应用系统,而无需再次输入凭证。这种技术极大地提升了用户体验,减少了登录过程中的繁琐步骤,同时也能增强安全性...

    xxl-sso分布式单点登录框架 v1.1.0.zip

    首先,单点登录(Single Sign-On,简称SSO)是一种用户只需一次登录就可以访问所有相互信任的应用系统的技术。XXL-SSO实现了这一功能,允许用户在一个系统登录后,无需再次输入用户名和密码即可无缝地访问其他关联...

    CAS--SSO单点用到的jar包

    CAS(Central Authentication Service)是一种广泛使用的开放源代码的单点登录(Single Sign-On,简称SSO)框架。SSO允许用户在访问多个应用系统时只需要进行一次身份验证,之后访问其他系统无需再次输入凭证,提高...

Global site tag (gtag.js) - Google Analytics