OAuth2代码流程演示

news2024/11/19 20:18:20

目录

一,创建项目

二,项目结构


一,创建项目

新建项目时,如果换了工作区间我们一定要记得改maven地址,不然下载插件时不仅占用C盘内存,还会下载的很慢。

导入项目

 导入新项目后就会下载新的插件,一定记得换maven地址,注意这里换了maven地址后,下载的插件还是下载到默认地址,这个时候我们重启开发工具即可

项目导入成功后如图

结构说明:

 

 

 流程:以上篇博客是一样的,这里我们只是用代码的方式更熟悉的了解OAuth2

客户向资源所有者申请授权码
资源所有者下发授权码
客户拿到授权码后向认证服务器申请令牌
认证服务器接到申请下方令牌
客户获取令牌后向资源服务器请求数据

二,项目结构

 补充:

以上标记的标签:作用是为了锁定整个微服务项目的版本,父工程有子模块则需重新导入

如父工程没有子模块就不需要导入对应的依赖

按照流程的顺序看一下每个模块的结构

客户
创建 springboot 项目,加入配置必要的依赖包
<dependencies>
<dependency>
<groupId>org.apache.oltu.oauth2</groupId>
<artifactId>org.apache.oltu.oauth2.client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
application.yml
spring:
application:
name: OAuth2-client
server:
port: 8080
认证服务器
pom.xml
<dependencies>

        <dependency>
            <groupId>org.apache.oltu.oauth2</groupId>
            <artifactId>org.apache.oltu.oauth2.authzserver</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.oltu.oauth2</groupId>
            <artifactId>org.apache.oltu.oauth2.resourceserver</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

    </dependencies>
application.yml
spring:
  application:
    name: OAuth2-authorization-server

server:
  port: 8081
资源拥有者
pom.xml
 <dependencies>

        <dependency>
            <groupId>org.apache.oltu.oauth2</groupId>
            <artifactId>org.apache.oltu.oauth2.authzserver</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.oltu.oauth2</groupId>
            <artifactId>org.apache.oltu.oauth2.resourceserver</artifactId>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

    </dependencies>

application.yml

spring:
  application:
    name: OAuth2-resource-owner

server:
  port: 8082
资源服务器
<dependencies>

        <dependency>
            <groupId>org.apache.oltu.oauth2</groupId>
            <artifactId>org.apache.oltu.oauth2.authzserver</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.oltu.oauth2</groupId>
            <artifactId>org.apache.oltu.oauth2.resourceserver</artifactId>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

    </dependencies>

application.yml

spring:
  application:
    name: oauth2-resource-server

server:
  port: 8083

启动项目
全选然后debug
访问流程
资源所有者
资源所有者接到客户的请求,需要返回授权码
 
客户
编写一个 controller ,向资源所有者发送请求来获取授权码
  客户
资源所有者生成授权码后,需要回调客户的一个接口,将授权码传回, 客户得到授权码后,需要向认证
服务器发出请求,申请令牌
认证服务器
认证服务器接到客户请求,生成令牌,并返回令牌数据
客户
客户获取了令牌,并使用令牌向资源服务器请求数据
 
资源服务器
资源服务器接到请求,返回数据

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/191506.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

消息队列简介

提高系统性能首先考虑的是数据库的优化&#xff0c;之前一篇文章《数据库的使用你可能忽略了这些》中有提到过开发中&#xff0c;针对数据库需要注意的事项。但是数据库因为历史原因&#xff0c;横向扩展是一件非常复杂的工程&#xff0c;所有我们一般会尽量把流量都挡在数据库…

Unity可用 运行时语音合成(文本转语音)插件 RT-Voice PRO

Unity语音合成文本转语音插件 RT-Voice PRO前言一、导入RT-Voice PRO插件二、使用步骤1.先看自带例子&#xff08;01-Speech&#xff09;2.自行配置总结前言 提示&#xff1a;这个插件在Unity Asset Store 卖 78美刀,确实买不起啊。 &#x1f602; AssetStore下载链接 文章最后…

