Spring Security

sec:authorize的使用

旧巷老猫 提交于 2019-12-02 21:49:40
1、在.html页面引入spring security的命名空间 <html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5"> 2、引入依赖 <dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-springsecurity5</artifactId> </dependency> 3、使用sec:authorize属性 <body> <p>点击<a th:href="@{/hello}">这里</a>打个招呼吧</p> <form th:action="@{/logout}" method="post"> <input type="submit" value="退出登陆"> </form> <p sec:authorize="hasRole('ROLE_admin')"><a th:href="@{/hello/helloAdmin}">管理员</a></p> <p sec:authorize="hasRole(

学习spring security(一 ) demo

五迷三道 提交于 2019-12-02 21:45:56
1.跟着spring官方给的guide做个demo,来学习spring security. 首先引入依赖: dependencies { compile('org.springframework.boot:spring-boot-starter-web') compile('org.springframework.boot:spring-boot-starter-thymeleaf') compile('org.springframework.cloud:spring-cloud-starter-security') testCompile group: 'junit', name: 'junit', version: '4.12' } 2.配置springmvc package com.test.security; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration

从源码角度理解Java设计模式——责任链模式

别说谁变了你拦得住时间么 提交于 2019-12-02 17:56:34
本文内容思维导图如下: 一、责任链模式介绍 责任链模式定义:为请求创建一个处理此请求对象的链。 适用场景(核心):只要把你的请求抛给第一个处理者,不用关心谁处理的,并且最终会返回你一个结果。 优点:请求者和处理者解耦,请求者不用知道谁处理的,处理者可以不用知道请求的全貌。 缺点:每个请求从链头遍历到链尾,影响性能。代码调试时候不方便。 类型:行为型。 类图: 源码中的典型应用: Netty 中的 Pipeline和ChannelHandler通过责任链设计模式来组织代码逻辑。 Spring Security 使用责任链模式,可以动态地添加或删除责任(处理 request 请求)。ref: SPRING与设计模式---责任链模式 Spring AOP 通过责任链模式来管理 Advisor。 Dubbo Filter 过滤器链也是用了责任链模式(链表),可以对方法调用做一些过滤处理,譬如超时(TimeoutFilter),异常(ExceptionFilter),Token(TokenFilter)等。 Mybatis 中的 Plugin 机制使用了责任链模式,配置各种官方或者自定义的 Plugin,与 Filter 类似,可以在执行 Sql 语句的时候做一些操作。 Tomcat 调用 ApplicationFilterFactory过滤器链。 二、请假示例 员工在OA系统中提交请假申请

精通Spring Boot——第十九篇:Spring Security 整合验证码登录

痴心易碎 提交于 2019-12-02 06:49:25
献上一句格言,来自马克·扎克伯格的座右铭: Stay foucsed, Keep shipping(保持专注,持续交付) 1.引言 回到本章节我们将要学习的内容,现在使用验证码登录方式是再常见不过了,图形验证码,手机短信,邮箱验证码啊诸如此类的。今天我们以图形验证码为例,介绍下如何在Spring Security中添加验证码。与之前文章不同的是,这篇文章也将与数据库结合,模拟真实的开发环境。 2.准备工作 1.首先使用spring boot starter jpa 帮助我们通过实体类在数据库中简历对应的表结构,以及插入用户一条数据。 3.配置UserDetails, UserDeatilsService 在前面两篇文章中都有详细介绍过如何配置UserDetails以及UserDetailsService,这里也就不在赘述了 4.生成随机验证码 在生成验证码的同时,将验证码放入session中。 /** * @author developlee * @since 2019/1/14 16:23 */ @RestController public class CaptchaController { /** * 用于生成验证码图片 * * @param request * @param response */ @GetMapping("/code/image") public void

基于Oauth2的api接口开发(一)

被刻印的时光 ゝ 提交于 2019-12-02 05:56:25
1.OAUTH2核心参数说明 grant_type 参数说明表格: grant_type 说明 authorization_code 标准的Server授权模式 password 基于用户密码的授权模式 client_credentials 基于APP密钥的授权模式 refresh_token 刷新accessToken response_type 参数说明表格: response_type 说明 code 标准的Server授权模式响应模式 token 脚本的授权响应模式,直接返回token,需要对回调进行校验 2.OAUTH2各种请求流程 2.1.Authorization Code(标准请求流程,必须实现) 标准的的Server授权模式,与目前开放平台的Session机制很像。第一步获取code,第二步code换token。 第一步:APP 首先发送获取code 请求 GET /authorize?response_type=code&client_id=s6BhdRkqt3& redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb HTTP/1.1 Host: server.example.com 容器返回code HTTP/1.1 302 Found Location: https://client.example

《深入理解Spring Cloud与微服务构建》第7章 Spring Boot Security详解

こ雲淡風輕ζ 提交于 2019-12-02 00:32:47
1、Spring Security简介 1.1 什么是Spring Security Spring Security是Spring Resource社区的一个安全组件,Spring Security为JavaEE企业级开发提供了全面的安全防护。安全防护是一个不断变化的目标,Spring Security通过版本不断迭代来实现这一目标。Spring Security采用“安全层”的概念,使每一层都尽可能安全,连续的安全层可以达到全面的防护。Spring Security可以在Controller层、Service层、DAO层等以加注解的方式来保护应用程序的安全。Spring Security提供了细粒度的权限控制,可以精细到每一个API接口、每一个业务的方法,或者每一个操作数据库的DAO层的方法。Spring Security提供的是应用程序层的安全解决方案,一个系统的安全还需要考虑传输层和系统层的安全,例如采用Https协议、服务器部署防火墙等。 1.2 为什么选择Spring Security 使用Spring Security有很多原因,其中一个重要原因是它对环境的无依赖性、低代码耦合性。将工程重新部署到一个新的服务器上,不需要为Spring Security做什么工作。Spring Security提供了数十个安全模块,模块与模块间的耦合性低

Spring-Security-OAuth2

戏子无情 提交于 2019-12-01 23:35:02
OAuth 是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而不需要将用户名和密码提供给第三方应用。OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的网站在特定的时段内访问特定的资源。这样,OAuth让用户可以授权第三方网站访问他们存储在另外服务提供者的某些特定信息。更多 OAuth2 请参考 理解OAuth 2.0 项目准备 添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.security.oauth</groupId> <artifactId>spring-security-oauth2</artifactId> <

【Spring Boot】25.安全

杀马特。学长 韩版系。学妹 提交于 2019-12-01 13:45:20
简介 安全是我们开发中一直需要考虑的问题,例如做身份认证、权限限制等等。市面上比较常见的安全框架有: shiro spring security shiro比较简单,容易上手。而spring security功能比较强大,但是也比较难以掌握。springboot集成了spring security,我们这次来学习spring security的使用。 spring security 应用程序的两个主要区域是“认证”和“授权”(或者访问控制)。这两个主要区域是Spring Security 的两个目标。 “认证”(Authentication),是建立一个他声明的主体的过程(一个“主体”一般是指用户,设备或一些可以在你的应用程序中执行动作的其他系统)。 “授权”(Authorization)指确定一个主体是否允许在你的应用程序执行一个动作的过程。为了抵达需要授权的店,主体的身份已经有认证过程建立。 这个概念是通用的而不只在Spring Security中。 Spring Security是针对Spring项目的安全框架,也是Spring Boot底层安全模块默认的技术选型。他可以实现强大的web安全控制。对于安全控制,我们仅需引入spring-boot-starter-security模块,进行少量的配置,即可实现强大的安全管理。需要注意几个类:

Spring Security 官方文档学习路径

为君一笑 提交于 2019-12-01 13:44:58
Spring 目前有三个层次的项目,Spring Framework层,Spring Boot层和Spring Cloud层。这三个层次的项目里都有Spring Security的东西,在加上安全和权限控制这块是大多数人的一个弱项,导致官方文档给人乱乱的感觉;下面我们就梳理一下官方文档的学习顺序; 首先是(1)Spring Security Reference的文档,Spring Security的设计理念,架构实现,与其他组件的整合等的描述都在这个文档; 接着就是(2)Spring-Security-OAuth,这是Spring Security的oauth协议的扩展,当然在此之前要先搞懂oauth协议。这里面包含了多个文档和引用,关于Spring Security的部分是,Spring-Security-OAuth-Tutorial和OAuth Developers Guide; 接着就是第二个层次的(3)Spring Boot Reference Guide里的Spring Security的部分,这一部分主要描述了Spring Boot对Spring Security和Spring Security OAuth2的封装; 最后是第三层Spring Cloud的(4)Spring Cloud Security,此部分描述了Spring Security

你需要具备这些条件才能更好的学习Spring Security 和Apache Shiro

若如初见. 提交于 2019-12-01 12:17:17
前言 web应用达到生产需要就必须有安全控制。java web领域经常提及的两大开源框架主要有两种选择 Spring Security和Apache Shiro 。所以学习这两种框架也是java开发者提高水平的必经之路。从今天开始连续一段时间内,研究一下Spring Security。如果想学习的同学可以关注一下公众号: Felordcn 或者通过 https://felord.cn 来及时获取相关的干货。 Spring Security 和Apache Shiro 相对于Apache Shiro,Spring Security提供了更多的诸如 LDAP 、 OAuth2.0 、 ACL 、 Kerberos 、 SAML 、 SSO 、 OpenID 等诸多的安全认证、鉴权协议,可以按需引用。对认证/鉴权更加灵活,粒度更细。可以结合你自己的业务场景进行更加合理的定制化开发。在最新的Spring Security 5.x中更是提供了响应式应用(reactive application)提供了安全控制支持。从语言上来讲,支持使用kotlin、groovy进行开发。 Spring Security因为是利用了Spring IOC 和AOP的特性而无法脱离Spring独立存在。而Apache Shiro可以独立存在。但是Java Web领域Spring可以说是事实上的J2EE规范