`
xyz20003
  • 浏览: 292844 次
  • 性别: 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最新文档(英文)

    - LDAP模块(spring-security-ldap.jar):LDAP认证和授权的支持。 - OAuth2.0相关模块,包括核心、客户端和JOSE(JSON Object Signing and Encryption)。 - ACL模块(spring-security-acl.jar):访问控制列表...

    hive驱动包hive-jdbc-uber-2.6.5.0-292.jar(用户客户端连接使用)

    Hive是Apache Hadoop生态系统中的一个数据仓库工具,它允许我们对存储在HDFS上的大数据进行结构化查询和分析。Hive JDBC驱动是Hive与各种数据库管理工具、应用程序之间建立连接的关键组件,使得用户可以通过标准的...

    培训体系管理系统-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-...

    acegi-security-0.9.0.jar.zip

    Acegi Security的主要功能是提供一套全面的身份验证和授权机制,为基于Spring的应用程序提供了安全服务。它的核心特性包括: 1. **身份验证**:Acegi Security支持多种身份验证策略,例如基于用户名和密码的认证,...

    Spring Security 中文教程.pdf

    - **Java认证和授权服务(JAAS)供应商**:集成JAAS进行认证。 - **CAS认证**:实现CAS单点登录。 - **X.509认证**:支持X.509证书进行身份验证。 以上概览仅为Spring Security部分内容的总结,实际应用中需要根据...

    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....

    spring-security-3.1.0.RC2 官方下载

    1. **认证和授权机制**:Spring Security提供了一种灵活的方式来处理用户身份验证和权限授权。它支持多种认证源,如数据库、LDAP服务器、JAAS等,并且通过访问决策管理器(Access Decision Manager)和访问决策投票...

    apache-activemq-5.15.11-bin.tar.gz

    Apache ActiveMQ是世界上最流行的开源消息代理,它是一个Java消息服务(JMS)提供商,用于处理企业级的消息传递。这个“apache-activemq-5.15.11-bin.tar.gz”文件是针对Linux操作系统的ActiveMQ的版本5.15.11的二...

    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-...

    apache-tomcat-9.0.65-windows-x64.zip

    Apache Tomcat是一个非常知名的开源Java Servlet容器,它实现了Java EE Web应用程序规范,特别是Servlet和JavaServer Pages(JSP)。在本例中,我们讨论的是Apache Tomcat的第9.0.65版本,专为Windows x64操作系统...

    mysql数据库驱动:mysql-connector-java-6.0.5.jar

    MySQL数据库驱动程序是Java应用程序与MySQL数据库之间通信的桥梁,主要功能是提供API接口,使得开发者可以使用Java语言编写程序来执行SQL语句,进行数据的读取、写入和其他数据库操作。`mysql-connector-java-6.0.5....

    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-...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    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 (我做毕业设计时,用到的。需要的话拿去用)

    apache-tomcat-8.5.56-src.tar.gz

    Apache Tomcat是一个开源的Java Servlet容器,用于部署和运行Java Web应用程序。它是基于Sun Microsystems的Java Servlet和JavaServer Pages(JSP)技术的。在本例中,我们讨论的文件"apache-tomcat-8.5.56-src.tar....

    apache-tomcat-9.0.74-windows-x64

    在`conf/server.xml`中配置`&lt;Realm&gt;`元素可实现身份验证和授权。 7. **性能优化** 通过调整`conf/server.xml`中的线程池设置、缓存大小、JVM参数等,可以优化Tomcat的性能。例如,增加最大连接数、启用NIO(非阻塞...

    acegi-security-jboss-0.8.1.jar.zip

    Acegi Security是一款在Java EE平台上广泛使用的安全框架,它为Spring框架提供了强大的身份验证和授权功能。这个"acegi-security-jboss-0.8.1.jar.zip"文件是一个压缩包,其中包含了Acegi Security的特定版本(0.8.1...

    acegi-security-jetty-0.8.2.jar.zip

    Acegi Security是Spring Framework的一个扩展,旨在提供全面的身份验证和授权服务。它允许开发者构建安全的Web应用程序,通过提供如身份验证(Authentication)、授权(Authorization)和会话管理(Session ...

    jboss-4.0.5.GA.zip

    8. **安全管理**:具备用户认证和授权功能,支持JAAS(Java Authentication and Authorization Service),可实现基于角色的访问控制。 9. **热部署**:允许开发者在不中断服务的情况下更新部署的应用,提高了开发...

    spring_security2.0介绍.docx

    在Spring Security 2.0版本中,它提供了高度的可移植性、可配置性和丰富的验证模型,支持多种认证和授权机制,如HTTP BASIC、LDAP、CAS、JAAS以及表单认证等。 首先,Spring Security的特点体现在以下几个方面: 1...

Global site tag (gtag.js) - Google Analytics