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实现。
分享到:
相关推荐
- LDAP模块(spring-security-ldap.jar):LDAP认证和授权的支持。 - OAuth2.0相关模块,包括核心、客户端和JOSE(JSON Object Signing and Encryption)。 - ACL模块(spring-security-acl.jar):访问控制列表...
Hive是Apache Hadoop生态系统中的一个数据仓库工具,它允许我们对存储在HDFS上的大数据进行结构化查询和分析。Hive JDBC驱动是Hive与各种数据库管理工具、应用程序之间建立连接的关键组件,使得用户可以通过标准的...
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的主要功能是提供一套全面的身份验证和授权机制,为基于Spring的应用程序提供了安全服务。它的核心特性包括: 1. **身份验证**:Acegi Security支持多种身份验证策略,例如基于用户名和密码的认证,...
- **Java认证和授权服务(JAAS)供应商**:集成JAAS进行认证。 - **CAS认证**:实现CAS单点登录。 - **X.509认证**:支持X.509证书进行身份验证。 以上概览仅为Spring Security部分内容的总结,实际应用中需要根据...
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....
1. **认证和授权机制**:Spring Security提供了一种灵活的方式来处理用户身份验证和权限授权。它支持多种认证源,如数据库、LDAP服务器、JAAS等,并且通过访问决策管理器(Access Decision Manager)和访问决策投票...
Apache ActiveMQ是世界上最流行的开源消息代理,它是一个Java消息服务(JMS)提供商,用于处理企业级的消息传递。这个“apache-activemq-5.15.11-bin.tar.gz”文件是针对Linux操作系统的ActiveMQ的版本5.15.11的二...
MyEclipse8.0中自带的struts2版本是2.1.6,spring版本有2.0,2.5的,hibernate版本较多些至3.2,首先选版本就选择最优的,struts2没的选只有2.1.6版的,所以先导入struts2支持,然后是spring选的是2.0,问题就出在...
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是一个非常知名的开源Java Servlet容器,它实现了Java EE Web应用程序规范,特别是Servlet和JavaServer Pages(JSP)。在本例中,我们讨论的是Apache Tomcat的第9.0.65版本,专为Windows x64操作系统...
MySQL数据库驱动程序是Java应用程序与MySQL数据库之间通信的桥梁,主要功能是提供API接口,使得开发者可以使用Java语言编写程序来执行SQL语句,进行数据的读取、写入和其他数据库操作。`mysql-connector-java-6.0.5....
赠送jar包:jetty-client-9.4.43.v20210629.jar; 赠送原API文档:jetty-client-9.4.43.v20210629-javadoc.jar; 赠送源代码:jetty-...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
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是一个开源的Java Servlet容器,用于部署和运行Java Web应用程序。它是基于Sun Microsystems的Java Servlet和JavaServer Pages(JSP)技术的。在本例中,我们讨论的文件"apache-tomcat-8.5.56-src.tar....
在`conf/server.xml`中配置`<Realm>`元素可实现身份验证和授权。 7. **性能优化** 通过调整`conf/server.xml`中的线程池设置、缓存大小、JVM参数等,可以优化Tomcat的性能。例如,增加最大连接数、启用NIO(非阻塞...
Acegi Security是一款在Java EE平台上广泛使用的安全框架,它为Spring框架提供了强大的身份验证和授权功能。这个"acegi-security-jboss-0.8.1.jar.zip"文件是一个压缩包,其中包含了Acegi Security的特定版本(0.8.1...
Acegi Security是Spring Framework的一个扩展,旨在提供全面的身份验证和授权服务。它允许开发者构建安全的Web应用程序,通过提供如身份验证(Authentication)、授权(Authorization)和会话管理(Session ...
8. **安全管理**:具备用户认证和授权功能,支持JAAS(Java Authentication and Authorization Service),可实现基于角色的访问控制。 9. **热部署**:允许开发者在不中断服务的情况下更新部署的应用,提高了开发...
在Spring Security 2.0版本中,它提供了高度的可移植性、可配置性和丰富的验证模型,支持多种认证和授权机制,如HTTP BASIC、LDAP、CAS、JAAS以及表单认证等。 首先,Spring Security的特点体现在以下几个方面: 1...