shiro

Shiro源码分析-初始化-Realm

五迷三道 提交于 2019-12-21 15:03:09
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在上一篇介绍SecurityManager的初始化过程中,也有realm的粗略介绍。 realm的概念在安全领域随处可见: 各种中间件的realm、spring security的realm、shiro的realm。。。如下: tomcat的realm: http://tomcat.apache.org/tomcat-7.0-doc/realm-howto.html weblogic的realm: http://edocs.weblogicfans.net/wls/docs92/secintro/realm_chap.html spring security的realm http://www.oschina.net/translate/spring-security-basic-authentication?lang=eng tomcat官网对realm的定义是这样的: A Realm is a "database" of usernames and passwords that identify valid users of a web application (or set of web applications), plus an enumeration of the list of roles

shiro基础以及spring集成

六眼飞鱼酱① 提交于 2019-12-21 09:11:19
shiro基础以及spring集成 shiro介绍 强大 且 易用 的Java安全框架 Apache Shiro(轻量级,粗粒度) , Spring security(重量级,细粒度) RBAC:权限(登录,授权) 用户(n)-角色(n)-权限(n)(资源) ▪ 授权 你登录成功后,是否有操作某一个功能的权限 ▪ 登录 没有登录的人,称它为游客 游客登录认证成功(令牌:token【username,password】)才可以进入 ▪ 角色 是权限的集合,一种角色可以包含多种权限 ▪ 资源 RBAC基于资源的访问控制(Resource-Based Access Control)是以资源为中心进行访问控制 比如:某角色必须具有查询员工信息的权限才可以查询员工信息等 shiro的四大基石 Authentication(身份认证):有时也简称为“登录” Authorization(授权):访问控制的过程,也就是绝对“谁”去访问“什么”权限 Session Management(会话管理):管理用户特定的会话 Cryptography(密码学):通过使用加密算法保持数据安全同时易于使用 Hello案例 建一个普通的maven项目 2.1 导包 <!--使用shiro需要先导包--> <dependencies> <!--shiro的核心包--> <dependency> <groupId

Springboot2.0 集成shiro权限管理

三世轮回 提交于 2019-12-21 07:22:23
主要记录关键和有坑的地方 前提: 1、SpringBoot+shiro已经集成完毕,如果没有集成,先查阅之前的 Springboot2.0 集成shiro权限管理 2、redis已经安装完成 3、redis客户端使用Lettuce,这也是sprinboot2.0后默认的,与jedis的区别,自行百度 4、json使用springboot默认的 一、依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>     //在用使用shiro的情况下集成redis,可以带这个依赖,shiro-redis已经实现了shiro的redis缓存和session管理    //如果shiro和redis集成但是不交互,可以不引入,可以自定义 <dependency> <groupId>org.crazycake</groupId> <artifactId

shiro前后端分离后端部分代码

耗尽温柔 提交于 2019-12-20 09:56:58
shiro前后端分离mavenWeb项目使用,以下是简单思路 首先需要导入包两个 <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-all</artifactId> <version>1.4.0</version> <type>pom</type> </dependency> <!-- shiro与Spring的集成包 --> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.4.0</version> </dependency> shiro配置文件要配置 <?xml version="1.0" encoding="UTF-8"?> <!--shiro安全管理器,核心组件--> <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager"> <!-- Single realm app. If you have multiple realms, use the 'realms' property instead. --> <property name

Shiro学习(22)集成验证码

被刻印的时光 ゝ 提交于 2019-12-20 06:49:55
在做用户登录功能时,很多时候都需要验证码支持,验证码的目的是为了防止 机器人 模拟真实用户登录而恶意访问,如暴力破解用户密码/恶意评论等。目前也有一些验证码比较简单,通过一些OCR工具就可以解析出来;另外还有一些验证码比较复杂(一般通过如扭曲、加线条/噪点等干扰)防止OCR工具识别;但是在中国就是人多,机器干不了的可以交给人来完成,所以在中国就有很多打码平台,人工识别验证码;因此即使比较复杂的如填字、算数等类型的验证码还是能识别的。所以验证码也不是绝对可靠的,目前比较可靠还是手机验证码,但是对于用户来说相对于验证码还是比较麻烦的。 对于验证码图片的生成,可以自己通过如 Java 提供的图像API自己去生成,也可以借助如JCaptcha这种开源Java类库生成验证码图片;JCaptcha提供了常见的如扭曲、加噪点等干扰支持。本章代码基于《第十六章 综合实例》。 一、添加JCaptcha依赖 Java代码 <dependency> <groupId>com.octo.captcha</groupId> <artifactId>jcaptcha</artifactId> <version>2.0-alpha-1</version> </dependency> <dependency> <groupId>com.octo.captcha</groupId> <artifactId

