`
江南白衣
  • 浏览: 548590 次
  • 来自: 广州
社区版块
存档分类
最新评论

SSO中的Pattern

阅读更多

   SSO方案中太多平行对称的分支选择,就像博而赫斯那小径分岔的花园。刚手写完一个超迷你劲袖珍的SSO,顺着 SAML2.0和OpenID的规范,记录一下这些分岔点:

  1. 流程是从身份提供者还是消费者发起?
    身份提供者,也就是SSO Server了,又叫Id Provider,简称Idp。而身份消费者,SSO Client,在SAML里叫做Sp。
    身份提供者发起流程中,用户登录进SSO Server,SSO Server展现一个Portal/菜单,上有到各SSO Client的URL若干,每个URL上都已经加了身份信息的料。
    身份消费者发起流程中,Portal/菜单里是无料的普通URL(甚至用户直接就先跑去了Client的网站),SSO Client发现本地Session里没有用户的身份信息,只好redirect重返SSO Server,最后Server再以有料的URL跳转回去。
    显然,前一种流程少了两次Redirect,速度更快,但Portal/菜单中的每个URL都深深的耦合着SSO Sever,又或者,有时根本就没有这么一个中央Portal的存在。
  2. URL参数中传送身份信息还是仅仅是指针
    SSO Server 向 Client跳转时,可以大大方方的把身份信息放在URL参数里直接传输,也可以小心翼翼的只扔过来一个随机字符串(SAML中叫 Artifact),Client拿着这个随机字串再到后台偷偷摸摸用WebService/REST接口问SSO Server拿到完整的身份信息。
    显然,前一种方式少了一次后台查询,速度更快,但没有后一种方式安全,后一种方式的WebService/REST接口还可传输任意格式的很多很多的信息。
  3. 安全措施是全文加密还是仅仅签名
    有人喜欢全文(再加一个nonce )加密成长长一段密文,心中充满了安全感。也有人大胆的明文传输内容,只在最后加个签名来防伪(签名用简单的明文+密钥散列,或者HMAC加密散列算法)
    前者用户只看到长长一段火星文,不会让用户偷窥到什么,但字串暴长且加解密本身比较消耗CPU。
  4. SSO Client会自己解密/比对签名吗?
    一般,SSO Client会根据约定自己解密或根据明文生成签名进行比对,还要负责验证那个nonce不会已被使用或者已经超时等等。
    但也会可以有很懒的client,不懂这么复杂的安全加密算法,直接把收到的内容在后台用WebService/Rest接口发回给SSO Server帮忙搞定。



    刚刚手写那个SSO,身份提供者发起流程,在URL参数中传输加密的身份信息,由SSO Client自行解密,so,超简单...

  安民告示:
     由于晓钢的服务器出了点故障,SpringSide的主页和Wiki暂时不能访问,而以下部分是完好的:

  • 论坛:http://forum.springside.org.cn
  • 源码:http://springside.googlecode.com/svn/springside3/trunk/
  • 下载:http://www.sf.net/projects/springside

 

6
0
分享到:
评论
2 楼 jitabc 2009-05-30  
把所有数据都迁移到googlecode得了,免得来维护服务器了
1 楼 jitabc 2009-05-30  
  

相关推荐

    跨域SSO实例安装和配置指南

    本文档旨在为初次接触CAS(Central Authentication Service)系统的用户提供一个实际的操作指南,通过一个具体的跨域单点登录(Single Sign-On, SSO)示例来帮助读者快速理解和掌握CAS的工作原理及其在SSO场景中的...

    单点登录sso-shiro-cas-maven

    # sso-shiro-cas spring下使用shiro+cas配置单点登录,多个系统之间的访问,每次只需要登录一次 ## 系统模块说明 1. cas: 单点登录模块,这里直接拿的是cas的项目改了点样式而已 2. doc: 文档目录,里面有数据库...

    实现SSO的CAS开源框架介绍

    - **CAS Client**:集成到各个需要支持SSO的应用程序中,用来与CAS Server进行通信,获取或验证票据,从而完成用户的认证过程。 CAS的特点包括: - 支持多种编程语言:除了Java之外,还支持Perl、Python、ASP等语言...

    单点登录sso的原理与java实现详细讲解与示例(文档与源码)

    单点登录(Single Sign-On,简称SSO)是一种网络应用中的身份验证机制,它允许用户在一次登录后,就可以在多个相互独立的应用系统之间自由切换,而无需再次进行身份验证。这种技术极大地提升了用户体验,同时也简化...

    java单点登录系统.zip

    1、boy-sso-example项目中直接在web.xml中添加如下代码,需要注意的是需要依赖boy-sso-client这个项目。 <filter-name>SSOAuth <filter-class>com.boy.sso.client.SSOFilter</filter-class> <!-- 认证...

    超级注意复杂整合环境中的Filter-Mapping的顺序--配置单点登陆及UrlRewrite有感

    这篇博客“超级注意复杂整合环境中的Filter-Mapping的顺序--配置单点登陆及UrlRewrite有感”深入探讨了如何在这样的环境中正确配置Filter和Mapping,以实现单点登录(Single Sign-On, SSO)以及URL重写。下面我们将...

    单点登录的例子 java写的

    在Java中实现SSO,常见的框架有Spring Security和CAS(Central Authentication Service)。这个例子可能是基于其中之一或自定义实现的。下面我们将深入探讨SSO的工作原理和可能的Java实现方法。 1. **SSO工作原理**...

    第3方系统单点登录OA(Token方案)

    在其他子系统中,当需要验证用户身份时,可以通过向SSO服务器发送Token验证请求来完成。示例请求如下: ```http GET /sso/validate?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3...

    shiro 单点登录.docx

    在 Shiro 中实现 SSO 需要以下关键步骤: 1. **自定义 Token**: 自定义的 `TrustedSsoAuthenticationToken` 类是为了存储从 CAS 服务获取的用户名。它实现了 `AuthenticationToken` 接口,其中 `getPrincipal()` ...

    气象政务管理平台单点登录、统一用户、统一菜单服务、消息服务集成、新建快捷菜单管理服务.docx

    同时,还可以通过ignoreUrlPatternType和ignorePattern来指定应忽略的URL模式,以便于优化SSO的处理逻辑。 【标签】中的“区块链”可能意味着在政务服务中引入了区块链技术,用于提升数据安全性和透明度,但文档...

    extjs日期显示(如何转换日期格式)

    第一步:在 sso 父 pom.xml 中引入 jackson 的 core(核心)、bind(数据绑定)以及注解三个包的依赖。这些依赖项包括 jackson-core、jackson-databind 和 jackson-annotations。这些依赖项用于将后台 Controller ...

    CAS客户端JAR包版本3.3.3

    SSO 登录用户的登录名,可选配置。 --> <filter-name>CAS HttpServletRequest Wrapper Filter org.jasig.cas.client.util.HttpServletRequestWrapperFilter <filter-name>CAS HttpServletRequest ...

    单态登录的源代码

    在JavaWeb项目中实现SSO,需要理解CAS协议的工作原理,以及如何利用Spring Security这样的框架来简化实现。通过`ExampleLogin`这样的源代码,你可以深入学习和掌握这些技能,为构建更复杂的企业级应用打下坚实基础。

    让CAS支持客户端自定义登陆页面----服务器篇-.pdf

    <url-pattern>/remoteLogin</url-pattern> ``` 2. **更新cas-servlet.xml**:增加一个新的`handlerMappingB`,处理`/remoteLogin`的请求,同时在`bean`中添加`remoteController`,配置对应的流程。 ```xml ......

    cas-client3.2.1

    <url-pattern>/</url-pattern> <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener ... ``` 4. **配置属性文件**:创建一个`cas.properties`文件,其中包含了与CAS服务器通信所...

    cas实现单点登录

    ### CAS实现单点登录(Single Sign-On, SSO)及单点登出(Single Sign-Out, SSO)机制详解 #### 一、引言 随着企业级应用的日益增多,多系统之间的集成变得越来越重要。单点登录技术应运而生,解决了用户需要在多个...

    关于cas安装和配置

    2. **修改 web.xml**:在应用的 web.xml 文件中添加必要的配置元素,以实现 CAS 的单点登出(Single Sign-Out, SSO)和身份验证功能。 - **配置 CAS 监听器**:`<listener-class>org.jasig.cas.client.session....

    spring boot整合CAS Client实现单点登陆验证的示例

    Spring Boot 整合 CAS Client 是一种流行的解决方案,用于实现单点登录(Single Sign-On,简称 SSO)。在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。CAS Client 负责处理对客户端受保护...

Global site tag (gtag.js) - Google Analytics