SpringCloud+Gateway+Security 搭建微服务统一认证授权(附源码)

sping cloud gateway集成spring security实现前后端分离模式下的后端微服务认证授权 # 引言   由于目前网上大部分spring security的集成都是基于传统的spring servlet机制,而spring cloud gateway 采用webflux作为底层web技术支持,不支持servlet,笔者在集成的过程中走了很多弯路,所以特地写一篇spring cloud gatewaysecurity的集成实践博客,如有错误,欢迎指正。 Spring Security  ... 阅读详情

1 概述

SpringCloud Gateway Security oauth2.0 搭建微服务统一认证授权。

项目概述:

  • common:公用代码,实体、工具类等等…
  • gateway:网关
  • uaa:用户登录认证服务
  • school:微服务

环境概述:

  • SpringBoot 版本:2.3.1.RELEASE
  • SpringCloud版本:Hoxton.SR6
  • SpringCloudAlibaba:2.2.1.RELEASE
  • MybatisPlus:3.3.2

技能要求:

需要掌握SpringCloud 、SpringCloudAlibaba 基础使用,了解RBAC、OAuth2.0、JWT。

2 父工程

父工程pom依赖:

<?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>com.rosh</groupId>
    <artifactId>demo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>gateway</module>
        <module>uaa</module>
        <module>school</module>
        <module>common</module>
    </modules>
    <packaging>pom</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!--spring boot-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.3.1.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--spring cloud-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR6</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--spring cloud alibaba 2.1.0.RELEASE-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.1.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-collections4</artifactId>
            <version>4.2</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.71</version>
        </dependency>
    </dependencies>


    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

3 uaa认证服务搭建

3.1 pom依赖

<?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">
    <parent>
        <artifactId>demo</artifactId>
        <groupId>com.rosh</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>uaa</artifactId>

    <dependencies>
        <!--springboot && spring cloud-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
        <dependency>
            <groupId>o
SpringCloudGateWay+nacos+redis+springsecurity实现多微服务统一授权认证 之前做的大部分都是基于单体的springboot项目,对于权限这一块直接套用springsecurity就可以搞定了但是现在随着微服务分布式架构的流行,越来越多的项目都拆解成一个个的微服务,因此需要重构权限这一块,这里我采用的是在网关gateway层进行认证授权,根据认证结果以及角色来判断是否放行该请求:大致围绕下面三个需求:项目结构如图所示:登录认证授权等主要采用Spring security + redis+token机制,那么得首先配置WebSecurityConfig,这里看到的redis配置主要是 阅读详情

相关推荐

SpringCloud微服务整合Spring Security进行统一鉴权

有一个大坑,记得如果是单机操作多个微服务项目,要给每个微服务添加session cookie name,如下server : port : 8003 servlet : session : cookie : #防止 Cookie 冲突,冲突会导致登录验证不通过一定一定要做这一步。

lyy的博客 4638

Spring Cloud Gateway 整合 Spring Security 统一登录认证鉴权

1.本项目为SpringCloud Gateway微服务框架,整合了SpringSecurity微服务间使用Redis来获取登陆的用户信息。 2.由于Gat

springcloud+gateway(zuul)+springsecurity+jwt实现简单的认证授权

前段时间一直在研究微服务认证授权的方式,网上给了大致4种模式,感觉配置起来都不是很得心应手,偶然间看到了一个简单且较为完整的jwt+springsecurity的配置方式,这里先给出参考的github上的源码: https://github.com/shuaicj/zuul-auth-example 但跟着配置后,问题还是很多,套用到自己的微服务框架上还是有些难度. github工...

TextInfo的博客 5855

SpringCloud Gateway整合Spring Security实现用户权限管理

一、SpringCloud Gateway实现基本的服务转发、跨域处理等功能(默认实现了负载均衡) 一、网关基本概念 1、API网关介绍   API 网关出现的原因是微服务架构的出现,不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信,会有以下的问题: (1)客户端会多次请求不同的微服务,增加了客户端的复杂性。 (2)存在跨域请求,在一定场景下处理相对复杂。 (3)认证复杂,每个服务都需要独立认证。 (4)难以重构,随着项目的迭代

Java技术大联盟 3万+

Spring Cloud Gateway 整合Spring Security