Using Shiro's PasswordMatcher with a custom realm

好久不见. 提交于 2019-12-20 02:41:12
问题 I'm using Apache Shiro with a custom JDBC realm to retrieve a user’s salt, password, hash algorithm name and number of hash iterations from the database which are all stored as separate columns. The problem is I'm unsure how I should handle the salt that has been retrieved from the database when using the PasswordMatcher to verify the user's password matches that stored in the database. When using the HashedCredentialsMatcher the salt is set using the setCredentialsSalt method, however it

SpringBoot 整合 Shiro 实现动态权限加载更新+ Session 共享 + 单点登录

女生的网名这么多〃 提交于 2019-12-19 15:12:16
一.说明 二.项目环境 二.编写项目基础类 三.编写Shiro核心类 四.实现权限控制 五.POSTMAN测试 六.项目源码 一.说明 Shiro是一个安全框架,项目中主要用它做认证,授权,加密,以及用户的会话管理,虽然Shiro没有SpringSecurity功能更丰富,但是它轻量,简单,在项目中通常业务需求Shiro也都能胜任. 二.项目环境 MyBatis -Plus版本: 3.1.0 SpringBoot 版本:2.1.5 JDK版本:1.8 Shiro版本:1.4 Shiro- redis 插件版本:3.1.0 数据表(SQL文件在项目中):数据库中测试号的密码进行了加密,密码皆为123456 数据表名 中文表名 备注说明 sys_user 系统用户表 基础表 sys_menu 权限表 基础表 sys_role 角色表 基础表 sys_role_menu 角色与权限关系表 中间表 sys_user_role 用户与角色关系表 中间表 Maven依赖如下: <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId

Apache Shiro and SSO

核能气质少年 提交于 2019-12-19 06:35:13
问题 Apache Shiro is a Java security framework and support SSO. And I have multiple sub-domains, each of which has separate application running. How can I use Apache Shiro web filters(or any other) to provide single sign on. Should I need a SSO server or service (like CAS?) before I use Apache Shiro ? Or Apache Shiro do not need SSO server or service (like CAS) ? Thanks 回答1: I am not Shiro expert, but I will try to help you. According to my understanding Shiro does not provide SSO service out of

Shiro 身份验证

梦想与她 提交于 2019-12-18 21:44:04
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 身份验证 ,即在应用中谁能证明他就是他本人。一般提供如他们的身份 ID 一些标识信息来表明他就是他本人,如提供身份证,用户名 / 密码来证明。 在 shiro 中,用户需要提供 principals (身份)和 credentials (证明) 给 shiro ,从而应用能验证用户身份: principals :身份,即主体的标识属性,可以是任何东西,如用户名、邮箱等,唯一即可。一个主体可以有多个 principals ,但只有一个 Primary principals ,一般是用户名 / 密码 / 手机号。 credentials :证明 / 凭证,即只有主体知道的安全值,如密码 / 数字证书等。 最常见的 principals 和 credentials 组合就是用户名 / 密码了。接下来先进行一个基本的身份认证。 另外两个相关的概念是之前提到的 Subject 及 Realm ,分别是主体及验证主体的数据源。 2.2 环境准备 本文使用Maven构建,因此需要一点Maven知识。首先准备环境依赖: Java代码 <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version> 4.9

Shiro多realm验证失败抛出错误异常

可紊 提交于 2019-12-18 21:16:44
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 使用Shiro时,采用默认验证策略AtLeastOneSuccessfulStrategy,在有多个realm验证下,如果有realm抛出异常后原始异常会被覆盖,导制部份异常显示非原始错误异常信息; 但因为有其它场景,又不能直接更改为AllSuccessfulStrategy(也就是所有Realm验证全部都要通过)。在阅读Shiro源码后,在没有其它合适的办法下,因此只好自行扩展一个MyModularRealmAuthenticator验证类; 增加此验证子类的目的是为了解决在多个Realm下,其中一个Realm抛异常后,继续验证其它Realm,导致原Realm异常被新的AuthenticationException覆盖问题,无法识别原始异常类型; 参见父类ModularRealmAuthenticator.doMultiRealmAuthentication()方法中的处理逻辑 异常如下: org.apache.shiro.authc.AuthenticationException: Authentication token of type [class org.apache.shiro.authc.UsernamePasswordToken] could not be authenticated by