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

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一般不适合作为电子商务站点的数据库服务器。

分享到:
评论

相关推荐

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

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

    php实现的SSO单点登录系统接入功能示例分析

    简单讲一下 SSO 单点登录系统的接入的原理,前提是系统本身有完善的用户认证功能,即基本的用户登录功能,那做起来就很方便了。 SSO 登录请求接口往往是接口加上一个回调地址,访问这个地址会跳转到回调地址并带上一...

    关于SSO技术的CAS技术讲义

    讲述CAS 的基本原理、CAS 的结构体系、CAS 协议、CAS配置的一份资料

    java实现单点登录_图例及相关代码

    java实现单点登录 有图例及相关代码 阐述SSO的基本原理, 并提供了一种实现的方式。 通过对源代码的分析来掌握开发SSO 服务的技术要点和充分理解SSO的应用范围

    concrete5-windows-single-signon-sso:一些初始的概念验证代码,用于通过LDAPActiveDirectoryKerberos从Windows机器实现具体的透明传递身份验证(SSO)5

    Concrete5 Windows单点登录(SSO) 一些初始的概念验证代码,用于通过LDAP / ActiveDirectory / Kerberos从... 本质上,该系统的工作原理是,在将请求传递到Concrete5之前,所有身份验证逻辑均由Apache处理。 单

    TheirNotes::ledger: 《互联网后端知识大全》「前人栽树, 后人乘凉; 它山之石, 可以攻玉」java

    偏向锁:sparkles:Java IOJVM垃圾收集CMSG1ZGC元空间字节码操作JVM 调优分布式分布式算法PaxosRaftBFT分布式锁Redis 分布式锁分布式事务MySQL查询语句基本原理innodb 存储引擎:sparkles:缓存Redis底层原理开源框架...

    一种简洁单点登录系统设计与实现

    摘要:阐述了SSO的基本原理,并设计了一个简洁SSO系统,解决了不同Web应用系统之间的互访问题:用户 登录一次即可访问所有Web系统。系统设计简单实用,不需要建设昂贵复杂的认证服务器,对现有系统的改动很 少,扩展...

    python入门到高级全栈工程师培训 第3期 附课件代码

    08 类的装饰器的基本原理 09 类的装饰器增强版 10 类的装饰器的应用 11 自定制property 12 自定制property流程分析 13 自定制property实现延迟计算功能 14 property补充 15 元类介绍 16 自定义元类 17 函数复习 18 ...

    struts2+cas单点登陆例子

    myEclipse下含源码,在struts2下集成cas实现单点登陆的例子,例子虽然简单,基本上反映出cas的工作原理!

    ,简介-研究论文

    Oracle在此上诉中的法律地位的第二个基本错误是其对计算机程序的“结构,序列和组织”(SSO)的可保护性的过分了解。 尽管某些判例法支持这样一种观点,即在适当的情况下程序SSO可能在版权提供给程序员的保护范围之...

    Android图片加载利器之Picasso源码解析

    看到了这里,相信大家对Picasso的使用已经比较熟悉了,本篇博客中将从基本的用法着手,逐步的深入了解其设计原理。 Picasso的代码量在众多的开源框架中算得上非常少的一个了,一共只有35个class文件,但是麻雀虽小,...

    asp.net知识库

    根据基本表结构及其数据生成 INSERT ... 的 SQL 简便的MS SQL 数据库 表内容 脚本 生成器 将表数据生成SQL脚本的存储过程 直接从SQL语句问题贴子数据建表并生成建表语句的存储过程 从SQL中的一个表中导出HTML文件...

    城市电子政务门户方案设计.docx

    要实现电子政务门户服务管理需要解决以下问题: (1)政务公开与公众互动 城市公众可以通过互联网实现同市政府和各委办局的互动,是城市电子政务的最基本特点之一。任一市民可以通过互联网办理相关事务,并且可以在...

    单点登录源码

    | └── zheng-upms-server -- 用户权限系统及SSO服务端[端口:1111] ├── zheng-cms -- 内容管理系统 | ├── zheng-cms-common -- cms系统公共模块 | ├── zheng-cms-dao -- 代码生成模块,无需开发 | ├──...

    亮剑.NET深入体验与实战精要2

    8.1.3 Ajax的工作原理 326 8.1.4 Ajax的优点 326 8.1.5 Ajax的问题 327 8.1.6 Ajax适用场景 327 8.1.7 Ajax不适用场景 329 8.1.8 XMLHttpRequest开发实例 329 8.2 微软VS.NET的Ajax开发 333 8.2.1 安装ASP.NET 2.0 ...

    亮剑.NET深入体验与实战精要3

    8.1.3 Ajax的工作原理 326 8.1.4 Ajax的优点 326 8.1.5 Ajax的问题 327 8.1.6 Ajax适用场景 327 8.1.7 Ajax不适用场景 329 8.1.8 XMLHttpRequest开发实例 329 8.2 微软VS.NET的Ajax开发 333 8.2.1 安装ASP.NET 2.0 ...

    Linux多线程服务端编程:使用muduo C++网络库

    4.1基本线程原语的选用. . . . . . . . . . . . . . . . .. . . . . . . . . . . . 84 4.2C/C++ 系统库的线程安全性. . . . . . . . . . . . . . . . .. . . . . . . . 85 4.3Linux 上的线程标识. . . . . . . . . ....

Global site tag (gtag.js) - Google Analytics