securitymanager

Shiro -- (四) 数据库支持

落花浮王杯 提交于 2020-02-27 17:26:22
主要就是JdbcRealm这个类 先看一下部分源码: 先建表:users(用户名 / 密码)、user_roles(用户 / 角色)、roles_permissions(角色 / 权限),并且往users里面插入一条数据---lc/123,其实也就用了一个users表登陆一下 创建ini文件: jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm dataSource=com.alibaba.druid.pool.DruidDataSource dataSource.driverClassName=com.mysql.jdbc.Driver dataSource.url=jdbc:mysql://localhost:3306/shiro dataSource.username=root dataSource.password=123456 jdbcRealm.dataSource=$dataSource securityManager.realms=$jdbcRealm 测试: @org.junit.Test public void t4(){ Factory<SecurityManager> factory=new IniSecurityManagerFactory("classpath:shiro-jdbc-realm.ini");

Shiro -- (三) 自定义Realm

£可爱£侵袭症+ 提交于 2020-02-27 15:56:10
简介:   Realm:域,Shiro 从从 Realm 获取安全数据(如用户、角色、权限),就是说 SecurityManager 要验证用户身份,那么它需要从 Realm 获取相应的用户进行比较以确定用户身份是否合法;也需要从 Realm 得到用户相应的角色 / 权限进行验证用户是否能进行操作;可以把 Realm 看成 DataSource,即安全数据源。如我们之前的 ini 配置方式将使用 org.apache.shiro.realm.text. IniRealm 。 Realm源码: public interface Realm { String getName(); //返回一个唯一的Realm名字 boolean supports(AuthenticationToken var1); //判断此Realm是否支持此Token AuthenticationInfo getAuthenticationInfo(AuthenticationToken var1) throws AuthenticationException; //根据Token获取认证信息 } 一般继承 AuthorizingRealm (授权)即可;其继承了 AuthenticatingRealm(即身份验证),而且也间接继承了 CachingRealm(带有缓存实现)。其中主要默认实现如下:   org

Shiro -- (二) 身份验证基本流程

眉间皱痕 提交于 2020-02-27 14:20:31
简介: 在 shiro 中,用户需要提供 principals (身份)和 credentials(证明)给 shiro,从而应用能验证用户身份:   principals :身份,即主体的标识属性,可以是任何东西,如用户名、邮箱等,唯一即可。一个主体可以有多个 principals,但只有一个 Primary principals,一般是用户名 / 密码 / 手机号。   credentials :证明 / 凭证,即只有主体知道的安全值,如密码 / 数字证书等。 最常见的 principals 和 credentials 组合就是用户名 / 密码了。接下来先进行一个基本的身份认证。 1.引入依赖: <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.9</version> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.3</version> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId

Java Security Manager completely disable reflection

こ雲淡風輕ζ 提交于 2020-02-27 05:03:31
问题 I've been reading quite a lot of questions on Stackoverflow about this question but couldn't quit find a solution or answer for my problem. If there is already one I would be grateful if somebody would give a hint ... My problem/question is if it is possible to completely disable reflection for not trustworthy code? Functions like getDeclaredMethods() (See test.java). I've already got a Java Security Manager which throws Security Exceptions if the code tries to write/read/etc. ... If it is

Springboot整合Shiro

不羁的心 提交于 2020-02-27 00:30:54
1.shiro核心API 2.整合 (1)导入依赖 < dependency > < groupId > org . apache . shiro < / groupId > < artifactId > shiro - spring < / artifactId > < version > 1.4 .0 < / version > < / dependency > (2)编写shiro配置类 自定义Realm类 @Configuration public class ShiroConfig { //创建ShiroFilterFactoryBean public ShiroFilterFactoryBean getShiroFilterFactoryBean ( @Qualifier ( "securityManager" ) DefaultWebSecurityManager securityManager ) { ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean ( ) ; //设置安全管理器 shiroFilterFactoryBean . setSecurityManager ( securityManager ) ; return

Shiro -- (一)简介

坚强是说给别人听的谎言 提交于 2020-02-26 21:52:44
简介:   Apache Shiro 是一个强大易用的 Java 安全框架,提供了认证、授权、加密和会话管理等功能,对于任何一个应用程序,Shiro 都可以提供全面的安全管理服务。并且相对于其他安全框架,Shiro 要简单的多。 Authentication :身份认证 / 登录,验证用户是不是拥有相应的身份; Authorization :授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限; Session Manager :会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通 JavaSE 环境的,也可以是如 Web 环境的; Cryptography :加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储; Web Support :Web 支持,可以非常容易的集成到 Web 环境; Caching :缓存,比如用户登录后,其用户信息、拥有的角色 / 权限不必每次去查,这样可以提高效率; Concurrency :shiro 支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去; Testing :提供测试支持; Run As :允许一个用户假装为另一个用户(如果他们允许

003 Shiro的认证

冷暖自知 提交于 2020-02-26 02:21:57
一 . 概述   认证:简单说就是登录,用户携带账号和密码信息通过Subject对象与shiro进行交互,看用户的身份凭证是否正确.   本节需要演示认证的流程. 二 .搭建环境   本次使用ini充当Realm对象,使用IniSecurityManager充当SecurityManager对象,这个在后面我们都会重写进行定制的,这里只是简单介绍流程.   我们的ini文件的内容: [users] trek=123 这个ini文件之中,定义了一个账号为trek,密码为123的用户. 三 .流程代码     //实现shiro的认证过程//1---------------创建SecurityManager----------------- //创建SecurityManager SecurityManager securityManager = new IniSecurityManagerFactory("classpath:shiro.ini").createInstance(); //将当前的SecurityManager设置到当前的环境之中 SecurityUtils.setSecurityManager(securityManager); //2-----创建Subject对象 //下面实现的是一个登陆的功能 //获取Subkect,相当与一个Currentuser

shiro认证和授权

风格不统一 提交于 2020-02-24 18:35:20
一、shiro基础概念 Authentication :身份认证 / 登录,验证用户是不是拥有相应的身份; Authorization :授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限; Session Manager :会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通 JavaSE 环境的,也可以是如 Web 环境的; Cryptography :加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储; Web Support :Web 支持,可以非常容易的集成到 Web 环境; Caching :缓存,比如用户登录后,其用户信息、拥有的角色 / 权限不必每次去查,这样可以提高效率; Concurrency :shiro 支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去; Testing :提供测试支持; Run As :允许一个用户假装为另一个用户(如果他们允许)的身份进行访问; Remember Me :记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了。 记住一点,Shiro 不会去维护用户、维护权限;这些需要我们自己去设计 / 提供

关于shiro

北慕城南 提交于 2020-02-22 17:53:16
shiro作为一个功能强大而且可靠的安全框架拥有很多Api,结合spring可以很方便的实现有关shiro的使用。 这是关于shiro内部的架构图官网上的。下面做个简单的介绍: subject:主体,可以是用户也可以是程序,主体要访问系统,系统需要对主体进行认证、授权。 securityManager:安全管理器,主体进行认证和授权都 是通过securityManager进行。 authenticator:认证器,主体进行认证最终通过authenticator进行的。 authorizer:授权器,主体进行授权最终通过authorizer进行的。 sessionManager:web应用中一般是用web容器对session进行管理,shiro也提供一套session管理的方式。 SessionDao: 通过SessionDao管理session数据,针对个性化的session数据存储需要使用sessionDao。 cache Manager:缓存管理器,主要对session和授权数据进行缓存,比如将授权数据通过cacheManager进行缓存管理,和ehcache整合对缓存数据进行管理。 realm:域,领域,相当于数据源,通过realm存取认证、授权相关数据。 下面时一些shiro提供的方法 可继承重写 Subject Subject即主体,外部应用与subject进行交互

SpringBoot整合Shiro (二)

本秂侑毒 提交于 2020-02-22 17:47:10
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码学和会话管理。相比较Spring Security,shiro有小巧、简单、易上手等的优点。所以很多框架都在使用shiro。 Shiro包含了三个核心组件:Subject, SecurityManager 和 Realms。 Subject 代表了当前用户的安全操作。 SecurityManager 则管理所有用户的安全操作。 它是Shiro框架的核心,典型的Facade模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。 Realm 充当了Shiro与应用安全数据间的“桥梁”或者“连接器”。 也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的Realm中查找用户及其权限信息。 下面通过示例来演示SpringBoot如何来整合Shiro 1、创建项目ShiroDemo 2、配置POM,添加SpringBoot以及Shiro依赖 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> </properties> <parent> <groupId