Spring Security OAuth笔记
因为工作需要,系统权限安全方面可能要用到Spring Security OAuth2.0,所以,近几天了解了一下OAuth相关的东西。目前好像还没有系统的学习资料,学习主要是通过博客,内容都是大同小异而且讲述的比较乱,可能还掺杂了一些个人不够全面的理解,所以有必要的话后面还得自己查看源码。
本来说写个demo先用起来试试,但是在用的时候遇到了一些问题暂时还没找到原因,因为Spring Security OAuth是基于Spring Security的,可能得去看一下Security的内容才能解决这些问题,所以这篇博客只是简单记录一下近几天学习到的内容。
网上普遍都用了一个“云冲印”的例子来说明OAuth的应用场景,就是第三方登录,比如在某个网站使用QQ登录、微博登录、微信登录等都属于OAuth的体现,就是让该网站获取账号的一些数据或者执行一些操作,但是不泄露账号密码等重要信息来保证账号安全。OAuth2授权已然是互联网开放平台的统一标配。除了第三方登录,还通常应用在微服务架构中各服务间的调用,保证服务间的安全性。
OAuth推荐可以看看这篇博客:理解OAuth 2.0
OAuth2.0分为两个部分:
- 1、认证服务器 Authorization Service
认证服务器负责对客户端进行认证授权,为客户端颁发令牌(token),OAuth2.0提供了4种授权模式。客户端必须得到用户的授权,才能获得令牌,OAuth2.0还提供了刷新令牌的功能。
- 2、资源服务器 Resource Service
资源服务器提供了一些受token令牌保护的资源,资源服务器通过对token进行验证来判断是否允许客户端的访问操作。
一、在项目中使用需要添加以下maven依赖:
二、配置认证服务器
配置认证服务器需要重写AuthorizationServerConfigurerAdapter中的配置方法,用 @EnableAuthorizationServer 注解来配置OAuth2.0 授权服务机制,重写用@Bean注解的几个configure方法一起来配置这个授权服务。包括以下3个配置项:
- ClientDetailsServiceConfigurer:用来配置客户端详情(ClientDetailsService),客户端详情信息在这里进行初始化,可以使用内存或者JDBC来存储调取详情信息。
它是AuthorizationServerConfigurer 的一个回调配置项,配置时有以下几个重要的属性:
clientId:(必须的)用来标识客户的Id。
secret:(需要值得信任的客户端)客户端安全码,如果有的话。
scope:用来限制客户端的访问范围,如果为空(默认)的话,那么客户端拥有全部的访问范围。
authorizedGrantTypes:此客户端可以使用的授权类型,默认为空。
authorities:此客户端可以使用的权限(基于Spring Security authorities)。
- AuthorizationServerSecurityConfigurer:用来配置令牌端点(Token Endpoint)的安全约束。
- AuthorizationServerEndpointsConfigurer:用来配置授权(authorization)以及令牌(token)的访问端点和令牌服务(token services)。
这个配置对象是AuthorizationServerConfigurer的一个回调配置项,有一个叫做 pathMapping() 的方法用来配置端点URL链接,它有两个参数:
第一个参数:这个端点URL的默认链接(String)。
第二个参数:你要进行替代的URL链接(String)。
框架的默认URL链接如下列表,可以作为这个 pathMapping() 方法的第一个参数:
/oauth/authorize:授权端点,这个URL应该被Spring Security保护起来只供授权用户访问。
/oauth/token:令牌端点。
/oauth/confirm_access:用户确认授权提交端点。
/oauth/error:授权服务错误信息端点。
/oauth/check_token:用于资源服务访问的令牌解析端点。
/oauth/token_key:提供公有密匙的端点,如果你使用JWT令牌的话。
二、配置资源服务器
配置资源服务器必须通过 @EnableResourceServer 注解到一个 @Configuration 配置类上,并且必须使用 ResourceServerConfigurer 这个配置对象来进行配置,(这里选择继承自 ResourceServerConfigurerAdapter 然后重写其中的方法,参数就是这个对象的实例),@EnableResourceServer 注解自动增加了一个类型为 OAuth2AuthenticationProcessingFilter 的过滤器链。下面是一些可以配置的属性:
tokenServices:ResourceServerTokenServices 类的实例,用来实现令牌服务。
resourceId:这个资源服务的ID,这个属性是可选的,但是推荐设置并在授权服务中进行验证。
其他的拓展属性:例如 tokenExtractor 令牌提取器用来提取请求中的令牌。
请求匹配器:用来设置需要进行保护的资源路径,默认的情况下是受保护资源服务的全部路径。
受保护资源的访问规则:默认的规则是简单的身份验证(plain authenticated)。
其他的自定义权限保护规则:通过 HttpSecurity 来进行配置。
因为Spring Security OAuth是基于Spring Security的,所以还需要配置Spring Security。到目前为止,配置还是存在一些问题的,初步认为是和Spring Security有关,所以这部分配置后面弄清楚了再说。
转载于:https://www.cnblogs.com/Mr-XiaoLiu/p/9796240.html
Spring Security OAuth笔记相关推荐
- Spring Security OAuth 2开发者指南译
Spring Security OAuth 2开发者指南译 介绍 这是用户指南的支持OAuth 2.0.对于OAuth 1.0,一切都是不同的,所以看到它的用户指南. 本用户指南分为两部分,第一部分为 ...
- spring security oauth rce (cve-2016-4977) 漏洞分析
0x00 漏洞概述 1.漏洞简介 Spring Security OAuth是为Spring框架提供安全认证支持的一个模块,在7月5日其维护者发布了这样一个升级公告,主要说明在用户使用Whitelab ...
- 单点登录(shiro与Spring Security OAuth 2.0的集成)
单点登录(shiro与Spring Security OAuth 2.0的集成) shiro项目采用ruoyi,OAuth采用pig 若依:https://gitee.com/y_project/Ru ...
- Spring Security——OAuth 2.0 Client自动配置源代码分析
基本概念 OAuth2.0:OAuth2.0是OAuth协议的延续版本,但不向前兼容OAuth 1.0(即完全废止了OAuth1.0). OAuth 2.0关注客户端开发者的简易性.要么通过组织在资源 ...
- Spring Security——OAuth 2.0登录——Google,GitHub,Facebook和Okta
基本概念 OAuth 2.0登录:OAuth 2.0登录功能为应用程序提供了使用户能够通过使用其在OAuth 2.0提供程序(例如GitHub)或OpenID Connect 1.0提供程序(例如Go ...
- java hipster!_通过Java Hipster升级Spring Security OAuth和JUnit测试
java hipster! "我喜欢编写身份验证和授权代码." 〜从来没有Java开发人员. 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权 ...
- 通过Java Hipster升级Spring Security OAuth和JUnit测试
"我喜欢编写身份验证和授权代码." 〜从来没有Java开发人员. 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证. 使用单元 ...
- 将JWT与Spring Security OAuth结合使用
1.概述 在本教程中,我们将讨论如何使用Spring Security OAuth2实现来使用JSON Web令牌. 我们还将继续构建此OAuth系列的上一篇文章. 2. Maven配置 首先,我们需 ...
- 【Spring Security OAuth2笔记系列】- Spring Social第三方登录 - QQ登录下
qq登录下 前面把所有的代码组件都弄好了.现在可以开启调试了 在这之前你需要有一个qq互联的应用:也就是为了拿到appid和appSecret:自己去qq互联创建一个应用即可 这里讲下本地怎么调试应用 ...
最新文章
- php 链接多个mysql_PHP同时操作多个MySQL连接
- 《剑指offer》-逐层打印二叉树
- histeq函数实现直方图的均衡化和规定化
- 播放视频一会,出错并自动关闭
- 机器学习之多变量线性回归(Linear Regression with multiple variables)
- MySQL INSERT:插入数据(添加数据)
- 【实验】广域网点到点协议PPP PAP CHAP的双向验证、单项认证
- 科大星云诗社动态20210418
- MyBatis从缓存查找数据的依据
- linux循环条件,shell脚本编写 之 条件选择,条件判断,循环语句
- 最近对latin-1这个字符集产生了不少好感
- CVPR 2019 论文大盘点-人脸技术篇
- 译: 6. 任务调度(定时执行任务)
- Hadoop学习之路(一)理论基础和逻辑思维
- 新版白话空间统计(2):空间自相关
- 安卓Aop 实现权限检测
- WPA无线密码破解利器EWSA/跑包软件
- NOIP2016排名(919~1419)
- 钉钉视频下载地瓜网络钉钉视频下载器
- 《基于Cortex-M4的虚拟机制作与测试》课程设计 结题报告