Subject认证主体包含两个信息: Principals:身份,可以是用户名,邮件,手机号码等等,用来标识一个登录主体身份; Credentials:凭证,常见有密码,数字证书等等;
Realm:意思是域,Shiro从Realm中获取验证数据; Realm有很多种类,例如常见的jdbc realm,jndi realm,text realm。 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.andrew.shiro</groupId> <artifactId>Shiro02</artifactId> <version>0.0.1-SNAPSHOT</version> <name>Shiro02</name> <description>Shiro02 Project</description> <dependencies> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.2.4</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.12</version> </dependency> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.37</version> </dependency> </dependencies> </project> src/main/resources/jdbc_realm.ini [main] jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm dataSource=com.mchange.v2.c3p0.ComboPooledDataSource dataSource.driverClass=com.mysql.jdbc.Driver dataSource.jdbcUrl=jdbc:mysql://localhost:3306/shiro dataSource.user=root dataSource.password=root jdbcRealm.dataSource=$dataSource securityManager.realms=$jdbcRealm src/main/resources/log4j.properties log4j.rootLogger=INFO, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m %n # General Apache libraries log4j.logger.org.apache=WARN # Spring log4j.logger.org.springframework=WARN # Default Shiro logging log4j.logger.org.apache.shiro=TRACE # Disable verbose logging log4j.logger.org.apache.shiro.util.ThreadContext=WARN log4j.logger.org.apache.shiro.cache.ehcache.EhCache=WARN src/main/java/com/andew/shiro/JdbcRealmTest.java package com.andrew.shiro; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.config.IniSecurityManagerFactory; import org.apache.shiro.mgt.SecurityManager; import org.apache.shiro.subject.Subject; import org.apache.shiro.util.Factory; public class JdbcRealmTest { public static void main(String[] args) { // 读取配置文件,初始化SecurityManager工厂 Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:jdbc_realm.ini"); // 获取securityManager实例 SecurityManager securityManager = factory.getInstance(); // 把securityManager实例绑定到SecurityUtils SecurityUtils.setSecurityManager(securityManager); // 得到当前执行的用户 Subject currentUser = SecurityUtils.getSubject(); // 创建token令牌,用户名/密码 UsernamePasswordToken token = new UsernamePasswordToken("andrew", "123456"); try { // 身份认证 currentUser.login(token); System.out.println("身份认证成功!"); } catch (AuthenticationException e) { e.printStackTrace(); System.out.println("身份认证失败!"); } // 退出 currentUser.logout(); } } create table users ( id int(11) null default null, username varchar(20) null default null, password varchar(20) null default null ) collate='utf8_general_ci' engine=innodb; insert into users values(1, 'andrew', '123456'); 运行结果: 身份认证成功! 修改为: UsernamePasswordToken token = new UsernamePasswordToken("andrew", "123"); 运行结果: org.apache.shiro.authc.IncorrectCredentialsException: Submitted credentials for token [org.apache.shiro.authc.UsernamePasswordToken - andrew, rememberMe=false] did not match the expected credentials. ... 身份认证失败!
您还没有登录,请您登录后再发表评论
直接使用java -jar srping....war命令运行即可 执行之后,访问http://主机的IP:8888/admin/*或者http://主机的IP:8888/login
Apache Shiro 是一个强大且易用的 Java 安全框架,它提供了身份认证、授权、加密和会话管理功能,让开发人员可以轻松地在应用中处理安全性问题。本资源包含了一个 Apache Shiro 的身份认证例子的源码,这对于理解和...
Shiro身份认证、授权的基本应用
Apache Shiro 是一个强大且易用的 Java 安全框架,它提供了身份验证、授权、密码管理和会话管理等功能,简化了在 Java 应用程序中处理安全性的问题。Shiro 的设计目标是使开发者能够专注于应用程序的安全逻辑,而...
Apache Shiro 身份验证绕过漏洞安全风险通告
它涵盖了身份验证(Authentication)、授权(Authorization)、密码策略(Cryptography)以及会话管理(Session Management)等多个核心安全领域,使得开发者可以轻松地在Java应用中实现安全控制。 **身份验证...
可直接拷贝到Tomcat下运行,默认用户名/口令:admin/admin
身份验证介绍了身份验证基础、principals、credentials、身份认证流程、Realm、多 Realm 配置以及相关实战。
Apache Shiro是一个强大...通过深入理解和实践Shiro的身份验证机制,特别是 Realm 和 JDBC Realm 的使用,我们可以有效地在Java应用中实现安全的用户认证功能。这不仅提高了代码的可维护性,还简化了安全相关的复杂性。
近日,shiro被爆出Apache Shiro 身份验证绕过漏洞 (CVE-2020-11989),攻击者可以使用包含payload的恶意请求绕过Shiro的身份认证,漏洞于1.5.3修复。实际上,这个修复并不完全,由于shiro在处理url时与spring仍然存在...
spring+shiro实现身份认证授权,拿过去就可以跑,bb+123456登陆,也可用PasswordHelper类自己改账号及密码 spring+shiro实现身份认证授权,拿过去就可以跑,bb+123456登陆,也可用PasswordHelper类自己改账号及密码
1. **身份认证**:在 Shiro 中,身份认证是验证用户是否是他们声称的那个人的过程。Shiro 提供了 `Subject` 接口作为用户与框架交互的桥梁。当用户尝试登录时,通常会调用 `Subject.login()` 方法,传递包含用户名和...
Spring Boot 提供了简化 Java 应用程序开发的框架,而 Shiro 是一个轻量级的安全框架,专注于身份验证、授权、会话管理和加密。下面将详细阐述它们在权限认证管理中的应用及其相关知识点。 一、Spring Boot 概述 ...
Shiro的认证过程涉及用户提交凭证(如用户名/密码)到系统,Shiro验证这些凭证并确定用户身份。在Shiro中,这通常通过`Subject`对象实现,它代表当前用户的安全操作主体。认证流程包括以下步骤: - 用户提交凭证 - `...
Springboot+Shiro+Redis前后端分离单点登录式权限管理系统,博客说明:https://blog.csdn.net/qq_36100599/article/details/121509780
- 如果匹配成功,Realm返回一个身份验证信息对象(通常是一个PrincipalCollection),Shiro认为用户已认证。 2. **授权实现**: - 在Shiro中,权限是细粒度的,可以是角色(Role)或者权限(Permission)。 - 当...
- Shiro身份认证的过程,包括如何使用不同的认证方式,以及如何理解Remembered和Authenticated标志的状态。 - Shiro授权的过程,授权要素和粒度的定义,编程授权,注解授权,以及理解授权流程和...
Apache Shiro是一个强大且易用的Java安全框架,它提供了身份认证、授权、加密和会话管理功能,简化了在Java应用中实现安全控制层的复杂性。本资源包括一套深度解析Shiro的开发视频、源码以及相关文档,旨在帮助...
相关推荐
直接使用java -jar srping....war命令运行即可 执行之后,访问http://主机的IP:8888/admin/*或者http://主机的IP:8888/login
Apache Shiro 是一个强大且易用的 Java 安全框架,它提供了身份认证、授权、加密和会话管理功能,让开发人员可以轻松地在应用中处理安全性问题。本资源包含了一个 Apache Shiro 的身份认证例子的源码,这对于理解和...
Shiro身份认证、授权的基本应用
Apache Shiro 是一个强大且易用的 Java 安全框架,它提供了身份验证、授权、密码管理和会话管理等功能,简化了在 Java 应用程序中处理安全性的问题。Shiro 的设计目标是使开发者能够专注于应用程序的安全逻辑,而...
Apache Shiro 身份验证绕过漏洞安全风险通告
它涵盖了身份验证(Authentication)、授权(Authorization)、密码策略(Cryptography)以及会话管理(Session Management)等多个核心安全领域,使得开发者可以轻松地在Java应用中实现安全控制。 **身份验证...
可直接拷贝到Tomcat下运行,默认用户名/口令:admin/admin
身份验证介绍了身份验证基础、principals、credentials、身份认证流程、Realm、多 Realm 配置以及相关实战。
Apache Shiro是一个强大...通过深入理解和实践Shiro的身份验证机制,特别是 Realm 和 JDBC Realm 的使用,我们可以有效地在Java应用中实现安全的用户认证功能。这不仅提高了代码的可维护性,还简化了安全相关的复杂性。
近日,shiro被爆出Apache Shiro 身份验证绕过漏洞 (CVE-2020-11989),攻击者可以使用包含payload的恶意请求绕过Shiro的身份认证,漏洞于1.5.3修复。实际上,这个修复并不完全,由于shiro在处理url时与spring仍然存在...
近日,shiro被爆出Apache Shiro 身份验证绕过漏洞 (CVE-2020-11989),攻击者可以使用包含payload的恶意请求绕过Shiro的身份认证,漏洞于1.5.3修复。实际上,这个修复并不完全,由于shiro在处理url时与spring仍然存在...
spring+shiro实现身份认证授权,拿过去就可以跑,bb+123456登陆,也可用PasswordHelper类自己改账号及密码 spring+shiro实现身份认证授权,拿过去就可以跑,bb+123456登陆,也可用PasswordHelper类自己改账号及密码
1. **身份认证**:在 Shiro 中,身份认证是验证用户是否是他们声称的那个人的过程。Shiro 提供了 `Subject` 接口作为用户与框架交互的桥梁。当用户尝试登录时,通常会调用 `Subject.login()` 方法,传递包含用户名和...
Spring Boot 提供了简化 Java 应用程序开发的框架,而 Shiro 是一个轻量级的安全框架,专注于身份验证、授权、会话管理和加密。下面将详细阐述它们在权限认证管理中的应用及其相关知识点。 一、Spring Boot 概述 ...
Shiro的认证过程涉及用户提交凭证(如用户名/密码)到系统,Shiro验证这些凭证并确定用户身份。在Shiro中,这通常通过`Subject`对象实现,它代表当前用户的安全操作主体。认证流程包括以下步骤: - 用户提交凭证 - `...
Springboot+Shiro+Redis前后端分离单点登录式权限管理系统,博客说明:https://blog.csdn.net/qq_36100599/article/details/121509780
- 如果匹配成功,Realm返回一个身份验证信息对象(通常是一个PrincipalCollection),Shiro认为用户已认证。 2. **授权实现**: - 在Shiro中,权限是细粒度的,可以是角色(Role)或者权限(Permission)。 - 当...
- Shiro身份认证的过程,包括如何使用不同的认证方式,以及如何理解Remembered和Authenticated标志的状态。 - Shiro授权的过程,授权要素和粒度的定义,编程授权,注解授权,以及理解授权流程和...
Apache Shiro是一个强大且易用的Java安全框架,它提供了身份认证、授权、加密和会话管理功能,简化了在Java应用中实现安全控制层的复杂性。本资源包括一套深度解析Shiro的开发视频、源码以及相关文档,旨在帮助...