shiro

shiro入门

白昼怎懂夜的黑 提交于 2019-12-03 08:29:22
Shiro 简介 1. 什么是 shiro shiro 是 apache 的一个开源框架,是一个权限管理的框架,实现 用户认证、用户授权。 spring 中有 spring security ( 原名 Acegi) ,是一个权限框架,它和 spring 依赖过于紧密,没有 shiro 使用简单。 shiro 不依赖于 spring , shiro 不仅可以实现 web 应用的权限管理,还可以实现 c/s 系统, 分布式系统权限管理, shiro 属于轻量框架,越来越多企业项目开始使用 shiro 。 2. 在应用程序角度来观察如何使用 Shiro 完成工作 ( 图 01) Subject :主体,代表了当前“用户”,这个用户不一定是一个具体的人,与当前应用交互的任何东西都是 Subject ,如网络爬虫,机器人等;即一个抽象概念;所有 Subject 都绑定到 SecurityManager ,与 Subject 的所有交互都会委托给 SecurityManager ;可以把 Subject 认为是一个门面; SecurityManager 才是实际的执行者; SecurityManager :安全管理器;即所有与安全有关的操作都会与 SecurityManager 交互;且它管理着所有 Subject ;可以看出它是 Shiro 的核心,它负责与后边介绍的其他组件进行交互

shiro源码分析

