OAuth2客户端springsecurity5 - 神经病的缥缈之旅
OAuth2客户端springsecurity5
神经病的缥缈之旅
介绍
本意是想从小说角度介绍各种组件使用方式,如果大家不喜欢可以直接跳过文字内容中,粘贴代码就好了哈。
一个2B程序猿可以进入电脑中的虚幻世界能力并且拥有一个非常不靠谱的系统。。。,看他在虚幻世界叱咤风云,成就现在世界中霸道总裁。
沈静兵创世界
早上沈静兵(绰号:神经病)正常上班,刚坐到位置上,秃头上司就来了,秃头上司对他说:小沈啊今天公司早上刚接到个项目
需要用到什么单点登录系统,你知道不,沈静兵沉吟了下,这个我知道,但是我手头上很多工作没有处理完,公司最近新进了很多人
你可以找他们处理下,秃头上司当时就翻脸了,我是你领导我让你干什么就干什么,不用你交我怎么分配工作,这个工作就交给你了
说完转身离去,沈静兵看着离去的背影,心里暗叹,这个公司在这么下去就完犊子了,要不是这个公司的老总是以前资助过我,我怎么
会在你这,哎看来我要想办法改变这个情况了,沈静兵想完后,想着先把他们的问题解决了吧,说着眼睛盯着屏幕,眼中精光一闪,
进入到了计算机中的虚幻世界,在外面的人看沈静兵只是在做正常编码工作。
进入到了虚幻世界的沈静兵想了想,嗯单点登录那就使用OAUHT2吧,随后在沈静兵脑中响起清脆的女声,宿主是要创建新世界吗?
沈静兵听到后点头说是,然后女声再次响起,请宿主挑选新世界拥有的依赖,沈静兵直接挑选了两个依赖,女声响起新世界初始化工作完毕。
请宿主继续,作为新世界创建奖励一次抽奖机会,沈静兵听完后惊讶道说:创建新世界会得到抽奖机会吗?女声响起看我心情,
沈静兵无语。。。,女声响起是否现在抽奖,沈静兵抽奖,只见他眼前出现了一个抽奖圆盘,上面有5项分别是特等奖,一等奖,二等奖
三等奖,纪念奖,沈静兵问,这些奖项对应的奖品是什么,女声回答说:保密,沈静兵内心问候了下系统的家人,沈静兵说:抽奖吧。
只见光芒一闪指针在圆盘中开始旋转了起来,在旋转了10多圈后慢慢的停下,只见指针马上就要停特等奖上,沈静兵心想我的手气不错,
第一次就抽中特等奖了,但是指针确停在了特等奖与纪念奖中间位置,系统声音响起,本次抽奖结果为纪念奖,沈静兵当时就不干了,
这明明停到了中间凭什么算是纪念奖,系统淡定回答说,应为指针距离中线还差0.0001毫米,沈静兵说:你说差就差了啊,我怎么看不到
系统说:放大,只见抽奖圆盘放大了N倍,肉眼可见指针离着中线就差了那么一点点,沈静兵相当无语,说好吧,那纪念奖奖品是什么。
系统本次纪念奖奖品,Java编程思想书一本,已经通过快递邮寄给你了,请注意查收哦,听着这个俏皮的系统女声,沈静兵内心是崩溃的。
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-oauth2-client</artifactId></dependency><dependency><groupId>org.thymeleaf.extras</groupId><artifactId>thymeleaf-extras-springsecurity5</artifactId></dependency>
沈静兵创建好了基本世界结构,心想我需要一个看门的,不能让杂七杂八的啥人都往里进啊,于是乎沈静兵使用召唤技能。
虚拟世界技能等级分为P1-P10,十个等级,主人公沈静兵只是P2级别小菜菜。
沈静兵:出来吧我的伙伴,由于等级太低。。。竟然召唤出一只旺财。。。
沈静兵看着召唤出来的旺财相当的无语,在看了看自己可怜的等级只能认了。
于是看门狗旺财(SecurityConfig)闪亮登场,旺财看了看左右跟沈静兵说,你有毛病啊这啥都么有你让我来干啥啊。
沈静兵说:我新创建了个世界,我让你来给我看门的,旺财说:让本旺就来干这事,你做梦啊,说着旺财就要从召唤传送门离开。
沈静兵我擦,这TMD一只狗还拽上天了啊,我是召唤的你啊 ,你还不听我的,说着就要动手去抓,结果旺财回头就咬了他一口,
说道:你现在等级太低没有不能直接使唤我,等你等级提高再说吧,除非,沈静兵说:除非什么,只见旺财搓着两只狗爪子说:
要么帮我提升等级 ,要么给我好处,不过提升等级估计你做不到了,但是你可给我好处呀,沈静兵说:好处?什么好处?
旺财说:你咋啥都不知道啊,我喜欢金币,很多很多的金币,旺财双眼放光的说,沈静兵:金币?大哥这是虚拟世界我拿来的金币
给你啊,旺财撇撇嘴,你傻啊,我要的是虚拟货币懂不,沈静兵:我擦,我只是一个普通的程序猿你要的比特币我上那给你弄去,
旺财:哎,你真是个小白,这个虚拟世界中虽然也有比特币的存在,但是那个不是通用货币,我这要的是通用的金币,就是程序与
程序交互时候产生的金币啥的,沈静兵想了想,那我怎么去赚啊?,旺财说:这是你的事跟我有什么关系,说着转身要走,并说等你
有钱了在来召唤我吧,我回去睡觉了,沈静兵急忙喊道:等等。旺财转头:干嘛?,沈静兵说:我有个办法可以让你赚到大量金币,
旺财一听双眼一亮,说说看,沈静兵:我本来也是要召唤一个看门的,旺财不乐意说道:你才看门的,你全家都是看门的,沈静兵无语。
好吧,卫士,安全卫士好吧,旺财一听才说:这才差不多,沈静兵说:我这需要建立一个关卡,这个关卡需要有人管理,进出都要管的,
我感觉你特别适合这个位置,你不是说程序和程序交互就会产生金币吗?你要是在这个位置上,不管是进还是出都是可以收费的呀!
旺财一听,双眼放光,你的意思可以双向收费啊,赶紧的给我赋予权限,这活我接了,沈静兵心想:还真TMD现实,沈静兵说:这个
没问题,不过我也要金币,咱俩对半分,旺财一听,有点纠结说,这个我在这很辛苦的,对半有点不公平啊,沈静兵沉吟了下说:那这样
既然是双向收费的,我只收入口费用,你收出口费用怎么样,收费标准你自己定,旺财听这么,收费标准我自己定,反正进来的都要出去的
很划算呀,不过它还想再争取点,沈静兵说:你要觉得不合适的话你就走吧,我大不了在召唤一个,旺财一听急了,好吧好吧,就这么定了
沈静兵心里偷笑,嘿嘿,谁说出去非要走你的关卡,你个傻狗,不过沈静兵表面上是没有什么表情的,对旺财说:来我给你授权,只见黑色
光芒一闪,落在了旺财身上,旺财继承到了新技能(WebSecurityConfigurerAdapter),沈静兵说好了:权限给你了,我走了,旺财
很不耐烦的挥挥爪子,走吧走吧,我要想想收费标准了,沈静兵。。。。
@Configuration
@Order(3)
public class SecurityConfig extends WebSecurityConfigurerAdapter {@Overridepublic void configure(HttpSecurity http) throws Exception {http.csrf().disable();http.antMatcher("/**").authorizeRequests().antMatchers("/").permitAll().anyRequest().authenticated().and().logout() //提供注销的支持。这是在使用WebSecurityConfigurerAdapter时自动应用的。.logoutUrl("/xx/logout") //触发注销发生的URL(默认为 /logout)。如果启用了CSRF保护(默认),那么请求也必须是POST。//service= 退出后页面地址.logoutSuccessUrl("http://localhost:9099/firebirds-plume/logout?service=http://127.0.0.1:10011/sanctr/talrashas-brace-template/v1/welcome") //注销后要重定向到的URL。默认是/login?logout。.and().oauth2Login();}
}
解决了旺财问题,沈静兵想了想,这个门的问题解决了,不过我这建立的是客户端的世界,还需要找到服务端要给服务啊,给这个世界
搭配上基本的规则,心里召唤了下系统小姐姐,系统小姐小姐,我这怎么才能跟服务端建立连接呀,系统那清脆的女声响起,你需要去
服务器世界填表,申请对接资格,(⊙o⊙)…,这么麻烦啊,沈静兵问,那我怎么去呢?系统说:我会给你开启传送门,说吧,在沈静兵
身边出现了一个传送门,系统说进去后就可以直接到注册大厅,到时候找到工作人员填写表格就行了。沈静兵好奇的看着传送门,走了进去
白光一闪就被传送到了一个大厅中,大厅中人还挺多的,有两个窗口,一个填表口,一个申请口,于是沈静兵老实的去填表口开始排队了,
排队挺快的没一会就到他了,他对着窗口工作人员说:我来注册OAUHT2客户端的,工作人员面无表情,给我我一张表说,填好后去隔壁窗口申请
拿到表后沈静兵按照上面的信息填写好后去,到了申请窗口,把表格交上去后,工作人员看了看后说:这个基本信息都可以了。
一会我会给你个回执,上面会给你用户名密码,通过用户名密码你就能跟我们交易了,沈静兵疑惑的说:交易?,工作人员回答说:是的
你每一次跟我交互都需要给我们服务端缴纳一个金币,沈静兵:。。。擦 这也要钱啊,工作人员淡定回答难道这个时间上还有免费的服务吗?
还有请预存一部分款项,否则我们无法给你进行服务,沈静兵:我没钱,怎么办,工作人员说:那没有办法了说着就把申请单给递了出来,
沈静兵!@#$%^,下一位工作人员喊道,沈静兵无奈的离开窗口,问系统小姐姐,我现在需要钱从那可以弄到钱呢,系统回答道你可以
拿现实世界物品来兑换金币,兑换比例1=1000,也就是说1金币相当于现实世界1000RMB,沈静兵:我擦,咋这么贵呢,那个工作人员说
每次连接1个金币呢,我穷屌丝一个拿来那么多钱啊,系统说:也可以拿现实物品来折算价值兑换金币,沈静兵:我一穷二白屌丝一个
啥也么有啊,还没等沈静兵抱怨完,系统就给展示出了一个兑换列表,上面是所有可以进行兑换的物品,沈静兵看了后相当无语,这上面
真就是属于他所有资产,笔记本电脑=2金币,台式电脑=1金币,衣服=0.5金币,行李箱=0.1金币,书籍=0.2金币,老家房产=2万金币,
Java编程思想=50金币,现金=1.1金币,沈静兵看完这个后泪流满面,我感觉我穷的一逼啊,不过那个JAVA编程思想为啥值那么多金币呢
那个不也属于书籍吗?系统回答,系统出品必出精品。沈静兵。。。。那我把那个Java编程思想给兑换了吧,系统提示确认兑换?沈静兵
确认,系统提示兑换成功,虚拟银行进账50金币,沈静兵看着银行中多出的50金币,跟系统说:这个金币可以兑换成现实世界的东西吗?
系统回答可以,那我要在兑换那个Java编程思想需要多少金币呢,系统答:500金币,沈静兵:你你你也他黑了,系统这个是你自愿的
沈静兵苦笑道:好吧,然后去了申请窗口,重新递上表格后跟工作人员说,我需要存入多少预存款呢,工作人员说:预存款最低50金币,
沈静兵这么多啊,工作人员询问:是否预存,沈静兵摆摆手存吧存吧,话毕,虚拟银行的50金币直接被扣除,沈静兵看着消失的50金币,
心想这个世界真TMD贵,扣钱扣的真TMD快啊,等我建立完我那个系统,我没事就多访问几次,多赚点钱要不啥都不是,这时候工作人员
从窗口中递出一个文件,对沈静兵说:拿着这个回去初始化你的世界时候输入账号密码就可以了,获取CODE与TOKEN等内容是固定的再见
沈静兵系统送我回去吧,随后传送门开启,沈静兵走入后回到了OAUTH2世界中,按照回执设定了了,OAUTH2世界初始化内容。
配置说明
spring:security:oauth2:client:registration:customa:#客户端IDclient-id: 3716504419831808#客户端密码client-secret: 123456scope: read,writeauthorization-grant-type: authorization_code#重定向地址注意:/login/oauth2/code/ 为固定格式code后可自定义redirect-uri: http://127.0.0.1:10011/sanctr/talrashas-brace-template/v1/login/oauth2/code/welcomeprovider:customa:#获取CODEauthorization-uri: http://localhost:9099/firebirds-plume/oauth2.0/authorize#获取TOKENtoken-uri: http://localhost:9099/firebirds-plume/oauth2.0/accessToken#刷新TOKENuser-info-uri: http://localhost:9099/firebirds-plume/oauth2.0/profileuser-name-attribute: idthymeleaf:cache: false
沈静兵终于创建完这个世界了,我来用下看看,对了我没定价呢,我这个世界进入系统每次10金币,嘿嘿,突然系统提示响起对不起
由于宿主创建的世界模块单一功能较少,系统被限定为每次进入最大上限10银币,当然随着宿主等级提高上限也可以进行重新划定,
沈静兵相当之无语,弱弱的问了一句,那个1金币等于多少银币啊,系统答,1金币等于1000银币,沈静兵!@##¥¥,国骂之后无奈的
说到那就10银币好了,系统回答设定完毕,沈静兵突然想到那只狗子出一次设定多少银币,系统回家旺财等级为P3级别,最大可设置
100银币,沈静兵这区别对待也太大了吧。。。沈静兵无奈的只能试试新世界的功能了,这个新世界貌似CODE可以直接获得并且直接能
取到TOKEN,这么强大。。。不错不错。先试试吧,沈静兵喊道启动世界,随后在一顿震动中,世界启动成功,沈静兵说来试试进入登录方法
系统达到已登录成功,沈静兵看着虚拟银行中多了10银币感叹了句,钱真难赚呀,沈静兵刚想说要试试退出功能,结果想起来狗子那设定100银币
退出一次,就弱弱的问了系统下,这个退出的钱由谁出,系统答你出。。。沈静兵拍拍胸脯还好我没退出嘿嘿,我就退出让狗子赚不到钱
系统说:服务端已经设定自动退出时间你及时不退出也会在48小时内强制给你退出的,到时候你的银币还是会被扣除,沈静兵那我钱你怎么扣除
系统说可以先扣掉,等你在赚取钱时候在从新赚的钱中扣除,沈静兵那我多登陆几次岂不是能很快赚钱,系统小姐姐这回很俏皮的说:退出
系统是要钱的哦,沈静兵擦忘了,现实中沈静兵眼睛精光一闪已经回来了,伸展了下懒腰,看了下屏幕上的时间,虽然在虚拟世界中呆了那么长
时间显示中其实刚过去1小时,这个OAUTH2随着系统世界建立完毕后,现实世界的代码也已经完成了,沈静兵心想这样写代码速度真不是盖的
以后都不用加班咯,就在沈静兵还沉浸到沾沾自喜中,秃头经理走过来说:小沈啊,刚接到上面通知,那个单点登录先不用了,说完转身走了
留下了一脸懵逼的沈静兵。
使用方法
示例
@Autowiredprivate OAuth2AuthorizedClientService authorizedClientService;@GetMapping("/welcome")public ResultDTO welcome(OAuth2AuthenticationToken authentication){OAuth2AuthorizedClient authorizedClient =this.authorizedClientService.loadAuthorizedClient(authentication.getAuthorizedClientRegistrationId(),authentication.getName());OAuth2AccessToken accessToken = authorizedClient.getAccessToken();System.out.println("获取TOKEN----"+accessToken.getTokenValue());System.out.println("获取PrincipalName----"+authorizedClient.getPrincipalName());System.out.println("获取用户信息----"+authentication.getPrincipal());return new ResultDTO(ErrorCodeEnum.SUCCESS, "欢迎登录");
}
- ##### 退出示例
```java@GetMapping("/xx/logout")public String logout(){System.out.println("logout---------------------已经注销");return "logout";}
重定向获取CODE
/*** @Description 重定向获取CODE* @Return ResultDTO* @Author 于洪波* @Date 2020/07/24*/// /login/oauth2/code/ 为固定值code后可任意写@GetMapping(value="/login/oauth2/code/welcome", produces = "application/json;charset=utf-8")public ResultDTO welcome(Model model) {return new ResultDTO(ErrorCodeEnum.SUCCESS, "欢迎光临");}
资源下载:https://download.csdn.net/download/yuhongbo0/12741863
分享请标明出处,谢谢
OAuth2客户端springsecurity5 - 神经病的缥缈之旅相关推荐
- 你知道吗?OAuth2客户端有两种,认证方式有七种。
OAuth2客户端按照它们与授权服务器进行安全认证的能力可以分为机密类型(Confidential)和公共类型(Public). 机密类型的自身会有个密码凭据,比如Web服务器后端程序:而公共类型则没 ...
- 定时器(@Scheduled)使用feign夸服务调用,Oauth2 客户端client_credentials模式
定时器(@Scheduled)使用feign夸服务调用,Oauth2 客户端client_credentials模式 应用场景 定时器(@Scheduled)使用feign夸服务调用(A-->B ...
- SpringBoot + Spring Security Oauth2 客户端授权
框架使用SpringBoot + Spring Security Oauth2 主要完成了客户端授权 可以通过mysql数据库读取当前客户端表信息进行验证,token存储在数据库中 1.引入依赖 ...
- OAuth2客户端明文和用户密码为密文
一.问题描述: 使用Spring-security-0Auth2:2.5.1 版本,进行用户认证时,一直出现问题: {"error": "invalid_client&q ...
- 从 ES 到 Kylin,斗鱼客户端性能分析平台进化之旅
一.背景 斗鱼是一家面向大众用户的在线直播平台,每天都有超大量的终端用户在使用斗鱼各客户端参与线上互动.伴随业务的迅猛发展,斗鱼需要对客户端采集到的性能数据进行统计和分析,开发出具有多维度分析图表和数 ...
- OAuth2的理解与客户端开发
目录 OAuth2 四种授权模式 授权码模式(常用)`code` 简化模式 `token` 密码模式 `password` 客户端模式 `client_credentials` OAuth2 标准接口 ...
- OAuth2授权客户端访问资源服务
OAuth客户端访问资源服务 一.简介 在单点登录一文,我们是通过注解@EnableOAuth2Sso实现单点登录的,我们了解到OAuth2获取token的方式是通过OAuth2RestOperati ...
- 使用Spring Security OAuth2实现单点登录(SSO)系统
一.单点登录SSO介绍 目前每家企业或者平台都存在不止一套系统,由于历史原因每套系统采购于不同厂商,所以系统间都是相互独立的,都有自己的用户鉴权认证体系,当用户进行登录系统时,不得不记住每套系统的 ...
- Spring boot使用Spring Security和OAuth2保护REST接口
在本文中,我将会演示SpringSecurity+OAuth2如何去保护SpringBoot上的RESTAPI端点,以及客户端和用户凭证如何存储在关系数据库中.因此,我们需要做到以下几点: 配置Spr ...
最新文章
- linux下查询端口,进程的状态以及netstat的参数意义
- mysql 主从同步不一致_涨知识!MySQL 主从同步原理原来是这样的
- Python2.7安装ncmbot时提示:Microsoft Visual C++9.0 is required
- 运筹学的课程笔记 markov decision process
- Linux下制作和使用静态库和动态库
- 自定义字符串查找函数c语言,(C语言自定义函数,/*编写函数实现在字符串pStr中查找子串pSub int subString( char* pStr, char* pSub);...
- Hello Blazor:(1)像ASP.NET WebForm一样写代码
- unlink(file_name)
- vs2012 编译cocos2d-x项目报error MSB3073
- 计算机培训实践反思模板,基于问题解决式课堂教学模式的反思
- [在线小说系统源码]精品微信小程序小说阅读器+后台管理系统|前后分离VUE[包运行成功]
- mysql身份证校验码_javascript身份证验证代码
- 【色彩管理】RGB色彩模式详解
- Windows下Python的安装与配置
- 安卓机顶盒安装软件教程
- 微信小程序 + 腾讯位置服务SDK 实现路线规划
- WIN11 TortoiseSVN 无论什么操作,都报同一个错误:请求的操作需要提升
- MysQL索引与事务
- C# http请求挂代理
- 总结了一套比较新的面试题挺全面的,多方面都有涉及到