复试数据结构篇[第5章-第6章]

文章目录第五章 数组和广义表1-数组定义2-数组的顺序表示3-矩阵的压缩存储&#xff08;1&#xff09;对称矩阵和三角矩阵&#xff08;2&#xff09;对角矩阵&#xff08;3&#xff09;稀疏矩阵&#xff08;3&#xff09;十字链表4-广义表的定义串、数组、广义表小结第六章 树与…

JVM的类加载

什么是类加载&#xff1f;java程序运行前&#xff0c;要经过编译即.java>.class文件。运行的时候java进程(JVM)就会读取对应的.class文件&#xff0c;并解析内容&#xff0c;在内存中构造出类对象并进行初始化&#xff08;类对象就是描述这个类有哪些属性&#xff0c;哪些方…

基于卡尔曼滤波器的PID控制-3

基于卡尔曼滤波器的PID控制系统结构如图1所示。图1 基于卡尔曼滤波器的PID控制被控对象为二阶传递函数&#xff1a;离散化结果与“基于卡尔曼滤波器的PID控制-1”的仿真实例相同。采样时间为1ms。控制干扰信号w(k)和测量噪声信号v(k)幅值均为0.002的白噪声信号&#xff0c;输入…

Python中最全的窗口操作,如窗口最大化、最小化、窗口置顶、获取缩放比例等

Python窗口操作 前言 本文记录在Python中操作Windows应用窗口的操作。 这里的操作都是自己摸索借助强大的搜索引擎整理出来的&#xff0c;我真棒&#xff01;&#xff01;&#xff01; 知识点&#x1f4d6;&#x1f4d6; 名称解释名称ctypes****ctypesPython的外部函数库。它…

高阶导数——“高等数学”

各位CSDN的uu们你们好呀&#xff0c;今天&#xff0c;小雅兰的内容是高阶导数&#xff0c;在这之前&#xff0c;我们学习了导数的概念和函数的求导法则&#xff0c;那么今天&#xff0c;就让我们一起进入高阶导数的世界吧 一、高阶导数的定义 二、高阶导数的计算 1.直接法 2.间…

儿童护眼台灯如何选择?2023年儿童护眼台灯推荐

随着科技不断发展&#xff0c;生活方式的改变&#xff0c;各类的电子产品的使用&#xff0c;加上不注意保护视力、过度用眼等&#xff0c;我国儿童青少年的近视率出现上升趋势&#xff0c;为了保护孩子们的健康&#xff0c;护眼台灯受到许多家庭的青睐&#xff0c;那么儿童的护…

[个人备忘]go包管理

版本 1.18创作目的: 之前想要在go的项目里引用另一个自己写的项目, 然后被折磨半天,乃至弃坑1,创建项目我们创建目录gogogo,下面有两个项目: 分别创建main.goutils/main.gopackage utils import "fmt" // 大写才能被外部访问 func Log(){fmt.Print("go mod is s…

Postman 实现备份数据 Postman恢复数据 postman 导出导入数据 postman 导入导出数据

Postman 实现备份数据 Postman恢复数据 postman 导出导入数据 postman 导入导出数据 一、需求描述 在使用postman调试接口时&#xff0c;若遇到内网的环境&#xff0c;无法通过账户同步数据&#xff1b; 在A电脑调试的接口数据&#xff0c;需要移动到B电脑上&#xff0c;如何实…

python第三方库的离线安装与自动安装脚本(以flask为例 Ubuntu18.04系统)

1.第三方库安装方式 1.1 pip 安装 以flask为例&#xff0c;使用指令 pip install flask即可安装 其他选项&#xff1a; install 安装库 uninstall 卸载库 list 列出已经安装的库 show 列出已安装的库的详细信息 search 通过PyPI搜索库 help 帮助命令1.2 源码安装 官网获取…

