spring-security-oauth

Spring Security学习

孤街浪徒 提交于 2020-04-29 11:05:03
Getting Start 官方文档学习 Spring Security Reference Spring Security OAuth Spring Boot Reference Guide Spring Cloud Security 基本概念 Spring security解决的问题 认证(你是谁) 授权(你能干什么) 开启一些主要的安全防护功能 Web Security Maven dependency org.springframework.security : spring-security-web org.springframework.security : spring-security-config @EnableWebSecurity 为所有的URL加入身份认证,并提供一个登陆界面 防止CSRF[Cross-Site Request Forgery] : 跨站域请求伪造 防止Session Fixation : 通过修改登录后的Session id防止Session 固定 Security Header integration 开启HSTS功能,使浏览器使用https X-Content-Type-Options: nosniff :禁用浏览器类型猜测 X-XSS-Protection: 1; mode=block : 开启浏览器XSS保护 x-frame

基于spring-security-oauth2实现单点登录(持续更新)

廉价感情. 提交于 2020-04-23 11:26:27
##基于spring-security-实现数据库版## 文章代码地址:[链接描述][1]可以下载直接运行,基于springboot2.1.5,springcloud Greenwich版本实现。前面两篇写了认证oauth2通过内存 还有jdbc实现认证中心。接下来我们采用oauth2实现管理系统的单点登录。 说到这里,需要介绍几个注解: @EnableAuthorizationServer 该注解用来开启认证服务,使用该注解表明自己是一个认证服务。 @EnableResourceServer 该注解要用来开启资源保护,表明自己是资源服务器受认证服务保护。 @EnableOAuth2Sso 该注解表示自己是oauth2客户端,也即单点登录客户端 @EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true, jsr250Enabled = true) spring-security默认禁用注解,使用该注解来判断用户对某个控制层的方法是否具有访问权限 好来,注解介绍完了,闲话少说。我们开始今天的主题“单点登录”。 (1)创建sso-client项目,修改maven依赖: 因为,是web项目需要添加maven依赖。 (2)在启动类加上@EnableOAuth2Sso注解,表明自己是客户端 (3

Springsecurity-oauth2之OAuth2AuthenticationProcessingFilter

