- 浏览: 360412 次
- 性别:
- 来自: 广东广州
文章分类
最新评论
-
javaAlpha:
我现在也是一直出现这样的错误。也是java调用。net的接口A ...
关于java调用.net webserivce出现: 服务器无法处理请求。 --> 未将对象引用设置到对象的实例 -
javalover1:
贴出你的代码供大家学习学习啦
验证码的破解思路! -
liaolliso:
你好,请问你的最后一种方法,怎么从rgb值里 直接将每个部分的 ...
验证码的破解思路! -
tant:
天涯之海 写道从网页的session里下手好些吧
请问怎样从 ...
验证码的破解思路! -
wilddonkey:
lz此言说的到位啊
现实中很多人在这样的公司还没有做到了解这个 ...
转: 如何在管理不规范的公司中生存
1. SSO 原理浅谈SSO 是一个非常大的主题,我对这个主题有着深深的感受,自从广州 UserGroup 的论坛成立以来,无数网友都在尝试使用开源的 CAS , Kerberos 也提供另外一种方式的 SSO ,即基于 Windows 域的 SSO ,还有就是从 2005 年开始一直兴旺不衰的 SAML 。 如果将这些免费的 SSO 解决方案与商业的 Tivoli 或 Siteminder 或 RSA Secure SSO 产品做对比,差距是存在的。毕竟,商业产品的安全性和用户体验都是无与伦比的,我们现在提到的 SSO ,仅仅是 Web SSO ,即 Web-SSO 是体现在客户端;另外一种 SSO 是桌面 SSO ,例如,只需要作为 Administrator 登录一次 windows 2000 ,我便能够在使用 MSN/QQ 的时候免去登录的环节 ( 注意,这不是用客户端软件的密码记忆功能 ) ,是一种代理用户输入密码的功能。因此,桌面 SSO 是体现在 OS 级别上。 今天,当我们提起 SSO 的时候,我们通常是指 Web SSO ,它的主要特点是, SSO 应用之间走 Web 协议 ( 如 HTTP/SSL) ,并且 SSO 都只有一个登录入口。 简单的 SSO 的体系中,会有下面三种角色: 1 , User (多个) 2 , Web 应用(多个) 3 , SSO 认证中心( 1 个) 虽然 SSO 实现模式千奇百怪,但万变不离其宗: l Web 应用不处理 User 的登录,否则就是多点登陆了,所有的登录都在 SSO 认证中心进行。 l SSO 认证中心通过一些方法来告诉 Web 应用当前访问用户究竟是不是张三 / 李四。 l SSO 认证中心和所有的 Web 应用建立一种信任关系, SSO 认证中心对用户身份正确性的判断会通过某种方法告之 Web 应用,而且判断结果必须被 Web 应用信任。 2. CAS 的基本原理CAS(Central Authentication Service) 是 Yale 大学发起的一个开源项目,据统计,大概每 10 个采用开源构建 Web SSO 的 Java 项目,就有 8 个使用 CAS 。对这些统计,我虽然不以为然,但有一点可以肯定的是, CAS 是我认为最简单实效,而且足够安全的 SSO 选择。 本节主要分析 CAS 的安全性,以及为什么 CAS 被这样设计,带着少许密码学的基础知识,我希望有助于读者对 CAS 的协议有更深层次的理解。 2.1 CAS 的结构体系从结构体系看, CAS 包含两部分: l CAS Server CAS Server 负责完成对用户的认证工作, CAS Server 需要独立部署,有不止一种 CAS Server 的实现, Yale CAS Server 和 ESUP CAS Server 都是很不错的选择。 CAS Server 会处理用户名 / 密码等凭证 (Credentials) ,它可能会到数据库检索一条用户帐号信息,也可能在 XML 文件中检索用户密码,对这种方式, CAS 均提供一种灵活但同一的接口 / 实现分离的方式, CAS 究竟是用何种认证方式,跟 CAS 协议是分离的,也就是,这个认证的实现细节可以自己定制和扩展。 l CAS Client CAS Client 负责部署在客户端(注意,我是指 Web 应用),原则上, CAS Client 的部署意味着,当有对本地 Web 应用的受保护资源的访问请求,并且需要对请求方进行身份认证, Web 应用不再接受任何的用户名密码等类似的 Credentials ,而是重定向到 CAS Server 进行认证。 目前, CAS Client 支持(某些在完善中)非常多的客户端,包括 Java 、 .Net 、 ISAPI 、 Php 、 Perl 、 uPortal 、 Acegi 、 Ruby 、 VBScript 等客户端,几乎可以这样说, CAS 协议能够适合任何语言编写的客户端应用。 2.2 CAS 协议剖析协议就像剖析设计模式,有些时候,协议让人摸不着头脑。 CAS 的代理模式要相对复杂一些,它引入了一些新的概念,我希望能够在这里描述一下其原理,有助于读者在配置和调试 CAS SSO 有更清晰的思路。 如果没记错, CAS 协议应该是由 Drew Mazurek 负责可开发的,从 CAS v1 到现在的 CAS v3 ,整个协议的基础思想都是基于 Kerberos 的票据方式。 CAS v1 非常原始,传送一个用户名居然是 ”yes\ndavid.turing” 的方式, CAS v2 开始使用了 XML 规范,大大增强了可扩展性, CAS v3 开始使用 AOP 技术,让 Spring 爱好者可以轻松配置 CAS Server 到现有的应用环境中。 CAS 是通过 TGT(Ticket Granting Ticket) 来获取 ST(Service Ticket) ,通过 ST 来访问服务,而 CAS 也有对应 TGT , ST 的实体,而且他们在保护 TGT 的方法上虽然有所区别,但是,最终都可以实现这样一个目的——免去多次登录的麻烦。 下面,我们看看 CAS 的基本协议框架: <st1:chsdate isrocdate="False" w:st="on" year="1899" day="30" islunardate="False" month="12">2.1.1 </st1:chsdate>基础协议 <v:shapetype id="_x0000_t75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f" coordsize="21600,21600" o:spt="75"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" o:extrusionok="f" gradientshapeok="t"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype> 上图是一个最基础的 CAS 协议, CAS Client 以 Filter 方式保护 Web 应用的受保护资源,过滤从客户端过来的每一个 Web 请求,同时, CAS Client 会分析 HTTP 请求中是否包请求 Service Ticket( 上图中的 Ticket) ,如果没有,则说明该用户是没有经过认证的,于是, CAS Client 会重定向用户请求到 CAS Server ( Step 2 )。 Step 3 是用户认证过程,如果用户提供了正确的 Credentials , CAS Server 会产生一个随机的 Service Ticket ,然后,缓存该 Ticket ,并且重定向用户到 CAS Client (附带刚才产生的 Service Ticket ), Service Ticket 是不可以伪造的,最后, Step 5 和 Step6 是 CAS Client 和 CAS Server 之间完成了一个对用户的身份核实,用 Ticket 查到 Username ,因为 Ticket 是 CAS Server 产生的,因此,所以 CAS Server 的判断是毋庸置疑的。 该协议完成了一个很简单的任务,就是 User(david.turing) 打开 IE ,直接访问 helloservice 应用,它被立即重定向到 CAS Server 进行认证, User 可能感觉到浏览器在 helloservcie 和 casserver 之间重定向,但 User 是看不到, CAS Client 和 CAS Server 相互间的 Service Ticket 核实 (Validation) 过程。当 CAS Server 告知 CAS Client 用户 Service Ticket 对应确凿身份, CAS Client 才会对当前 Request 的用户进行服务。 <st1:chsdate isrocdate="False" w:st="on" year="1899" day="30" islunardate="False" month="12">2.2.2 </st1:chsdate>CAS 如何实现 SSO 当我们的 Web 时代还处于初级阶段的时候, SSO 是通过共享 cookies 来实现,比如,下面三个域名要做 SSO : 如果通过 CAS 来集成这三个应用,那么,这三个域名都要做一些域名映射, 因为是同一个域,所以每个站点都能够共享基于 cas.org 的 cookies 。这种方法原始,不灵活而且有不少安全隐患,已经被抛弃了。 CAS 可以很简单的实现跨域的 SSO ,因为,单点被控制在 CAS Server ,用户最有价值的 TGC-Cookie 只是跟 CAS Server 相关, CAS Server 就只有一个,因此,解决了 cookies 不能跨域的问题。 回到 CAS 的基础协议图,当 Step3 完成之后, CAS Server 会向 User 发送一个 Ticket granting cookie (TGC) 给 User 的浏览器,这个 Cookie 就类似 Kerberos 的 TGT ,下次当用户被 Helloservice2 重定向到 CAS Server 的时候, CAS Server 会主动 Get 到这个 TGC cookie ,然后做下面的事情: 1, 如果 User 的持有 TGC 且其还没失效,那么就走基础协议图的 Step4 ,达到了 SSO 的效果。 2, 如果 TGC 失效,那么用户还是要重新认证 ( 走基础协议图的 Step3) 。 |
发表评论
-
Visual Editor插件下载、安装问题(Eclipse3.1.1) 及解决办法
2007-12-03 12:11 6934http://download.eclipse.org/too ... -
以前正规表达式的学习笔记
2007-10-16 22:50 1250js 代码 以前正规 ... -
阿里巴巴--文字上下滚动代码
2007-10-12 14:31 2507http://www.soojs.com/t/?p=947&a ... -
Java heap space 解决方法
2007-10-12 14:20 19370因为程序要从数据读取近10W行记录处理,当读到9W的时候就出现 ... -
Struts-Layout
2007-10-07 21:47 1092... -
Java实现HTTP的断点续传
2007-08-20 14:29 1384(一)断点续传的原理 其实断点续传的原理很简单,就是在Ht ... -
Java开发框架调查:6%的JSF欲撼动21%的Struts
2007-08-15 09:17 1397来自:CSDN 马京 共有评论(25)条 发表评论 ... -
使用技巧:Java实现随机验证码功能实例
2007-08-07 21:39 4830现在许多系统的注册、登录或者<nobr>发布信息& ... -
Java老师培训讲稿
2007-08-06 21:17 1273暑期的Java老师培训这月就要在八个城市展开了,我的职责和去年 ... -
我的Java程序在做什么呢?
2007-08-06 21:01 1878经常被客户问到这样的问题,我想知道我的Java应用到底在干什么 ... -
用P3P解决第三方cookie存取的问题
2007-06-29 14:48 2472... -
如何创建 Eclipse 自定义向导
2007-06-22 09:02 3379Eclipse 框架和集成开发 ... -
单元测试利器 JUnit 4
2007-06-20 10:43 2110本文主要介绍了如何使用 JUnit 4 提供的各种功能开展有效 ... -
[收藏]利用JExcelApi来动态生成excel文档
2007-06-15 08:47 2166首先,请到http://www.andykhan.com/je ... -
通过JDBC连接Oracle数据库中的十大技巧
2007-06-13 08:52 11551、在客户端软件开发中 ... -
java虚拟机jvm关于内存的设置与调优
2007-03-08 11:10 43021JVM内存的设置的原理 默认的java虚拟机的大小比较小 ... -
java读取配置文件的几种方法
2007-03-01 09:10 2675在现实工作中,我们常常需要保存一些系统配置信息, ... -
System.properties列表
2007-02-01 12:23 1364由于编辑器的原因,还是上传个附件把,大家看附件把! -
JAVA操作EXCEL文件
2007-02-01 12:21 2362使用Windows操作系统的朋友对Excel(电子表格)一定不 ... -
java进阶之字符串替换的思考
2007-01-30 17:51 1828最近在开发的过程中用到了字符串的替换, 本来觉得挺简单的问题, ...
相关推荐
SSO Single-Sign-on in Action cas
NULL 博文链接:https://572327713.iteye.com/blog/2356519
Solution in Detail - SAP NetWeaver Single Sign-On
Single sign-on (SSO) is a property of access control of multiple related, but independent software systems. With this property a user logs in once and gains access to all systems without being ...
CAS讲义SSO (Single Sign-on)原理
技术分享:SSO_Single_Sign-on实战
本文中作者给大家详细的演示了如何实现WebSphere服务器和webpshere服务器之间的SSO(“单点登录、全网漫游”),并且给大家详细地解释了实现过程中的关键点和相关选项的含义,并且给出了开发带有安全性能要求的web...
SSO (Single Sign-On) 基于YMP框架实现的单点登录服务模块
Single Sign-On (SSO)是近来的热门话题. 很多和我交往的客户中都有不止一个运行在.Net框架中的Web应用程序或者若干子域名.而他们甚至希望在不同的域名中也可以只登陆一次就可以畅游所有站点.今天我们关注的是如何在...
SingleSign-On introduction
自定义的单点登录系统,可返回各个子系统的登录页及支持CAS Server集群。(https://github.com/liyingqiao121727/single-sign-on-v2)
技术分享:SSO解决方案大全
xxl/sso 核心处理包
使用此简单扩展为您的应用程序启用SSO。 -miniOrange单一登录插件将允许用户无缝登录所有可用的Web应用程序。 -插件与miniOrange服务器安全通信,以在登录可用应用程序时获取用户凭证。 -插件不会将凭据存储在任何...
单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统
XXL-SSO, A Distributed Single-Sign-On Framework. -- Home Page -- Introduction XXL-SSO is a distributed single-sign-on framework. You only need to log in once to ...
Laravel开发-sso-client-compat 用于php的SSO客户端库>=5.1.2支持
1、配置本地hosts 127.0.0.1 sso-login 127.0.0.1 sso-resource ...2、先后启动SsoServer、sso-resource、sso-client1、sso-client2 3、访问http://sso-taobao:8083/client1/ 或 http://sso-tmall:8084/client2/
有这样一种场景,一个用户(假设是QQ),希望让一个第三方的应用(比如说某个论坛),能够得到关于自身的一些信息(唯一用户标识,比如说QQ号,用户个人信息,比如说是一些基础资料,昵称和头像等)。...
Terraform-aws-sso 该模块配置 。 AWS SSO使您可以轻松地集中管理对多个AWS账户和业务应用程序的访问,并为用户提供从一个位置对其所有分配的账户和应用程序的单点登录访问。 借助AWS SSO,您可以轻松地集中管理对...