做了一个Spring Cloud项目,网关采用 Spring Cloud Gateway,想要用 Spring Security 进行权限校验,由于 Spring Cloud Gateway 采用 webflux ,所以平时用的 mcv 配置是无效的,本文实现了 webflu 下的登陆校验。 1. Security配置 这里先贴出配置类,方便了解大致情况。 其中涉及到的三个处理器均为自定义 package com.shop.jz.gateway.security.config; import com.sh

Be Like 8446

SpringCloud + Gateway + Security 搭建微服务统一认证授权源码

大家好,我是东哥!1 概述SpringCloud Gateway Security oauth2.0 搭建微服务统一认证授权。项目概述:common:公用代码,实体、工具类等等…gateway:网关uaa:用户登录认证服务school:微服务环境概述:SpringBoot 版本:2.3.1.RELEASESpringCloud版本:Hoxton.SR6SpringClou...

Java精选 4266

SpringCloud+OAuth2+Spring Security+Redis+Jwt+Gateway/zuul实现的微服务统一认证授权

转载请表明出处 谢谢 SpringCloud+OAuth2+Spring Security+Redis+Jwt+zuul实现的微服务统一认证授权源码OAuth 2.0 简单介绍角色客户端的授权模式AuthorizationServer 授权服务接口介绍JWT 简介规范构成搭建zuul网关认证服务资源服务 源码 代码太多了,贴的不完整 ,可以看我上传到github里的☞☞ 源码 OAuth 2....

SophiaLeo的博客 2万+

Spring Cloud Gateway + Spring Security OAuth2 + JWT 实现统一认证授权和网关鉴权

本篇基于 Spring Cloud & Alibaba + OAuth2 微服务技术栈实现认证服务器认证授权和网关(代理资源服务器)统一鉴权的总结文档。

有来技术 7582

Spring gateway配置Spring Security实现统一权限验证与授权

在使用Spring Cloud 进行微服务,分布式开发时,网关是请求的第一入口,所以一般把客户端请求的权限验证统一放在网关进行认证与鉴权。因为Spring Cloud Gateway使用是基于WebFlux与Netty开发的,所以与传统的Servlet方式不同。而且网关一般不会直接请求数据库,不提供用户管理服务,所以如果想在网关处进行登陆验证与授权就需要做一些额外的开发了。 需求设求 众所周知,一...

王广帅--游戏开发-服务器开发 2万+

Spring Cloud实战 | 第六篇:Spring Cloud Gateway+ Spring Security OAuth2 + JWT实现微服务统一认证鉴权

一. 前言 本篇实战案例基于 youlai-mall 项目。项目使用的是当前主流和最新版本的技术和解决方案,自己不会太多华丽的言辞去描述,只希望能勾起大家对编程的一点喜欢。所以有兴趣的朋友可以进入 github | 码云了解下项目明细 ,有兴趣也可以一起研发。 微服务通过整合 Spirng Cloud GatewaySpring Security OAuth2、JWT 实现微服务统一认证授权。其中Spring Cloud Gateway作为OAuth2客户端,其他微服务提供资源服务给网关,交由网关来做

有来技术 9533

SpringCloud+SpringBoot+OAuth2+Spring Security+Redis实现的微服务统一认证授权

点击上方“Java基基”,选择“设为星标”做积极的人,而不是积极废人!每天14:00更新文章,每天掉亿点点头发...源码精品专栏原创 | Java 2021超神之路,很肝~中文详细...

weixin_44421461的博客 1379

SpringCloud+Spring Security+OAuth2 + JWT + Gateway讲解

项目简介 本登录系统是一个适应前后端分离并支持传统PC登录的全方位微服务登录架构 基于Spring Boot 2.2.8.、 Spring Cloud Hoxton.SR5 和 Spring Cloud Alibaba 2.2.1 深度定制Spring Security,基于RBAC(暂未实现)、jwt和oauth2的无状态统一权限认证的 单点登录、单点登出(暂未实现)、续签等功能(暂未实现) 提供C端多租户功能(暂未实现) 提供第三方被授权登录方式(openId方式) 提供供内部服务调用的OAuth2

lbjfish的博客 1万+

Spring Cloud实战 | 第六篇:Spring Cloud Gateway + Spring Security OAuth2 + JWT实现微服务统一认证授权鉴权

https://blog.51cto.com/u_12386660/4903483

竹林幽深 4531
上一篇: 让人上瘾的新一代开发神器,彻底告别Controller、Service、Dao
下一篇: SpringBoot+Vue+CAS 前后端分离实现单点登录方案
北游学Java
博客等级 码龄5年 689粉丝 117原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北游学Java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值