Spring Cloud下基于OAUTH2认证授权的实现

Spring Cloud整合Spring Security Oauth2 OAuth 2.1作为一种开放标准,为微服务架构下的用户身份认证和授权提供了强有力的支持。它允许第三方应用获取用户在特定服务上的有限访问权限,而无需获取用户的用户名和密码。通过OAuth 2.1,企业可以构建安全、灵活的身份认证体系,实现用户身份的统一管理,确保服务间的数据安全和隐私保护。 阅读详情

Spring Cloud下基于OAUTH2认证授权的实现

使用oauth2实现微服统一认证授权。通过向oauth2认证服务器发送请求获取token。
,然后携带token访问其他微服务,此token在其他微服务是信任的(即是鉴权验证token是否可用)

模块:
eureka:服务注册和发现的基本模块
zuul:边界网关(所有微服务都在它之后)
oauth2: OAUTH2认证授权中心
service :普通微服务,用来验证认证和鉴权

在这里插入图片描述

1. oauth-server模块代码

1.1 添加基础pom.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>springcloud-oauth2</groupId>
    <artifactId>springcloud-oauth2</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>oauth-server</module>
        <module>api-gateway</module>
        <module>eureka</module>
        <module>provide-service</module>
    </modules>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.RELEASE</version>
    </parent>
    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <argLine>-Dfile.encoding=UTF-8</argLine>
        <skiptests>true</skiptests>
    </properties>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <!--<version>Dalston.SR4</version>-->
                <version>Finchley.SR2</version>

                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <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>
            <scope>test</scope>
        </dependency>

        <!--eureka客户端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!--aop-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

        <!--监控-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <!--断路器-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>

        <!--feign-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

        <!--<dependency>-->
            <!--<groupId>org.glassfish.jersey.core</groupId>-->
            <!--<artifactId>jersey-common</artifactId>-->
            <!--<version>2.26</version>-->
        <!--</dependency>-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.20</version>
        </dependency>
        
SpringCloud-OAuth2(一):基础篇 首先,OAuth不是API或服务它是开放的授权标准,任何人都可以实现。更具体地说,OAuth是应用程序可用于向客户端应用程序提供“安全委托访问”的标准。OAuth通过HTTPS进行工作,并使用访问令牌(而不是凭据)对设备,API,服务器和应用程序进行授权。什么是JWT?JSONWebToken(JWT)是⼀个开放的⾏业标准(RFC7519),它定义了⼀种简介的、⾃包含的协议格式,⽤于在通信双⽅传递json对象,传递的信息经过数字签名可以被验证和信任。JWT可以使⽤。... 阅读详情

相关推荐

SpringCloud微服务整合Spring Security OAuth2

要记得引入common后也要做必要的配置,比如nacos,相关配置可见博客:https://blog.youkuaiyun.com/qq_41076797/article/details/128509393、https://blog.youkuaiyun.com/qq_41076797/article/details/128508723;外面请求进来先通过网关进行身份认证,未登录的去登录,已登录的网关找到auth进行鉴权,通过才放行到具体的普通功能性微服务。代码会在后面给出,因为这段代码在后面的配置文件中。

lyy的博客 3811

纯硬货,Spring Cloud Gateway整合OAuth2.0 实现分布式统一认证授权

大家好,我是不才陈某~ 今天这篇文章介绍一下Spring Cloud Gateway整合OAuth2.0实现认证授权,涉及到的知识点有点多,有不清楚的可以看下陈某的往期文章。 文章目录如下: 微服务认证方案 微服务认证方案目前有很多种,每个企业也是大不相同,但是总体分为两类,如下: 网关只负责转发请求,认证鉴权交给每个微服务商控制 统一在网关层面认证鉴权,微服务只负责业务 你们公司目前用的是哪种方案? 先来说说第一种方案,有着很大的弊端,如下: 代码耦合严重,每个微服务都要维护一套认

m0_58008803的博客 741

【实战】Spring Cloud Gateway 整合 OAuth2.0 实现分布式统一认证授权

大家好 今天这篇文章小编介绍一下Spring Cloud Gateway整合OAuth2.0实现认证授权,涉及到的知识点有点多。 文章目录如下: 微服务认证方案 微服务认证方案目前有很多种,每个企业也是大不相同,但是总体分为两类,如下: 网关只负责转发请求,认证鉴权交给每个微服务控制 统一在网关层面认证鉴权,微服务只负责业务 你们公司目前用的哪种方案? 先来说说第一种方案,有着很大的弊端,如下: 代码耦合严重,每个微服务都要维护一套认证鉴权 无法做到统一认证鉴权,开发难度太大 第二种方

superjava_的博客 907

Spring Cloud Gateway整合OAuth2.0 实现分布式统一认证授权

今天这篇文章介绍一下Spring Cloud Gateway整合OAuth2.0实现认证授权,涉及到的知识点有点多,有不清楚的可以看下陈某的往期文章。 文章目录如下: 微服务认证方案 微服务认证方案目前有很多种,每个企业也是大不相同,但是总体分为两类,如下: 网关只负责转发请求,认证鉴权交给每个微服务商控制 统一在网关层面认证鉴权,微服务只负责业务 你们公司目前用的是哪种方案? 先来说说第一种方案,有着很大的弊端,如下: 代码耦合严重,每个微服务都要维护一套认证鉴权 无法做到统一认证鉴权

