shiro

第一章 Shiro简介

…衆ロ難τιáo~ 提交于 2020-11-08 19:08:48
1.1 简介 Apache Shiro是Java的一个安全框架。目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Security做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的Shiro就足够了。对于它俩到底哪个好,这个不必纠结,能更简单的解决项目问题就好了。 本教程只介绍基本的Shiro使用,不会过多分析源码等,重在使用。 Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境。Shiro可以帮助我们完成:认证、授权、加密、会话管理、与Web集成、缓存等。这不就是我们想要的嘛,而且Shiro的API也是非常简单;其基本功能点如下图所示: Authentication: 身份认证/登录,验证用户是不是拥有相应的身份; Authorization: 授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限; Session Manager: 会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE环境的,也可以是如Web环境的; Cryptography: 加密,保护数据的安全性

分布式部署

无人久伴 提交于 2020-11-08 13:10:25
分布式部署 目录 什么是分布式系统... 1 为何需要分布式... 1 分布式系统的特点... 1 分布式系统的缺点... 2 什么是分布式部署... 2 什么是分布式架构... 2 架构师需要懂部署吗... 2 架构分布式系统的常见关注点... 2 分布式架构部署的演变... 3 分布式部署给开发带来的问题... 4 模块间的相互调用... 4 统一会话管理... 6 单点登录... 7 一致性更新... 7 分布式事务... 8 高可用性(HA)... 9 什么是分布式系统 通俗点说:就是能把系统进行拆分并部署到多台服务器上的系统。(注意区分 分层和集群) 专业点说:分布式软件系统(Distributed Software Systems)是支持分布式处理的软件系统,是在由网络互联的多处理机体系结构上执行任务的系统。常见的有:分布式操作系统、分布式程序设计语言及其编译(解释)系统、分布式文件系统、分布式数据库系统、分布式应用系统等。 为何需要分布式 单台服务器已经无法承受访问压力、大数据处理、高并发访问、高可用性,自动容错、并行、高性能应用…… 分布式系统的特点 1:面对高并发、大数据量的处理要求 2:高可扩展性(可伸缩) 3:高性能 4:异构:操作系统、硬件、程序语言等 5:同步、异步操作混杂 6:安全性:授权认证、SSO单点登录、0auth等 7:透明性,如:访问透明

shiro过滤器过滤属性含义

