`
xcgh
  • 浏览: 77350 次
  • 来自: ...
社区版块
存档分类
最新评论
阅读更多

SSO(Single Sign-On)直译为一次登录,SSO的机制就是在企业网络用户访问企业网站时作一次身份认证,随后就可以对所有被授权的网络资源进行无缝的访问,SSO 可以提高网络用户的工作效率,降低了系统出错的几率,但是比较难于实现。

1 SSO简介

SSO(Single Sign-On)直译为一次登录,形象的解释是"单点登录、全网漫游",意思就是说所有已相同的DNS域名结尾的机器,可以共享用户的认证信息,比如:a.chinacreator.com,b.chinacreator.com就可以经过配置后实现SSO。

SSO的机制就是在企业网络用户访问企业网站时作一次身份认证,随后就可以对所有被授权的网络资源进行无缝的访问,而不需要多次输入自己的认证信息。

SSO 可以提高网络用户的工作效率,降低网络操作的费用,并提高网络的安全性,而且降低了系统出错的几率,但是比较难于实现。

1.1 以前的用户登录模式

为了实现企业的信息化、电子商务和其他需求,越来越多的信息系统在网上出现,这些企业的网络用户和系统管理员不得不面对这个现实:

1. 用户需要使用其中的任何一个企业应用的时候都需要做一次身份认证,而且每一次认证使用的认证信息(用户民和密码)不能保证一致;

2. 系统管理员需要对每一个系统设置一种单独的安全策略,而且需要为每个系统中的用户单独授权以保证他们不能访问他们没有被授权访问的网络资源。

1.2 SSO登录模式

以前使用的登录系统中,需要给每一台机器上的系统,甚至是每台机器上的每个应用准备一套用户管理系统和系统用户授权策略,考虑到互操作的可操作性和安全问题,SSO将一个企业内部所有域中的用户登录和用户帐号管理集中到一起,SSO的好处显而易见:

1. 减少用户在不同系统中登录耗费的时间,减少用户登录出错的可能性

2. 实现安全的同时避免了处理和保存多套系统用户的认证信息

3. 减少了系统管理员增加、删除用户和修改用户权限的时间

4. 增加了安全性:系统管理员有了更好的方法管理用户,包括可以通过直接禁止和删除用户来取消该用户对所有系统资源的访问权限

2 SSO理论基础

SSO并不是J2EE中的标准实现,而是各家中间件提供商在提供J2EE应用服务器集群时提供的一种认证信息共享的机制,所以各家厂商提供的实现方式不一样,IBM的WebSphere是通过cookies记录认证信息,BEA的WebLogic通过session共享技术实现认证信息的共享,国内深圳金蝶的apusic采用的和BEA的技术基本一致。

但是不管各家的实现技术怎么样,他们的理论基础都缘于J2EE中的安全技术:Java Authorization Contract for Containers (Java ACC)和JavaTM Authentication and Authorization Service(JAAS)。Java Authorization Contract for Containers (Java ACC)和JavaTM Authentication and Authorization Service(JAAS)是j2ee技术中实现安全访问机制的规范和标准,其中Java ACC属于j2ee规范的一部分,而JAAS是Java ACC的实现部分。

2.1 Java ACC

Java ACC规范定义了授权策略模块和J2EE容器之间的实现规范,这样容器安全提供者就可以根据操作环境的要求提供J2EE容器的授权功能。

Java ACC规范分为三个部分,分别是:提供着配置规范,安全策略配置规范,策略判断和执行规范。这三个部分组合在一起共同描述了授权提供者的安装和配置,J2EE容器使用者可以根据这些规范来实现访问控制。

1. 安全提供者配置规范规定了对安全提供者和容器的要求,这些是安全策略提供者和容器之间整合的基础。

2. 安全策略配置规范定义了容器配置工具和安全提供者之间的交互规范,所谓的交互是指如何将声明的授权策略信息转化为J2SE策略提供者可以识别的指令的过程。

3. 策略判断和执行规范定义了容器策略执行点和安全提供者之间的交互,他实现了J2EE容器需要的安全策略判断。

大家可以到 http://java.sun.com/j2ee/javaacc/下载规范文档。

2.2 JAAS

JAAS全名是JAVA认证和授权服务,它是一组java包,为提供基于用户的认证和访问控制提供支持,它是标准可嵌入式认证模型(PAM)的java版本实现,支持基于用户的身份认证。

JAAS是J2SE1.3中的可选包,但是J2SE1.4中已经集成了JAAS.

标准可嵌入式认证模型(PAM)的具体内容大家可以查看 http://java.sun.com/security/jaas/doc/pam.html,JSSA的规范大家可以到 http://java.sun.com/products/jaas/查看。

3 WebSphere中的SSO

3.1 WebSphere中的SSO

SSO在IBM的产品中得到了完全的体现,包括在WebSphere集群中,在WebSphere和Domino的集成中,都可以实现。

SSO允许网络用户在访问多个WebSphere域的多个应用时只要向其中的某一个WebSphere应用服务器进行认证,就可以访问其他WebSphere域中的各种资源,包括HTML页面,JSP文件,Servlet和企业EJB,也可以访问其他Domino中的文档,而不需要登录多个WebSphere域。

WebSphere中默认不支持SSO,如果需要实现SSO,需要对每一台WebSphere服务器进行配置,如果需要实现WebSphere和Domino之间的SSO,则对WebSphere和 Domino 都要重新配置。

3.2 前提条件

要实现WebSphere服务器之间的SSO,必须满足以下前提条件:

1. 所有的服务器必须配置成同一个DNS域的一部分。

比如: DNS域配置为mydomain.com,那么,SSO将在所有Domino和WebSphere服务器起作用,只要他在属于这个DNS域的某个主机上,比如说在a.mydomain.com和b.mydomain.com的主机上配置的两台webpshere服务器之间。

2. 所有服务器必须共享用户注册表,用户注册表可以是LDAP数据库,在WebSphere服务器之间实现SSO还可以采用用户自己实现的用户注册表,但是Domino不支持用户自己实现的用户注册表,所以WebSphere和Domino之间实现SSO时只能采用LDAP数据库作为公有的用户注册表。

[注] 使用的LDAP数据库必须是WebSphere支持的LDAP数据库,推荐使用IBM的Security Way.

3. 所有的用户定义在一个单一的LDAP目录中。

4. 用户的浏览器必须支持Cookies,因为服务器生成的信息将通过Cookies传递到客户端,然后会提交给用户访问的其他服务器进行认证。

5. WebSphere应该是3.5版本或者以上版本。

3.3 SSO授权机制

WebSphere中的SSO授权机制比较简单,采用了类似于windows文件的权限管理的机制,就是先定义一些角色,然后给这些角色授予访问某些服务器资源的权限,然后再将这些角色映射到具体的用户或者用户组。

比如:我们开发了一个WebSphere服务器上的web应用,这个应用的管理员可以使用这个web应用的管理权限,和管理权限相关的文件都放在这个应用的/admin目录下,那么我们就可以给这个应用增加一个admin的角色,它可以访问/admin目录下的所有文件,然后把这个admin角色映射到所有管理员角色所在的LDAP数据库中的某个组,如图所示:

4 LDAP数据库简介

LDAP的英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP。它是基于X.500标准的,与X.500不同的是,LDAP支持TCP/IP。LDAP 标准的规范是以一系列 RFC(或注释请求,Request For Comment)的形式编排的。有关与 LDAP 相关的 RFC 的更多信息,可以参考 http://www.ldapman.org/ldap_rfcs.html。

LDAP中的信息都被存储在目录中,LDAP不是关系型数据库,它的信息目录结构类似于UNIX的文件系统,这种树-叶结构的结构使LDAP有很好的扩充性,而且查询速度比关系型数据库要快。

大多数的LDAP服务器都为读密集型的操作进行专门的优化,也就是说如果你的应用中信息读取操作很多,而修改信息很少的话,那么您可以采用LDAP数据库。从LDAP服务器中读取数据的时候会比从专门为 OLTP优化的关系型数据库中读取数据快一个数量级。

因为专门为读的性能进行优化,大多数的LDAP目录服务器 并不适合存储需要需要经常改变的数据。例如,可以用LDAP服务器来存储公司的组织机构和员工信息,但是LDAP一般不适合作为电子商务站点的数据库服务器。

分享到:
评论

相关推荐

    SSO单点登录实现与实现原理

    一、SSO基本原理 1. **中央认证服务(CAS)**:SSO的核心是中央认证服务,它负责验证用户的身份。当用户首次尝试访问受保护资源时,会被重定向到CAS服务器进行登录。 2. **Ticket Granting Ticket(TGT)**:用户...

    sso 单点登陆 java 动手写sso

    **SSO基本原理** SSO的核心思想是共享认证信息,通过中央认证服务器(CAS)来统一处理用户的登录状态。当用户访问受保护的应用系统时,会被重定向到CAS服务器进行身份验证。如果验证成功,CAS会返回一个票据(Ticket...

    sso demo 例子

    1. **SSO基本原理**: SSO的核心是中央认证服务(CAS,Central Authentication Service),用户只需要对CAS进行一次身份验证,然后由CAS为所有需要身份验证的应用提供授权。这种方式简化了用户的登录流程,同时也...

    sso单点登录

    **SSO基本原理** 1. **票据(Ticket)机制**:SSO的核心是票据,它相当于用户的临时通行证。用户首次登录时,服务器会生成一个票据并返回给客户端,客户端携带这个票据访问其他应用,应用通过验证票据来确认用户...

    关于SSO单点登录的简单实现

    **SSO基本原理** SSO的核心是通过共享一种信任关系来实现跨系统的身份验证。这种信任通常由一个中央认证服务(CAS,Central Authentication Service)或身份提供者(IDP,Identity Provider)来维护。当用户登录到...

    sharepoint SSO单点登入Demo

    1. **SSO基本原理**: SSO的核心是通过中央认证服务器(如ADFS或Ping Identity)来管理用户身份和权限。当用户首次登录到一个应用(例如SharePoint)时,他们的身份被验证并存储在会话中。随后,当用户尝试访问其他...

    基于PHP的sso实例

    **一、SSO基本原理** SSO的核心思想是将用户的身份验证过程集中到一个认证中心(Authentication Center,简称AC),其他各个应用系统则作为服务提供者(Service Provider,简称SP)。当用户访问任一SP时,如果尚未...

    java 单点登录源代码

    1. **SSO基本原理** SSO的核心思想是用户只需要一次登录,就能访问所有相互信任的应用系统。这通常通过共享认证信息或令牌来实现。在Java环境中,常见的实现方式有基于Cookie、基于Token(如JWT)和基于Session共享...

    单点登录SSO原理.docx

    SSO的基本原理主要涉及两个核心概念:存储信任和验证信任。当用户成功登录到一个系统(认证系统)后,系统会产生一个信任凭证,并将其发送给用户。然后,用户在访问其他系统时,这些系统能够验证这个信任凭证,从而...

    构建单点登录解决方案

    **SSO基本原理** SSO的核心思想是用户只需登录一次,就可以在整个系统域内自由地访问所有已授权的服务。它通过共享身份验证信息来实现,这个过程通常涉及一个中央认证服务器和多个服务提供者。当用户成功登录认证...

    Java进阶SSO单点登录技术CAS-快速上手与原理探究视频教程

    本课程主要通过CAS来实现SSO,本教程会从最基本的基础知识讲起,由浅入深再到实战,完成多应用的单点登录功能。 本课程内容如下: 1、 什么是SSO和CAS 2、 CAS Server服务端和客户端的搭建和配置 3、 单点登录和单...

    sso 单点登录例子

    1. SSO的基本原理: SSO的核心思想是通过一个中央认证服务(Central Authentication Service,CAS)来管理用户的登录状态。当用户首次访问受保护的应用时,会被重定向到CAS进行身份验证。一旦验证成功,CAS会生成一...

    xxl-sso-1.1.0

    - SSO的基本原理和工作流程。 - CAS服务器的实现,包括用户认证和票据管理。 - SP如何与CAS进行通信,实现无感知的用户认证。 - 如何在实际项目中配置和集成SSO功能。 - 如何调试和测试SSO系统,确保其正常运行。 ...

    SSO跨域单点登录Demo

    首先,让我们了解一下SSO的基本工作原理。SSO的核心在于一个中央认证服务器,通常称为CAS(Central Authentication Service)或身份验证服务。当用户尝试访问受保护的应用时,会被重定向到认证服务器进行身份验证。...

    SSO单点登录.zip

    1. SSO原理:SSO的核心是中央认证服务(CAS),用户在首次登录中央认证服务后,会被授予一个票据或者令牌。之后访问其他系统时,只需验证该票据或令牌,而无需再次输入密码。这样,用户只需要记住一套登录凭证,降低...

    Java 单点登录开发教程(SSO)

    本教程将引导开发者了解SSO的基本原理,以及如何使用Java进行SSO系统的开发。 首先,我们需要理解SSO的核心概念:用户只需登录一次,即可在所有授权应用中自由穿梭。这涉及到的主要流程包括登录、登出和会话管理。...

    SSO Source code

    `ssodemo.zip` 可能是一个基础的 SSO 演示项目,用于展示 SSO 的基本工作原理和流程。这个项目可能包含了服务端的身份验证中心(Identity Provider, IDP)和客户端应用(Service Provider, SP)的代码,演示了如何...

    SSO单点登录源码

    通过提供的链接(http://www.blogjava.net/xcp/archive/2010/04/13/318125.html),我们可以了解到SSO的基本原理和实现步骤。在这个样例中,开发者可能会讲解如何配置和集成SSO服务,以及如何处理不同Web应用之间的...

    SSO单点登录实例

    SSO(Single Sign-On)单点登录是一种网络应用中用户身份验证的技术,允许用户通过一次登录操作访问多个相互...通过理解和运行这个Demo,你不仅能掌握SSO的基本原理,还能了解到如何在实际开发中实施和优化SSO系统。

Global site tag (gtag.js) - Google Analytics