BUG指挥课堂 1万+

Spring Cloud 微服务安全:OAuth2 + JWT 实现认证与授权

随着微服务架构的普及,服务拆分带来的分布式特性对安全体系提出了更高要求。传统单体应用的认证授权模式(如 Session-Cookie)难以适应跨服务、跨平台的安全需求。如何实现微服务间的统一身份认证?如何通过开放标准协议(OAuth2)实现第三方接入安全?如何利用 JWT(JSON Web Token)实现无状态令牌管理?如何在 Spring Cloud 生态中整合认证服务与资源服务?核心概念:解析 OAuth2 协议与 JWT 技术的原理及结合点架构设计。

AI开发架构师 1027

Spring Cloud OAuth2认证授权实现详解

接下来,我们需要定义授权服务器的安全策略,以及如何使用Spring Security来保护我们的端点。通常,这涉及到扩展类,并重写其配置方法:@Autowired@Autowired@Override@Override以上代码片段演示了如何配置内存中客户端详情服务,其中定义了一个名为myclient的客户端,它具有特定的授权类型和作用域。此外,配置了授权服务器端点的安全策略,包括认证管理器和令牌服务。为了提供更好的用户体验和错误处理,可以自定义异常处理器。

weixin_36474966的博客 881

Spring Cloud Oauth2结合JWT实现认证授权的密码模式

OAuth2 是一个开放标准,允许用户授权第三方应用访问他们存储在其他服务提供者上的信息,而无需将用户名和密码提供给第三方应用。它广泛用于身份验证和授权流程,例如单点登录、第三方登录、API访问控制等场景。核心概念:资源拥有者:拥有资源的主体,通常是用户。客户端:需要访问资源的第三方应用程序。授权服务器:验证资源拥有者的身份并发放访问令牌的服务。资源服务器:托管受保护资源的服务器,验证客户端请求中携带的访问令牌。

weixin_35753291的博客 1155

BK3437蓝牙5.2芯片实战:手把手教你设计超低功耗智能家居遥控器(附原理图)

本文详细介绍了BK3437蓝牙5.2芯片在超低功耗智能家居遥控器设计中的应用。通过分析芯片的核心优势、硬件设计要点和低功耗固件策略,手把手教你实现日均功耗低于5μA的遥控器原型,并附有原理图设计详解和常见问题解决方案。

tgb34567890的博客 619

本地大模型部署实战:LM Studio与Ollama的易用性与性能深度评测

本文对两款主流本地大模型部署工具LM Studio和Ollama进行了深度评测。LM Studio凭借图形化界面和内置模型库,为新手提供了开箱即用的便捷体验,并支持OpenAI兼容API,易于生态集成。Ollama则以命令行驱动,轻量高效,凭借其原生API和Modelfile自定义能力,在自动化集成和性能方面表现突出。文章从易用性、模型生态、性能及扩展性多维度对比,帮助用户根据自身技术背景和使用场景做出最佳选择。

weixin_29039773的博客 527

LVGL在RTOS下的线程安全实践:从卡死到流畅的界面切换

本文探讨LVGL在RTOS环境下的线程安全实践,重点分析FreeRTOS多任务同步机制,包括互斥锁、任务通知和消息队列方案。通过实际案例展示如何避免界面卡顿和系统死锁,实现从卡死到流畅的界面切换,为嵌入式GUI开发提供可靠的适配解决方案。

uran的专栏 1111

C#报表,使用微软rdlc模板,生成Excel, PDF, Word, Image文件,使用自定义对象做数据集不连接数据库

我项目是用vs2017 建的,.NET farmwork 4.7.2 这种报表可以用于任何模式的应用,web,桌面,因为这只是生成一个文件或者文件流 步骤比较详细啰嗦,其中有讲到rdlc怎么新建设计,如果已经会设计rdlc了的可以直接跳到底部看代码的执行结果, 底部还有源码下载链接,百度盘 首先控制台安装报表包 新建rdlc 报表 建立rdlc里要用的数据模型 模型建完,或者修改都要重新...

qq_35955916的博客 5201

【Aseprite】制作Unity2D瓦片地图素材(平台游戏)

本文章用于记录用Aseprite软件制作2D平台游戏的瓦片地图的方法。

凡心所向,素履以往 5542

Nvidia Jetson AGX Orin 如何进入 Recovery Mode(刷机注意事项)

Jetson Orin 如何进入Recovery mode + 刷机注意事项

Pandako's Blog 1万+

【基础-单选】Row组件中有两个Text组件,如果使用justifyContent对齐方式,下面哪个属性可以实现左右两端对齐:

Row组件中有两个Text组件,如果使用justifyContent对齐方式,下面哪个属性可以实现左右两端对齐

江拥羡橙的博客 1302

SAP会计凭证导入ABAP开发模板+注意点—附带源码

开发并不仅仅只要考虑实现的功能,只实现功能的是程序,考虑到使用场景的是工程。使用bapi校验创建会计凭证的数据,报错和参数和正式创建一致。用途,防止产生错误的凭证,即使财务凭证可以冲销。正式创建会计凭证。隐藏的坑。

小九啥也不会 1232

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: redis 运维
下一篇: Spring事物
wflovejava
博客等级 码龄11年 23粉丝 46原创
评论 19
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值