∥☆過路亽.° 提交于 2020-11-07 10:18:51
shiro过滤器过滤属性含义 securityManager :这个属性是必须的。 loginUrl :没有登录的用户请求需要登录的页面时自动跳转到登录页面,不是必须的属性,不输入地址的话会自动寻找项目web项目的根目录下的”/login.jsp”页面。 successUrl :登录成功默认跳转页面,不配置则跳转至”/”。如果登陆前点击的一个需要登录的页面,则在登录自动跳转到那个需要登录的页面。不跳转到此。 unauthorizedUrl :没有权限默认跳转的页面 其权限过滤器及配置释义 anon: 例子/admins/**=anon 没有参数,表示可以匿名使用。 authc: 例如/admins/user/**=authc表示 需要认证(登录 ) 才能使用,没有参数 roles(角色):例子/admins/user/**=roles[admin],参数可以写多个,多个时必须加上引号,并且参数之间用逗号分割,当有多个参数时,例如admins/user/**=roles["admin,guest"],每个参数通过才算通过,相当于hasAllRoles()方法。 perms(权限):例子/admins/user/**=perms[user:add:*],参数可以写多个,多个时必须加上引号,并且参数之间用逗号分割,例如/admins/user/**=perms["user:add:*

教你 Shiro + SpringBoot 整合 JWT

坚强是说给别人听的谎言 提交于 2020-10-28 10:42:51
本篇文章将教大家在 shiro + springBoot 的基础上整合 JWT (JSON Web Token) 如果对 shiro 如何整合 springBoot 还不了解的可以先去看我的上一篇文章 《教你 Shiro 整合 SpringBoot,避开各种坑》 附上源码: https://github.com/HowieYuan/shiro JWT JSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用 JWT 在用户和服务器之间传递安全可靠的信息。 我们利用一定的编码生成 Token,并在 Token 中加入一些非敏感信息,将其传递。 一个完整的 Token : eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmcm9tX3VzZXIiOiJCIiwidGFyZ2V0X3VzZXIiOiJBIn0.rSWamyAYwuHCo7IFAgd1oRpSP7nzL7BF5t7ItqpKViM 在本项目中,我们规定每次请求时,需要在请求头中带上 token ,通过 token 检验权限,如没有,则说明当前为游客状态(或者是登陆 login 接口等) JWTUtil 我们利用 JWT 的工具类来生成我们的 token,这个工具类主要有生成 token 和 校验 token 两个方法 生成 token 时,指定 token 过期时间

jeecg-cloud微服务架构图

自古美人都是妖i 提交于 2020-10-25 06:33:01
jeecg-cloud: 基于Spring Boot 2.1.3、 Spring Cloud Greenwich.SR3 & Alibaba、 Shiro、JWT的快速开发平台(Jeecg Boot的微服务版本,功能和底层代码,两边保持同步) https://gitee.com/jeecg/jeecg-cloud jeecg-cloud微服务架构图 mini_1590566044258.png (1412×1039) https://static.jeecg.com/upload/test/jeecg-cloud微服务架构图 mini_1590566044258.png 来源: oschina 链接: https://my.oschina.net/u/4342210/blog/4307274

面试干货分享(经验总结+本人遇到的实际面试问题)

时光毁灭记忆、已成空白 提交于 2020-10-24 20:45:30
面试经验分享(个人真实经历) 本文是个人面试的真实经验,在这里与大家分享,希望可以帮到最近正在求职的小伙伴们,如有逻辑或者答案不对的地方,欢迎大佬们指正,我们一起进步哈! Java基础面试题肯定是要掌握的(不然初试就凉凉) 所谓的初试,大部分是那些hr沟通后进行的电话面试,或者是在第一次电话联系中和你说明他们公司需求后的情况下随机问的一些问题,目的是测试你是否有任职这个岗位的基础能力(说白了我感觉是在试水),下面分享一下我初试问到的问题: 一. 电话面试真实被问过的问题( 平均面试时间大约在20分钟左右 ): 有了解过Java的集合吗,能不能概括说一下都有什么? HashMap和HashTable有什么区别吗?能简单说说吗? 当你说了某个集合后,面试官会问:“那你了解过他的底层原理吗?例如HashMap为什么采用数组加链表的树结构?” 那你除了XXX集合还了解过其他的吗? 你说的这些那些是线程安全的,哪些是不安全的?哪些是有序的,哪些是无序的? 一般都用什么框架呢?分布式掌握的怎么样?有涉及过吗? SpringMvc了解吗?能简单说一下它的运行流程吗? 看你写简历上有写用过SSM,能说一下Mybatis吗? MyBatis的二级缓存了解过吗?可以简单解释一下吗? AOP和IOC知道吗?可以说一下吗? MyBatis里${}和#{}的区别?什么是SQL注入?

Shiro反序列化漏洞检测及修复(工具分享)

て烟熏妆下的殇ゞ 提交于 2020-10-14 11:50:27
Shiro反序列化漏洞检测及修复(工具分享) 写在前面 反序列化漏洞是如何产生的 反序列化漏洞解决思路 测试工具下载地址 测试过程 写在前面 这篇博文主要解决于一些朋友为了修复反序列化漏洞,根据某些帖子的内容升级了shiro版本,或者采用了随机生成key的方式后,不知道是否管用。特地写下一篇记录,分享一个检测工具。 我在之前项目中碰到了这个问题,由于shiro使用的版本是1.2.4,存在反序列化漏洞,我们采取的办法是手动升级到了1.2.6版本,但苦于无法验证是否解决了问题,后来发现了一款测试工具, ShiroExploit 。 在此特别感谢其作者 feihong飞鸿 。 反序列化漏洞是如何产生的 shiro版本<=1.2.4时,其参数remeberMe存在硬编码,它对于cookie的处理流程是,首先获取rememberMe的cookie值,然后进行Base64解码,再进行AES解密,最后反序列化。但在这个过程中,其AES的Key硬编码,导致反序列化漏洞的产生。(参考http://www.secwk.com/2019/09/18/2818/) 反序列化漏洞解决思路 从上面我们了解到,反序列化漏洞主要是由于硬编码引起的,那么只要解决硬编码,就解决了该漏洞。解决硬编码主要有两种方式: 自行实现key值 升级到1.2.5版本或以上 那么在我的项目中,选择的是升级版本到1.2.6

集成 SpringBoot 2.3.2 + Shiro 1.5.3 + jwt (无状态)

浪尽此生 提交于 2020-10-09 06:07:50
shiro 集成 jwt 需要禁用 session, 服务器就不用维护用户的状态, 做到无状态调用 可以参考 我的GitHub测试项目 https://github.com/zdtdtel/springboot-shiro-jwt-demo <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring-boot-web-starter</artifactId> <version>1.5.3</version> </dependency> <dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifactId> <version>3.10.3</version> </dependency> 1. 定义一个 JwtToken, 用来封装 username 和 jsonWebToken package com.codingos.shirojwt.shiro; import org.apache.shiro.authc.AuthenticationToken; public class JwtToken implements AuthenticationToken{ private static final long

思维导图视频代码揭秘shiro配置

泄露秘密 提交于 2020-10-07 04:51:24
思维导图、视频、代码携手揭秘shiro,干货多多,趣味多多! 目录 思维导图 视频 代码 思维导图 视频 链接:https://pan.baidu.com/s/1-JDKLbqyuyy3RegelfMGxQ 提取码:c3fs 代码 https://gitee.com/cakin24/shirodemo/tree/master/shiro-example-chapter4 来源: oschina 链接: https://my.oschina.net/u/4348352/blog/4285897

java开发安全策略_风险漏洞与解决方案

自闭症网瘾萝莉.ら 提交于 2020-10-06 06:48:50
项目语言:java 项目环境:JDK1.8 Web服务器Nginx+tomcat 数据库mysql 前端技术bootstrap+layui+jquery+ajax 后端技术maven+springboot+shiro+jpa+druid+log4j 1、 敏感信息泄露 a) 漏洞描述:敏感信息泄露漏洞,是一种通过提交错误请求,使系统出现异常处理并报错,并且将系统程序、配置、路径、类、方法 等敏感信息泄露出来的漏洞。 b) 解决方案:创建统一错误页面,在后端将异常进行拦截处理,将错误信息存储到日志中,并返回对应的错误描述或状态码。 2、 用户密码未加密传输 a) 漏洞描述:用户登录时,密码进行明码传输,导致请求被拦截获取账号信息。 b) 解决方案:使用不可逆的加密算法,采取salt(盐)+用户名+密码进行加密的方式,由前端加密后传输到后端进行身份认证。 3、 SQL注入 a) 漏洞描述:通过在string(字符串)类型的字段中,输入敏感SQL语句,进行免密登录或越权操作。 b) 解决方案:对输入信息进行敏感字符拦截,并在后端开发中使用对象SQL注入方式进行数据库访问,避免使用SQL拼接的形式进行数据库访问。 4、 越权敏感信息修改 a) 漏洞描述:修改信息时,仅根据id参数进行操作,存在越权修改任意数据问题。 b) 解决方案:后端使用session机制