五迷三道 提交于 2019-12-03 08:15:54
简介 SecurityManager:安全管理器,Shiro最核心组件。Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。 Authenticator:认证器,认证AuthenticationToken是否有效。 Authorizer:授权器,处理角色和权限。 SessionManager:Session管理器,管理Session。 Subject:当前操作主体,表示当前操作用户。 SubjectContext:Subject上下文数据对象。 AuthenticationToken:认证的token信息(用户名、密码等)。 ThreadContext:线程上下文对象,负责绑定对象到当前线程。 在学习和使用Shiro过程中,我们都知道SecurityManager接口在Shiro中是最为核心的接口。我们就沿着这个接口进行分析。 下面的代码是SecurityManager接口的定义: public interface SecurityManager extends Authenticator, Authorizer, SessionManager { /** * 登录 */ Subject login(Subject subject, AuthenticationToken authenticationToken) throws

shiro入门

你说的曾经没有我的故事 提交于 2019-12-03 07:52:10
Shiro 简介 1. 什么是 shiro shiro 是 apache 的一个开源框架,是一个权限管理的框架,实现 用户认证、用户授权。 spring 中有 spring security ( 原名 Acegi) ,是一个权限框架,它和 spring 依赖过于紧密,没有 shiro 使用简单。 shiro 不依赖于 spring , shiro 不仅可以实现 web 应用的权限管理,还可以实现 c/s 系统, 分布式系统权限管理, shiro 属于轻量框架,越来越多企业项目开始使用 shiro 。 2. 在应用程序角度来观察如何使用 Shiro 完成工作 Subject :主体,代表了当前“用户”,这个用户不一定是一个具体的人,与当前应用交互的任何东西都是 Subject ,如网络爬虫,机器人等;即一个抽象概念;所有 Subject 都绑定到 SecurityManager ,与 Subject 的所有交互都会委托给 SecurityManager ;可以把 Subject 认为是一个门面; SecurityManager 才是实际的执行者; SecurityManager :安全管理器;即所有与安全有关的操作都会与 SecurityManager 交互;且它管理着所有 Subject ;可以看出它是 Shiro 的核心,它负责与后边介绍的其他组件进行交互,如果学习过

shiro入门

十年热恋 提交于 2019-12-03 07:50:42
shiro简介 1. 什么是 shiro shiro 是 apache 的一个开源框架,是一个权限管理的框架,实现 用户认证、用户授权。 spring 中有 spring security ( 原名 Acegi) ,是一个权限框架,它和 spring 依赖过于紧密,没有 shiro 使用简单。 shiro 不依赖于 spring , shiro 不仅可以实现 web 应用的权限管理,还可以实现 c/s 系统, 分布式系统权限管理, shiro 属于轻量框架,越来越多企业项目开始使用 shiro 。 2. 在应用程序角度来观察如何使用 Shiro 完成工作 ( 图 01) Subject :主体,代表了当前“用户”,这个用户不一定是一个具体的人,与当前应用交互的任何东西都是 Subject ,如网络爬虫,机器人等;即一个抽象概念;所有 Subject 都绑定到 SecurityManager ,与 Subject 的所有交互都会委托给 SecurityManager ;可以把 Subject 认为是一个门面; SecurityManager 才是实际的执行者; SecurityManager :安全管理器;即所有与安全有关的操作都会与 SecurityManager 交互;且它管理着所有 Subject ;可以看出它是 Shiro 的核心,它负责与后边介绍的其他组件进行交互

Shiro内置过滤器

柔情痞子 提交于 2019-12-03 05:21:07
Shiro内置过滤器 DefaultFilter 枚举类定义了shiro所有的默认过滤器。 package org.apache.shiro.web.filter.mgt; public enum DefaultFilter { anon(AnonymousFilter.class), authc(FormAuthenticationFilter.class), authcBasic(BasicHttpAuthenticationFilter.class), logout(LogoutFilter.class), noSessionCreation(NoSessionCreationFilter.class), perms(PermissionsAuthorizationFilter.class), port(PortFilter.class), rest(HttpMethodPermissionFilter.class), roles(RolesAuthorizationFilter.class), ssl(SslFilter.class), user(UserFilter.class); private final Class<? extends Filter> filterClass; private DefaultFilter(Class<? extends Filter>

Spring security vs Apache Shiro [duplicate]

霸气de小男生 提交于 2019-12-03 04:06:32
问题 This question already has answers here : Shiro vs. SpringSecurity [closed] (3 answers) Closed last year . What I have researched so far most people are saying Apache Shiro is easy to use and easy to integrate with CAS (for SSO etc). Just to ask if anyone has experience using both of them and which one to use and why one is better than other? 回答1: I have recently had to evaluate both shiro and spring security. We went with spring security (in fact we extended spring security to use the shiro

shiro原理

*爱你&永不变心* 提交于 2019-12-03 03:57:14
本文链接:https://blog.csdn.net/romantic_PK/article/details/81510003 Apache Shiro是一个强大而灵活的开源安全框架,它能够干净利落地处理身份认证、授权、企业会话管理和加密。相比spring security框架更简单灵活,spring security对spring依赖较强。shiro可以实现web系统、c/s、分布式等系统权限管理。 Shiro完整架构图,如下图: 核心组件: Subject:主体,即当前操作用户 SecurityManager:安全管理器,它是Shiro框架的核心,典型的Facade模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务 Realm:领域,充当了Shiro与应用安全数据间的“桥梁”或者“连接器”。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的Realm中查找用户及其权限信息 Authenticator:认证器,AuthenticationStrategy如果存在多个realm,则按着具体的策略进行登录控制,例如:如果有一个realm成功即可登录、必须所有realm都成功才能登录等 Authorizer:授权器,决定subject能拥有什么样角色或者权限。 SessionManager

sprintboot-learn(四)

天涯浪子 提交于 2019-12-03 03:14:39
请求转发被Shiro拦截: 出自项目ch-pc_client(党建微信客户端): 项目使用freemaker模板:(这里的第三个接口不是请求转发,请求转发在后边写得有) 这三个接口都是返回html页面,实际上这里的html并不是freemaker模板,只是因为放在了模板文件夹里面而被当成了模板来处理。模板的路径为WEB-INF/views/ 资源文件夹有三个,statics,modules, partPcBuild . partPcBuild这个文件夹是后来添加的,主要为什么要加这个。 Shiro的拦截里面modules/**=anon 当partPcBuild没有配置成资源文件时。 测试 ①我们访问接口/modules/partPcBuild/index.html的时候走得接口是 modules/{module}/{url}.html 我这个时候由于modules/**是被放开的,所以访问不会出任何问题。 ②我们在”/”这个接口中如果使用的是redirect。那么其实也就跟①的方式一样,是没有任何问题的。 ③当我们使用forword 或者直接如图的接口返回index页面的时候,就会出问题了,页面标题有了,但是页面上空白的,页面访问的时候错误如下: 为什么会出现这个情况?错误信息出现了login.html. 我们来看错误信息: 大概意思是这个:资源是一个stylesheet

How to stock and use a shiro's salt from database

家住魔仙堡 提交于 2019-12-03 03:11:38
I use shiro in application for the authenticate. I use hashed password with a salt and I store them in my database like this : private User createUserWithHashedPassword(String inName, String inFirstName, String inLastName, String inPassword){ ByteSource salt = randomNumberGenerator.nextBytes(32); byte[] byteTabSalt = salt.getBytes(); String strSalt = byteArrayToHexString(byteTabSalt); String hashedPasswordBase64 = new Sha256Hash(inPassword, salt, 1024).toBase64(); return new User(inName,inFirstName,inLastName,hashedPasswordBase64,strSalt); } I store the salt with a String in my database. Now

Multi tenancy in Shiro

左心房为你撑大大i 提交于 2019-12-03 03:08:26
We are evaluating Shiro for a custom Saas app that we are building. Seems like a great framework does does 90% of what we want, out of the box. My understanding of Shiro is basic, and here is what I am trying to accomplish. We have multiple clients, each with an identical database All authorization (Roles/Permissions) will be configured by the clients within their own dedicated database Each client will have a unique Virtual host eg. client1.mycompany.com, client2.mycompany.com etc Scenario 1 Authentication done via LDAP (MS Active Directory) Create unique users in LDAP, make app aware of LDAP