我们两清 提交于 2020-03-21 22:27:17
3 月,跳不动了?>>> Spring-security-oauth2的版本是2.0 如下图1所示,继承了Filter,还继承了InitializingBean,这个与SpringIOC有关,在创建Bean的时候,会调用afterPropertiesSet方法,进行一些判断或者初始化之类的操作        图1 我们重点来看下doFilter方法,如下List-1 List-1 OAuth2AuthenticationProcessingFilter的doFilter方法 public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { final boolean debug = logger.isDebugEnabled(); final HttpServletRequest request = (HttpServletRequest) req; final HttpServletResponse response = (HttpServletResponse) res; try { Authentication authentication = tokenExtractor.extract(request

【远程办公】无需公网、无需服务端5分钟实现内网穿透

╄→гoц情女王★ 提交于 2020-02-26 22:44:22
上文 《 【远程办公】5分钟实现内网穿透 》有个老哥私聊了我一下 好吧,正如这个老哥的需求 不需要公网IP 不需要ECS部署服务端 ​搭建 frp 的关键资源是要啥没啥,这里再推荐一个 ZeroTier 基本概念 > ZeroTier is a smart Ethernet switch for planet Earth. 翻译:用于地球的智能以太网交换机。 通俗来讲就是 Peer to Peer (P2P) ,ZeroTier 根服务器记录请求路径来做类似于DNS的解析。 主要功能,就是可以把多个不同网络的设备连接在一起,用来就像在一个局域网下 如下图 ZeroTier 配置一个虚拟网段 172.17.2.0/24 ,在家中加入这个网络中,即可访问位于公司 172.17.2.101 专有名词 Zerotier 定义了几个专业名词: PLANET 行星服务器,Zerotier 根服务器 MOON 卫星服务器,用户自建的私有根服务器,起到代理加速的作用 LEAF 网络客户端,就是每台连接到网络节点。 开始使用 1. 注册 zerotier 服务 https://my.zerotier.com/ 2. 创建网络 3. 内网目标机器安装客户端 Linux curl -s https://install.zerotier.com | sudo bash 其他操作系统 下载地址: https

3天两版 Spring Boot 2.2.4 发布!紧急修复Spring Cloud Hoxton.SR1 兼容问题

你说的曾经没有我的故事 提交于 2020-02-26 12:09:34
Spring Boot 2.2.4 发布了,可以从 repo.spring.io 和 Maven Central 获取。 此版本修复了 6 个 bug,进行了一些文档改进和依赖性升级,解决了 Gradle 5.3 至 5.6 的依赖性解析问题。 🐞 Bug修复 @ActiveProfiles 与 @SpringBootTest 使用,覆盖 spring.profiles.active 问题 从Gradle 5.3.x到5.6.x的依赖关系解析失败 📔 文献资料 文档RedisCacheManagerBuilderCustomizer #19819 🔨 依赖升级 升级到Reactor Dysprosium-SR4 #19795 ,升级 reactor-netty 0.9.4 使用 Spring Boot 2.2.4 即可解决 《翻车!Spring Boot 2.2.3 不兼容 Spring Cloud Hoxton.SR1 》 问题, 核心是 reactor-netty 向下兼容 > 项目推荐: Spring Cloud 、Spring Security OAuth2的RBAC权限管理系统 欢迎关注 来源: oschina 链接: https://my.oschina.net/giegie/blog/3160666

OAuth2 协议与 Spring Security OAuth2 集成

可紊 提交于 2020-02-26 05:44:22
OAuth 2.0 允许第三方应用程序访问受限的HTTP资源的授权协议,像平常大家使用 Github 、 Google 账号来登陆其他系统时使用的就是 OAuth 2.0 授权框架,下图就是使用 Github 账号登陆 Coding 系统的授权页面图: 类似使用 OAuth 2.0 授权的还有很多,本文将介绍 OAuth 2.0 相关的概念如:角色、授权类型等知识,以下是我整理一张 OAuth 2.0 授权的脑头,希望对大家了解 OAuth 2.0 授权协议有帮助。 文章将以脑图中的内容展开 OAuth 2.0 协议同时除了 OAuth 2.0 外,还会配合 Spring Security OAuth2 来搭建 OAuth2客户端 ,这也是学习 OAuth 2.0 的目的,直接应用到实际项目中,加深对 OAuth 2.0 和 Spring Security 的理解。 OAuth 2.0 角色 OAuth 2.0 中有四种类型的角色分别为: 资源Owner 、 授权服务 、 客户端 、 资源服务 ,这四个角色负责不同的工作,为了方便理解先给出一张大概的流程图,细节部分后面再分别展开: OAuth 2.0 大概授权流程 资源 Owner 资源 Owner可以理解为一个用户,如之前提到使用 Github 登陆 Coding 中的例子中,用户使用GitHub账号登陆Coding

基于Spring Cloud 少量配置完成单点登录开发

不羁的心 提交于 2019-12-09 16:24:00
单点登录概念 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。登录逻辑如上图 基于Spring 全家桶的实现 技术选型: Spring Boot Spring Cloud Spring Security oAuth2 客户端: maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.security.oauth</groupId> <artifactId>spring-security-oauth2</artifactId> </dependency> <dependency> <groupId>org

Springsecurity-oauth2之RemoteTokenServices

老子叫甜甜 提交于 2019-12-09 14:13:16
Spring-security-oauth2的版本是2.2.3。 RemoteTokenServices是用于向远程认证服务器验证token,同时获取token对应的用户的信息。 图1 RemoteTokenServices会通过RestTemplate调用远程服务,我们在使用这个类时,要设置checkTokenEndpointUrl、clientId、clientSecret等。 RemoteTokenServices的源码如下, List-1 public class RemoteTokenServices implements ResourceServerTokenServices { protected final Log logger = LogFactory.getLog(this.getClass()); private RestOperations restTemplate = new RestTemplate(); private String checkTokenEndpointUrl; private String clientId; private String clientSecret; private String tokenName = "token"; private AccessTokenConverter tokenConverter = new

Springsecurity-oauth2之TokenEndPoint

巧了我就是萌 提交于 2019-12-09 14:06:31
Spring-security-oauth2的版本是2.2.0。 首先来看类的继承图,如下图1所示 图1 有注解FrameworkEndpoint,这个注解和Spring的Controller注解一样的,只是这个FrameworkEndpoint注解是给框架用的,它有处理/oauth/token的方法,分别对应get和post的请求,如下图2所示 图2 图2中postAccessToken的处理流程如下图3所示,流程很长,这一切都是为了生成Token,保存Token到TokenStore,之后返回Token。 图3 当我们为了得到Token,去访问/oauth/token的时候,处理的流程如上图3所示 Reference https://www.jianshu.com/p/62dd1e4664ee 来源: oschina 链接: https://my.oschina.net/u/2518341/blog/3014166

你知道你对 JSON Web Token 的认识存在误解吗

自作多情 提交于 2019-12-06 13:04:27
1.前言 JSON Web Token (JWT) 其实目前已经广为软件开发者所熟知了,但是 JOSE (Javascript Object Signing and Encryption) 却鲜有人知道,我第一次知道它是在 Spring Security 的官方文档中,它改变了我对 JWT 的一些认识。目前国内能找到相关中文资料不是太多。所以我觉得有必要归纳一下。 2. JOSE 概述 JOSE 是一种旨在提供在各方之间安全传递声明(claims)的方法的规范集。我们常用的 JWT 就包含了允许客户端访问特定应用下特定资源的声明。 JOSE 制定了一系列的规范来达到此目的。目前该规范还在不断的发展,我们常用的包含以下几个 RFC : JWS(RFC 7515) -JSON Web签名,描述生成和处理签名消息 JWE(RFC 7516) -JSON Web加密,描述了保护和处理加密 消息 JWK(RFC 7517) -JSON Web密钥,描述 Javascript 对象签名和加密中加密密钥的 格式和处理 JWA(RFC 7518) -JSON Web算法,描述了 Javascript 对象签名和加密中使用的 加密 算法 JWT(RFC 7519) -JSON Web令牌,描述以 JSON 编码并由 JWS 或 JWE 保护的声明的表示形式 3. 我们都看错了 JWT 看了对 JWT