`
xyz20003
  • 浏览: 290397 次
  • 性别: Icon_minigender_1
  • 来自: 唐山
社区版块
存档分类
最新评论

(翻译)Spring Security-2.0.x参考文档“Java认证和授权服务(JAAS)供应”

阅读更多
Java认证和授权服务(JAAS)供应器
15.1. 概述

Spring Security提供一个包,可以代理Java认证和授权服务(JAAS)的认证请求。 这个包的细节在下面讨论。

JAAS的核心是登录配置文件。 想要了解更多JAAS登录配置文件的信息,可以查询Sun公司的JAAS参考文档。 我们希望你对JAAS有一个基本了解,也了解它的登录配置语法,这才能更好的理解这章的内容。
15.2. 配置

这个 JaasAuthenticationProvider 通过JAAS认证用户的主体和证书。

让我们假设我们有一个JAAS登录配置文件,/WEB-INF/login.conf,里边的内容如下:

JAASTest {
    sample.SampleLoginModule required;
};

就像所有的Spring Security bean一样,这个JaasAuthenticationProvider 要配置在application context里。 下面的定义是与上面的JAAS登录配置文件对应的:

<bean id="jaasAuthenticationProvider"
            class="org.springframework.security.providers.jaas.JaasAuthenticationProvider">
  <property name="loginConfig" value="/WEB-INF/login.conf"/>
  <property name="loginContextName" value="JAASTest"/>
  <property name="callbackHandlers">
    <list>
      <bean class="org.springframework.security.providers.jaas.JaasNameCallbackHandler"/>
      <bean class="org.springframework.security.providers.jaas.JaasPasswordCallbackHandler"/>
    </list>
  </property>
  <property name="authorityGranters">
    <list>
      <bean class="org.springframework.security.providers.jaas.TestAuthorityGranter"/>
    </list>
  </property>
</bean>

这个 CallbackHandler和AuthorityGranter会在下面进行讨论。
15.2.1. JAAS CallbackHandler

大多数JAAS的登录模块需要设置一系列的回调方法。 这些回调方法通常用来获得用户的用户名和密码。

在Spring Security发布的时候,Spring Security负责用户交互(通过认证机制)。 因此,现在认证请求使用JAAS代理,Spring Security的认证机制将组装一个Authentication对象,它包含了所有JAASLoginModule需要的信息。

因此,Spring Security的JAAS包提供两个默认的回调处理器,JaasNameCallbackHandler 和 JaasPasswordCallbackHandler。 他们两个都实现了JaasAuthenticationCallbackHandler。 大多数情况下,这些回调函数可以直接使用,不用了解它们的内部机制。

为了需要完全控制回调行为,内部JaasAutheticationProvider使用一个InternalCallbackHandler封装这个JaasAuthenticationCallbackHandler。 这个InternalCallbackHandler才是实际实现了JAAS通常的CallbackHandler接口。 任何时候JAASLoginModule被使用的时候,它传递一个application context里配置的InternalCallbackHandler列表。 如果这个LoginModule需要回调InternalCallbackHandler,回调会传递封装好的JaasAuthenticationCallbackHandler。
15.2.2. JAAS AuthorityGranter

JAAS工作在主体上。 任何“角色”在JAAS里都是作为主体表现的。 另一方面Spring Security使用Authentication对象。 每个Authentication对象包含单独的主体和多个GrantedAuthority[]。 为了方便映射不同的概念,Spring Security的JAAS包包含了AuthorityGranter接口。

一个 AuthorityGranter 负责检查JAAS主体,返回一个String。 JaasAuthenticationProvider会创建一个JaasGrantedAuthority(实现了Spring Security的GrantedAuthority接口),包含了AuthorityGranter返回的字符串和AuthorityGranter传递的JAAS主体。 JaasAuthenticationProvider获得JAAS主体,通过首先成功认证用户的证书,使用JAAS的LoginModule,然后调用LoginContext.getSubject().getPrincipals(),使用返回的每个主体,传递到每个AuthorityGranter里,最后定义在JaasAuthenticationProvider.setAuthorityGranters(List)属性里。

Spring Security没有包含任何产品型的AuthorityGranter,因为每个JAAS主体都有特殊实现的意义。 但是,这里的单元测试里有一个TestAuthorityGranter,演示了一个简单的AuthorityGranter实现。
分享到:
评论
1 楼 SINCE1978 2008-08-26  
spring一向以简洁明了易学易用让人喜欢,看来spring acegi对jaas蹩脚的API也没什么简化的改善(不知道是不是因为jaas实在太变态了没法改进)。还是这么难看难学!

相关推荐

    Spring Security-3.0.1中文官方文档(翻译版)

    21. Java 认证和授权服务(JAAS)供应器 21.1. 概述 21.2. 配置 21.2.1. JAAS CallbackHandler 21.2.2. JAAS AuthorityGranter 22. CAS 认证 22.1. 概述 22.2. CAS 是如何工作的 22.3. 配置CAS ...

    Spring Security 中文教程.pdf

    21. Java认证和授权服务(JAAS)供应器 21.1. 概述 21.2. 配置 21.2.1. JAAS CallbackHandler 21.2.2. JAAS AuthorityGranter 22. CAS认证 22.1. 概述 22.2. CAS是如何工作的 22.3. 配置CAS客户端 ...

    培训体系管理系统-oracle-ssh

    spring-beans-2.0.xsd spring-beans.jar spring-context.jar spring-core.jar spring-dao.jar spring-hibernate3.jar spring-ibatis.jar spring-jdbc.jar spring-jdo.jar spring-jpa.jar spring-portlet.jar spring-...

    SpringSecurity 3.0.1.RELEASE.CHM

    20. Java认证和授权服务(JAAS)供应器 20.1. 概述 20.2. 配置 20.2.1. JAAS CallbackHandler 20.2.2. JAAS AuthorityGranter 21. CAS认证 21.1. 概述 21.2. CAS是如何工作的 21.3. 配置CAS客户端 22. X....

    struts2.1.6+spring2.0+hibernate3.2常用配置包

    MyEclipse8.0中自带的struts2版本是2.1.6,spring版本有2.0,2.5的,hibernate版本较多些至3.2,首先选版本就选择最优的,struts2没的选只有2.1.6版的,所以先导入struts2支持,然后是spring选的是2.0,问题就出在...

    spring-hibernate-dwr实例

    dao.jar spring-hibernate3.jar spring-ibatis.jar spring-jdbc.jar spring-jdo.jar spring-jpa.jar spring-toplink.jar persistence.jar spring-aop.jar spring-agent.jar spring-...

    c3p0-0.9.1.2等等

    antlr-2.7.6rc1.jar(下面的...spring-jpa-2.0-m2 spring-struts spring-web spring-webmvc sqljdbc struts velocity-1.5 velocity-tools-1.3 xapool xerces-2.6.2 xml-apis (我做毕业设计时,用到的。需要的话拿去用)

    jetty-client-9.4.43.v20210629-API文档-中文版.zip

    赠送jar包:jetty-client-9.4.43.v20210629.jar; 赠送原API文档:jetty-client-9.4.43.v20210629-javadoc.jar; 赠送源代码:jetty-...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    spring+struts+hibernate+dwr+jstl做的实例

    struts hibernate dwr 与Spring完全结合,实现用户列表、信息增、删、改、查、维护时用户重名提示等功能,还包括页面自动转码设置(web.xml),Hibernate管理服务按Bean名称拦截并进行Spring事务管理,完全由Spring...

    activemq-jaas-5.9.1.jar

    标签:activemq-jaas-5.9.1.jar,activemq,jaas,5.9.1,jar包下载,依赖包

    activemq-jaas-5.5.1-javadoc.jar

    标签:activemq-jaas-5.5.1-javadoc.jar,activemq,jaas,5.5.1,javadoc,jar包下载,依赖包

    activemq-jaas-5.4.2.jar

    标签:activemq-jaas-5.4.2.jar,activemq,jaas,5.4.2,jar包下载,依赖包

    spring security 参考手册中文版

    31 Java认证和授权服务(JAAS)提供者 235 31.1概述 235 31.2摘要:Java认证提供者 235 31.2.1 JAAS CallbackHandler 235 31.2.2 JAAS权威机构 236 31.3 DefaultJaasAuthenticationProvider 237 31.3.1 ...

    (2.0版本)自己写的struts2+hibernate+spring实例

    aop.jar spring-dao.jar spring-hibernate.jar spring-jdbc.jar spring-mock.jar spring-orm.jar spring-remoting.jar spring-support.jar spring-webmvc.jar

    32款java编程所需JAR包.zip

    这是java 编程所有的JAR包集 如果你是开发java的 这些工具 是必须的 antlr.jar antlr-2.7.6.jar asm.jar asm-attrs.jar aspectjrt.jar aspectjweaver.jar cglib-2.1.3.jar cglib-nodep-2.1_3.jar commons-beanutils....

    activemq-jaas-5.9.0.jar

    activemq-jaas-5.9.0.jar;activemq-jaas-5.9.0.jar;activemq-jaas-5.9.0.jar

    学生选课系统中所用的60个jar包

    java-3.1.12-bin.jar poi-2.5.1.jar quartz-1.5.1.jar spring.jar struts.jar toplink-api.jar velocity-1.4.jar velocity-tools-generic-1.2.jar velocity-tools-view-1.1.jar xapool.jar xerces-2.6.2.jar xml-...

    activemq-jaas-5.7.0.jar

    标签:activemq-jaas-5.7.0.jar,activemq,jaas,5.7.0,jar包下载,依赖包

    java工程师能够用到的各种jar包

    jaas.jar jakarta-oro.jar jaxen-1.1.jar jdbc2_0-stdext.jar jstl.jar jta.jar junit.jar log4j-1.2.8.jar msslserver2.jar spring.jar spring-mock.jar standard.jar struts.jar strutstest-2.1.0.jar xerces.jar ...

    jboss-jaas.jar

    jboss-jaas.jar

Global site tag (gtag.js) - Google Analytics