使用Apache Shiro 可以非常容易地基于一个或多个数据源进行身份认证,使用多数据源时可以返回一个针对用户的联合视图。
可以通过使用认证策略来自定义一个认证流程,这些工作都是通过修改配置文件来完成的而无须修改代码。
这样可降低项目实施的复杂性和维护工作。
本例子中使用了两个数据源:数据库和LDAP。配置文件如下:
#首先定义两个数据源
ds = com.mysql.jdbc.jdbc2.optional.MysqlDataSource
ds.serverName = 127.0.0.1
ds.user = root
ds.password = 123456
ds.databaseName = sample
ds.url = jdbc:mysql://127.0.0.1:3306/sample
jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm
jdbcRealm.permissionsLookupEnabled = true
jdbcRealm.authenticationQuery = SELECT CREDENCE_APPEND FROM user_credence_information WHERE CREDENCE_UNIQUEID = ?
ldapRealm = main.java.name.peter.shiro.realm.ldap.LdapAuthenticator
ldapRealm.rootDN = dc=example,dc=com
ldapRealm.contextFactory.url = ldap://localhost:389
ldapRealm.contextFactory.systemUsername = cn=Manager,dc=example,dc=com
ldapRealm.contextFactory.systemPassword = secret
#定义认证顺序
securityManager.realms = $jdbcRealm, $ldapRealm
#定义认证策略
authcStrategy = org.apache.shiro.authc.pam.AllSuccessfulStrategy
securityManager.authenticator.authenticationStrategy = $authcStrategy
Shiro本身定义了3种认证策略:
AuthenticationStrategy class
Description
AtLeastOneSuccessfulStrategy |
If one (or more) Realms authenticate successfully, the overall attempt is considered successful. If none authenticate succesfully, the attempt fails. |
FirstSuccessfulStrategy |
Only the information returned from the first successfully authenticated Realm will be used. All further Realms will be ignored. If none authenticate successfully, the attempt fails. |
AllSuccessfulStrategy |
All configured Realms must authenticate successfully for the overall attempt to be considered successful. If any one does not authenticate successfully, the attempt fails. |
你也可以自己实现认证策略。通过扩展org.apache.shiro.authc.pam.AbstractAuthenticationStrategy来定义自己的认证策略。AbstractAuthenticationStrategy
类会
自动将每个数据源的认证结果合并成一个AuthenticationInfo实例对象中。
分享到:
相关推荐
Apache Shiro 是一个强大且易用的 Java 安全框架,它提供了身份认证、授权、加密和会话管理功能,让开发人员可以轻松地在应用中处理安全性问题。本资源包含了一个 Apache Shiro 的身份认证例子的源码,这对于理解和...
Realms是Shiro与应用安全数据源(如数据库、LDAP等)的桥梁,负责验证凭证。CredentialsMatcher则用于比较用户提供的凭证(如密码)和存储在 Realm 中的凭证。 2. **授权**: 授权是Shiro允许谁做什么的机制。...
Apache Shiro是一个强大且易用的Java安全框架,它提供了认证、授权、加密和会话管理功能,可以简化开发人员处理安全的复杂性。Shiro适用于各种应用,从小型独立应用到大型分布式系统,都能有效地支持。 在"shiro-...
Shiro的插件体系使得开发者可以轻松扩展其功能,如自定义 Realm 来连接不同的身份数据源,或者自定义 Authenticator 和 Authorizer 来实现特定的认证和授权逻辑。 总的来说,Apache Shiro 是一个全面的Java安全框架...
2. **Realms**: Realm 是 Shiro 与具体安全数据源(如数据库、LDAP 等)的桥梁,负责从数据源中获取认证和授权信息。 3. **Cryptography**:Shiro 提供了丰富的加密工具,包括密码哈希、消息摘要算法、对称和非...
Apache Shiro是一个强大的Java安全框架,它为应用程序提供了身份验证、授权、会话管理和加密等功能。这个教程将帮助你深入理解和有效地使用Shiro框架。在本文中,我们将详细探讨Shiro的核心概念、主要功能和常见用法...
Apache Shiro 是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可以非常轻松地开发出足够安全的应用。Shiro 不仅可以用于Java Web 应用,也可以用于独立的Java应用。在集成Spring时,Shiro ...
Apache Shiro是一个强大且易用的Java安全框架,它提供了认证、授权、加密和会话管理功能,可以简化开发人员处理安全的复杂性。在"shiro-root-1.2.3-source-release zipa包"中,包含了Shiro框架的核心源代码,允许...
1. **集成Shiro到你的项目**:根据项目需求,选择合适的配置方式(如使用ini或XML配置文件),并设置 Realm 来连接数据库或其他数据源进行认证和授权。 2. **自定义认证和授权**:如果默认的认证和授权机制无法满足...
Shiro 的设计允许开发者自定义认证和授权策略,创建自己的 Realm 类来适应特定的数据源。此外,还可以通过实现特定接口或继承基类来自定义会话管理、事件处理等行为。 总之,"shiro-root-1.2.2-source-release.zip...
- **多数据源聚合**:将多个用户安全数据来源整合为单一的复合视图。 - **单点登录(SSO)**:实现跨多个应用程序的无缝登录体验。 - **Remember Me 服务**:为未登录用户启用记住功能,简化后续登录流程。 - **...
Realm 实质上是一个安全相关的 DAO,封装了数据源的连接细节,并根据需要向 Shiro 提供数据。配置 Shiro 时,至少需要指定一个 Realm,用于认证和(或)授权。 除了上述三个核心组件之外,Shiro 还包含以下关键组件...
开发者可以通过自定义 Realm 实现与数据库或其他数据源的交互,验证用户的身份信息。 2. **授权**:Shiro 的权限管理允许开发者细粒度地控制用户对资源的访问。它支持角色(Role)和权限(Permission)的概念,通过...
- 自定义Realm: Realm是Shiro与应用数据源的接口,通常需要自定义 Realm 类,实现用户的认证和授权逻辑,连接到数据库或其他数据存储。 - 过滤器链:Shiro的Filter Chain定义了请求的处理流程,如登录、权限检查...
Apache Shiro 是一款强大且易用的 Java 安全框架,提供身份认证、授权、加密以及会话管理功能,简化了安全实现。标题中的 "shiro-root-1.4.1-source-release.zip" 指的是 Apache Shiro 的 1.4.1 版本源码包,适用于...
将Shiro集成到项目中,通常需要在配置文件(如`shiro.ini`或Java配置)中指定安全策略,包括 Realm(负责与应用程序数据源交互以获取用户信息和权限信息)的配置,以及其他的设置项。 8. **插件体系** Shiro的...
- **Realm**:领域,充当 Shiro 与应用程序安全数据之间的桥梁,负责从配置的数据源中检索用户及权限信息。 **2.2 其他重要组件** - **Authenticator**:认证器,负责用户的身份验证工作,验证用户提供的凭证信息...
Shiro 提供了 Realm 接口,开发者可以实现该接口与自己的数据源(如数据库、LDAP 等)进行交互,完成用户身份的校验。 2. 授权(Authorization):即权限控制,确定用户是否有执行特定操作的权限。Shiro 支持角色和...
Apache Shiro是一个强大的Java安全框架,它提供了身份验证、授权、会话管理和加密等功能,使得在Java应用中处理安全性变得更加简单。Shiro不仅适合大型企业级应用,也适用于小型项目,因为它的API设计直观易用。当...