`
peterwanghao
  • 浏览: 128530 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用Apache Shiro进行身份认证-多数据源认证

 
阅读更多

使用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 身份认证例子-源码

    Apache Shiro 是一个强大且易用的 Java 安全框架,它提供了身份认证、授权、加密和会话管理功能,让开发人员可以轻松地在应用中处理安全性问题。本资源包含了一个 Apache Shiro 的身份认证例子的源码,这对于理解和...

    shiro源码(shiro-root-1.8.0-source-release.zip)

    Realms是Shiro与应用安全数据源(如数据库、LDAP等)的桥梁,负责验证凭证。CredentialsMatcher则用于比较用户提供的凭证(如密码)和存储在 Realm 中的凭证。 2. **授权**: 授权是Shiro允许谁做什么的机制。...

    shiro jar包及源码下载

    Apache Shiro是一个强大且易用的Java安全框架,它提供了认证、授权、加密和会话管理功能,可以简化开发人员处理安全的复杂性。Shiro适用于各种应用,从小型独立应用到大型分布式系统,都能有效地支持。 在"shiro-...

    apache-shiro-1-2-x-reference.zip

    Shiro的插件体系使得开发者可以轻松扩展其功能,如自定义 Realm 来连接不同的身份数据源,或者自定义 Authenticator 和 Authorizer 来实现特定的认证和授权逻辑。 总的来说,Apache Shiro 是一个全面的Java安全框架...

    Apache shiro 1.13.0源码

    2. **Realms**: Realm 是 Shiro 与具体安全数据源(如数据库、LDAP 等)的桥梁,负责从数据源中获取认证和授权信息。 3. **Cryptography**:Shiro 提供了丰富的加密工具,包括密码哈希、消息摘要算法、对称和非...

    Apache Shiro教程

    Apache Shiro是一个强大的Java安全框架,它为应用程序提供了身份验证、授权、会话管理和加密等功能。这个教程将帮助你深入理解和有效地使用Shiro框架。在本文中,我们将详细探讨Shiro的核心概念、主要功能和常见用法...

    Apache Shiro 集成-spring

    Apache Shiro 是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可以非常轻松地开发出足够安全的应用。Shiro 不仅可以用于Java Web 应用,也可以用于独立的Java应用。在集成Spring时,Shiro ...

    shiro-root-1.2.3-source-release zipa包 和相关jar包

    Apache Shiro是一个强大且易用的Java安全框架,它提供了认证、授权、加密和会话管理功能,可以简化开发人员处理安全的复杂性。在"shiro-root-1.2.3-source-release zipa包"中,包含了Shiro框架的核心源代码,允许...

    shiro-root-1.3.2-source-release

    1. **集成Shiro到你的项目**:根据项目需求,选择合适的配置方式(如使用ini或XML配置文件),并设置 Realm 来连接数据库或其他数据源进行认证和授权。 2. **自定义认证和授权**:如果默认的认证和授权机制无法满足...

    shiro-root-1.2.2-source-release.zip

    Shiro 的设计允许开发者自定义认证和授权策略,创建自己的 Realm 类来适应特定的数据源。此外,还可以通过实现特定接口或继承基类来自定义会话管理、事件处理等行为。 总之,"shiro-root-1.2.2-source-release.zip...

    Apache Shiro中文开发文档.pdf

    - **多数据源聚合**:将多个用户安全数据来源整合为单一的复合视图。 - **单点登录(SSO)**:实现跨多个应用程序的无缝登录体验。 - **Remember Me 服务**:为未登录用户启用记住功能,简化后续登录流程。 - **...

    Apache_Shiro_使用手册(一)Shiro架构介绍

    Realm 实质上是一个安全相关的 DAO,封装了数据源的连接细节,并根据需要向 Shiro 提供数据。配置 Shiro 时,至少需要指定一个 Realm,用于认证和(或)授权。 除了上述三个核心组件之外,Shiro 还包含以下关键组件...

    shiro-root-1.32-source-release

    开发者可以通过自定义 Realm 实现与数据库或其他数据源的交互,验证用户的身份信息。 2. **授权**:Shiro 的权限管理允许开发者细粒度地控制用户对资源的访问。它支持角色(Role)和权限(Permission)的概念,通过...

    springboot-shiro认证系统框架--成型框架

    - 自定义Realm: Realm是Shiro与应用数据源的接口,通常需要自定义 Realm 类,实现用户的认证和授权逻辑,连接到数据库或其他数据存储。 - 过滤器链:Shiro的Filter Chain定义了请求的处理流程,如登录、权限检查...

    shiro-root-1.4.1-source-release.zip

    Apache Shiro 是一款强大且易用的 Java 安全框架,提供身份认证、授权、加密以及会话管理功能,简化了安全实现。标题中的 "shiro-root-1.4.1-source-release.zip" 指的是 Apache Shiro 的 1.4.1 版本源码包,适用于...

    shiro常用jar包-1.2.2

    将Shiro集成到项目中,通常需要在配置文件(如`shiro.ini`或Java配置)中指定安全策略,包括 Realm(负责与应用程序数据源交互以获取用户信息和权限信息)的配置,以及其他的设置项。 8. **插件体系** Shiro的...

    Apache Shiro中文版使用手册

    - **Realm**:领域,充当 Shiro 与应用程序安全数据之间的桥梁,负责从配置的数据源中检索用户及权限信息。 **2.2 其他重要组件** - **Authenticator**:认证器,负责用户的身份验证工作,验证用户提供的凭证信息...

    shiro最简单整合版本

    Shiro 提供了 Realm 接口,开发者可以实现该接口与自己的数据源(如数据库、LDAP 等)进行交互,完成用户身份的校验。 2. 授权(Authorization):即权限控制,确定用户是否有执行特定操作的权限。Shiro 支持角色和...

    shiro所有jar包

    Apache Shiro是一个强大的Java安全框架,它提供了身份验证、授权、会话管理和加密等功能,使得在Java应用中处理安全性变得更加简单。Shiro不仅适合大型企业级应用,也适用于小型项目,因为它的API设计直观易用。当...

Global site tag (gtag.js) - Google Analytics