SpringBoot整合Shiro

简介Shiro是一个功能强大和易于使用的Java安全框架&#xff0c;为开发人员提供一个直观而全面的解决方案的认证&#xff0c;授权&#xff0c;加密&#xff0c;会话管理。Shiro 四个主要的功能&#xff1a;Authentication&#xff1a;身份认证/登录&#xff0c;验证用户是不是拥…

kubernetes -- 删除namespace的过程以及遇到的bug解决

通过阅读本篇文章你可以收获如下知识&#xff1a; 解决一个bug。理解k8s的controller中&#xff0c;删除namespace的源码&#xff0c;理解其中的删除过程。 问题 执行kubectl delete ns {ns-name}命令来删除ns-name的时候&#xff0c;发现状态一直停留在Terminating。 [roo…

2023牛客寒假算法基础集训营5

(0条未读通知) 【题解】2023牛客寒假算法基础集训营5_ICPC/CCPC/NOIP/NOI刷题训练题单_牛客竞赛OJ (nowcoder.com) A-小沙の好客 下面是错误代码&#xff0c;我刚开始看到这题&#xff0c;觉得很简单阿&#xff0c;做了才知道&#xff0c;会超时&#xff0c;所以不能单纯的去做…

Mac电脑运行速度又卡又慢如何解决?CleanMyMacX2023最新版

CleanMyMac X为您喜爱的东西腾出空间。体验一系列巧妙的新功能&#xff0c;CleanMyMac可让您安全智能地扫描和清理整个系统&#xff0c;删除大量未使用的文件&#xff0c;缩小iPhoto图库的大小&#xff0c;卸载不需要的应用程序或修复不正常工作的应用程序&#xff0c;管理所有…

ARM异常处理

1.ARM异常源1.1 异常模式2.ARM异常响应CPSR内存储的是当前模式。2.1 异常向量表每个异常源只有四个字节的存储空间&#xff0c;所以不在向量表中写异常处理程序&#xff0c;而是写跳转指令。2.2 IRQ异常举例

产业互联网曾被认为是一个生搬硬凑出来的概念

有关产业互联网的质疑&#xff0c;依然还在耳畔会响。但&#xff0c;我们却无可避免地进入到了产业互联网的周期里。这听上去有些耸人听闻&#xff0c;却在真实地发生着。曾经&#xff0c;产业互联网被认为是一个生搬硬凑出来的概念&#xff0c;甚至还有人认为&#xff0c;它仅…

垃圾渗滤液膜后稳定出水水质稳定工艺

垃圾渗滤液的来源及水质特点 垃圾渗滤液是垃圾在堆放和填埋过程中由于发酵和雨水的淋洗、冲刷以及地表地下水的浸泡出来的污水。 当垃圾堆体的湿度超过其持水能力后&#xff0c;垃圾堆体内悬浮的或溶解的有机污染物和重金属等无机污染物将会随之一块溶出&#xff0c;便会产生渗…

大学生需要配备什么电子产品、上大学必备电子产品推荐清单

又是一年开学季&#xff0c;最近我们这里的中小学已经陆陆续续通知开学了。大学生正式开学还需要一段时间&#xff0c;作为大学生在入学之前&#xff0c;一定要准备好各种学习和生活物资。对于大学生而言&#xff0c;有大把的时间可以用来快活&#xff0c;而现在数码产品又成为…

中国电子学会2022年06月份青少年软件编程Scratch图形化等级考试试卷四级真题(含答案)

2022-06 Scratch四级真题 分数&#xff1a;100 题数&#xff1a;29 测试时长&#xff1a;100min 一、单选题(共15题&#xff0c;共30分) 1.执行下列程序&#xff0c;说的内容是&#xff1f;&#xff08;D&#xff09;(2分) A.使 B.命 C.初 D.心 答案解析&#xff1a;注…