首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

需要在Spring Cloud Gateway路由中从OAuth2User获取认证用户名

在Spring Cloud Gateway路由中,可以通过OAuth2User来获取认证用户名。OAuth2User是Spring Security OAuth2提供的一个接口,用于表示OAuth2认证后的用户信息。它包含了用户的身份信息、权限信息等。

要在Spring Cloud Gateway路由中获取认证用户名,可以通过以下步骤实现:

  1. 配置Spring Security和OAuth2依赖:在项目的pom.xml文件中添加Spring Security和OAuth2的相关依赖。
  2. 配置OAuth2认证服务器:在项目的配置文件中配置OAuth2认证服务器的相关信息,包括认证服务器的URL、客户端ID、客户端密钥等。
  3. 创建路由配置类:创建一个路由配置类,继承自org.springframework.cloud.gateway.config.GatewayConfiguration类,并实现org.springframework.cloud.gateway.route.RouteLocator接口。在该类中,可以通过org.springframework.security.core.context.SecurityContextHolder类获取当前认证用户的信息。
  4. 配置路由规则:在路由配置类中,通过org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder类的routes()方法配置路由规则。可以使用org.springframework.cloud.gateway.handler.predicate.PathRoutePredicateFactory类的path()方法指定路由的路径,并使用org.springframework.cloud.gateway.handler.predicate.MethodRoutePredicateFactory类的method()方法指定请求的方法。在路由规则中,可以通过org.springframework.cloud.gateway.filter.factory.AddRequestHeaderGatewayFilterFactory类的addRequestHeader()方法添加请求头,将认证用户名传递给后端服务。
  5. 启动应用程序:启动应用程序,并访问配置的路由路径。当请求经过Spring Cloud Gateway路由时,会从OAuth2认证服务器获取认证用户的信息,并将认证用户名传递给后端服务。

以下是一个示例的路由配置类的代码:

代码语言:txt
复制
@Configuration
public class GatewayConfig extends GatewayConfiguration implements RouteLocator {
    
    @Override
    public void afterPropertiesSet() throws Exception {
        // Configure routes
        routes()
            .route(r -> r.path("/api/**")
                .and().method(HttpMethod.GET)
                .filters(f -> f.addRequestHeader("X-Auth-Username", getUsername()))
                .uri("http://backend-service"))
            .build();
    }
    
    private String getUsername() {
        OAuth2User user = (OAuth2User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        return user.getAttribute("username");
    }
}

在上述示例中,配置了一个路由规则,当请求路径为/api/**且请求方法为GET时,会将认证用户名添加到请求头中,并将请求转发到http://backend-service后端服务。

请注意,以上示例仅为演示目的,实际应用中还需要根据具体情况进行配置和调整。

推荐的腾讯云相关产品:腾讯云API网关(API Gateway),它是一种全托管的API管理服务,可用于构建、部署和管理API。您可以通过腾讯云API网关来实现路由、认证、限流、监控等功能。了解更多信息,请访问腾讯云API网关产品介绍页面:腾讯云API网关

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

微服务 Token 鉴权设计的几种方案

换句话说:B服务提供API时不因该关心当前是否为登录状态,登录状态应该由路由中的第一个服务校验维护,在调用后续服务时应该显示的传入相关参数。...统一授权 统一授权是指:将API鉴权集中在应用网关上 Fegin内部调用方式 Spring Cloud Gateway + Fegin内部调用,集中在Gateway上做统一认证鉴权,鉴权后在请求头中添加鉴权后的信息转发给后续服务...Cloud Gateway + Dubbo内部调用,集中在Gateway上做统一认证鉴权,鉴权后在请求头中添加鉴权后的信息转发给后续服务,如:userId等。。。...Spring Boot Web + Dubbo内部调用方式 这里的设计方案直接去掉了Gateway,直接使用了一个Spring Boot Web项目来代替Gateway。...我们先看常规模式部署在K8S中完整的链: 当用户访问时会先到达K8S Ingress网关通过应用网关Service的负载均衡调用应用网关,应用网关需要通过注册中心获取服务注册列表,通过服务注册列表负载均衡到后续服务

42210

开箱即用!看看人家的微服务权限解决方案,那叫一个优雅!

记得之前写过一篇文章微服务权限终极解决方案,Spring Cloud Gateway + Oauth2 实现统一认证和鉴权!...Spring Cloud Gateway:新一代API网关服务 Spring Cloud Alibaba:Nacos 作为注册中心和配置中心使用 微服务权限终极解决方案,Spring Cloud Gateway...Session,直接Session中获取即可,是不是非常简单!...:9201/api/user/info 通过网关访问API服务,带Token调用获取用户信息的接口,可以正常访问; 通过网关访问API服务,使用macro用户访问api:test:hello权限的测试接口...而使用Sa-Token,只要在网关上配置过滤器实现认证和授权,然后调用API实现登录及权限分配即可。具体区别可以参考下图。

2K31
  • Spring Cloud Gateway夺命连环10问?

    Gateway 的Filter作用范围可分为两种: GatewayFilter:应用到单个路由或者一个分组的路由上(需要在配置文件中配置)。...GlobalFilter:应用到所有的路由上(无需配置,全局生效) GatewayFilter(局部过滤器) Spring Cloud Gateway中内置了许多的局部过滤器,如下图: 局部过滤器需要在指定路由配置才能生效...private boolean enabled; } } 局部过滤器需要在由中配置才能生效,配置如下: spring: cloud: gateway:...: ## id只要唯一即可,名称任意 - id: gateway-provider_1 ## 使用了lb形式,注册中心负载均衡的获取uri...网关的基本功能 如何零搭建一个微服务网关 Predict(断言)的概念 过滤器的概念、Spring Cloud Gateway内置的过滤器以及如何自定义 如何集成Nacos注册中心并且实现负载均衡 如何集成

    47110

    放弃密码模式吧,最先进的Spring Cloud认证授权方案在这里

    ③授权服务器Id Server收到授权请求重定向到用户登录页面要求用户登录认证,以发起授权。 ④用户输入用户名密码进行登录认证。...具体实现 根据上面的方案,我们需要三个应用,分别是网关Spring Cloud Gateway应用、资源服务器应用Resource Server和OAuth2授权服务器Id Server。...Spring Cloud Gateway Spring Cloud Gateway 应用,端口8080,它不仅仅是一个网关还是一个在授权服务器Id Server注册的OAuth2客户端,通过Id Server...输入用户名密码user/user。 能查看到认证信息就证明成功了,再次重申,在生产中该信息十分敏感,不应该直接对前端暴露。...总结 通过OAuth2客户端、Spring Cloud Gateway、OAuth2授权服务器、OAuth2资源服务器的联动,你会发现授权码模式也可以实现完整的微服务认证授权,而且比密码模式更加安全。

    1.7K20

    Spring Cloud Gateway 没有链信息,我 TM 人傻了(上)

    Cloud Sleuth 如何在 Spring Cloud Gateway 加入的链追踪以及为何会出现这个问题 下:现有 Spring Cloud Sleuth 的非侵入设计带来的性能问题,其他可能的问题点...,以及如何解决 我们的网关使用的是 Spring Cloud Gateway,并且加入了 spring-cloud-sleuth 的依赖,用于链追踪。...Spring Cloud Gateway 的基本流程与实现 首先简单介绍一下 Spring Cloud Gateway 的基本结构,以及 Spring Cloud Sleuth 是如何在其中嵌入链追踪相关代码的...加入 Spring Cloud Sleuth 以及 Prometheus 相关依赖之后, Spring Cloud Gateway 的处理流程如下所示: Spring Cloud Gateway 是基于...但是可以看出,如果你在 Spring Cloud Gateway 中指定 RequestMapping 路径,会优先于 Spring Cloud Gateway 配置路由。

    1.5K20

    SpringCloud——分布式为什么越来越热门

    配置中心 Spring Cloud Config可以将应用程序的配置代码中分离出来,并提供一个中心化的配置管理系统。在运行时,应用程序会配置中心获取需要的配置信息。...在运行时,应用程序会配置中心获取需要的配置信息,以便进行初始化和启动。...2.2.3 创建客户端应用程序 最后,我们需要创建一个客户端应用程序,用于配置中心获取配置信息。...通过这种方式,我们可以实现简单的用户名/密码认证。...8.2.3 UserDetailsService接口 这个接口定义了用户详情加载的基本行为,包括根据用户名查找用户、获取用户角色等。我们可以通过实现这个接口来自定义用户认证逻辑。

    13610

    深入Java微服务之网关系列2:常见Java网关实现方案对比

    今天我们就先了解一下微服务网关,微服务网关有很多种我们这次采用现在主流的spring cloud gateway来讲解说明。...所以我们在网关层进行统一的处理认证: [format,png] 日志记录 当客户端请求进来之后我们需要记录当前请求的时间依赖来源地址,ip等信息,这样我们就可以统一的在网关层面上进行拦截获取,之后输出到日志文件中通过...spring-cloud-gateway-service1  这个是一个微服务 Spring-cloud-gateway-wangguan  网关微服务 我们根据以前专题创建了2个服务第一个服务我们添加一个...Spring Cloud Gateway 提供了 Endpoint 端点,暴露路由信息,有获取所有路由、刷新路由、查看单个路由、删除路由等方法,具体实现类org.springframework.cloud.gateway.actuate.GatewayControllerEndpoint...其实整个spring cloud gatewayspring cloud alibaba整合的很好,可以与nacos整合可以与sentinel整合进行限流,这个后期我们单独进行讲解。

    1.2K20

    基于Redis实现Spring Cloud Gateway的动态管理

    转载本文注明出处:微信公众号EAWorld,违者必究。 引言: Spring Cloud Gateway是当前使用非常广泛的一种API网关。...Spring Cloud Gateway Spring Cloud GatewaySpring官方基于Spring 5.0,Spring Boot 2.0和Project Reactor等技术开发的网关...,Spring Cloud Gateway旨在为微服务架构提供一种简单而有效的统一的API路由管理方式。...Spring Cloud Gateway作为Spring Cloud生态系中的网关,目标是替代Netflix ZUUL,其不仅提供统一的路由方式,并且基于Filter链的方式提供了网关基本的功能,例如:...Cloud Gateway作为所有请求流量的入口,在实际生产环境中为了保证高可靠和高可用,尽量避免重启, 需要实现Spring Cloud Gateway动态路由配置。

    1.8K20

    API管理的正确姿势--API Gateway

    不过,待Spring cloud F版GA后,建议多关注下Spring Cloud Gateway。...答:如果基于Spring cloud的话,还是建议使用Spring cloud自带的Zuul,能大量减少我们对spring cloud体系下微服务治理方案的集成时间。...问3:Zuul 是 spring cloud 的apigetway 组件吗? 答:目前,spring cloud GA版(最新为Edgware)的API Gateway组件为Zuul。...这里需要说明下,不是微服务auth server获取用户信息,而是微服务auth sever获取jwk,通过jwk解密请求中JWT来获取信息,进行用户信息权限校验。...问7:用spring cloud的话,是不是可以用zuul整合spring cloud oauth2认证授权中心服务,所有涉及获取token、刷新token、校验token的操作都在zuul上处理,后端业务服务不与认证授权中心做任何耦合呢

    3.8K21

    微服务网关组件 - Spring Cloud Gateway(二十二)

    这样的话,我们就可以解决上面提到的问题,同时开发就可以得到相应的简化,还可以有如下优点: 减少客户端与微服务之间的调用次数,提高效率 便于监控,可在网关中监控数据,可以做统一切面任务处理 便于认证,只需要在网关进行认证即可...而在目前的网关解决方案里,有Nginx+ Lua、Spring Cloud Zuul以及Spring Cloud Gateway等等。这里以Spring Cloud Gateway为例进行说明。...Spring Cloud Gateway简介 Spring Cloud GatewaySpring Cloud体系的第二代网关组件,基于Spring 5.0的新特性WebFlux进行开发,底层网络通信框架使用的是...Boot 1.x,2.0及更高的版本 核心概念 Route(路由) Spring Cloud Gateway的基础元素,可简单理解成一条转发规则。...Gateway架构图 Spring Cloud Gateway架构图 流程介绍: Gateway Client发送请求给Spring Cloud GatewayGateway Handler

    62510

    搞定Mall项目中的权限管理功能,弄懂这些问题就妥了!

    移动端只实现了登录认证,暂时不做权限处理。 在管理后台添加了一个菜单,为什么前端没有显示? 只有在前端路由中配置了的菜单,在管理后台添加后才会显示,否则没有效果。 ?...具体可以参考:《微服务权限终极解决方案,Spring Cloud Gateway + Oauth2 实现统一认证和鉴权!》 mall和mall-swarm项目中权限管理的实现有何不同?...mall-swarm项目实现方式是Oauth2+Gateway,采用的是统一的认证和鉴权,mall-swarm中的其他模块只需关注自己的相关业务,而无需依赖任何安全工具包,更加适合微服务架构。...如何访问需要登录的接口,先调用认证中心接口获取token,不同体系下的用户需要传入不同的client_id和client_secret,后台用户为admin-app:123456,前台用户为portal-app...当然对原来的登录接口也做了兼容处理,分别会内部调用认证中心获取Token,依然可以使用。

    1.7K10

    Spring Security 6.x OAuth2登录认证源码分析

    上一篇介绍了Spring Security框架中身份认证的架构设计,本篇就OAuth2客户端登录认证的实现源码做一些分析。...JavaScript脚本内发起授权请求,有令牌泄露的风险,安全性一般,另外也不支持refreshToken资源属主密码模式(Resource Owner Password Credentials Grant):用户需要在第三方应用中输入用户名和密码...二、OAuth2登录认证Spring Security集成了国外几个OAuth2认证服务商的默认实现,包括Google, GitHub, Facebook, 以及Okta,下面以Github为例,说明OAuth2...Security框架中,使用了32位长度的Base64编码生成算法,而redirect_uri则表示期望OAuth2服务端在通过验证后重定向到本系统的地址,以便响应中获取code之后发起认证,当然这个...:访问受保护资源上文提到,需要请求OAuth2服务端获取用户信息,用户信息是服务端保护的资源,包含了在Github中个人账号的各类属性,例如id,用户名,头像,主页地址等等,因此这里需要携带AccessToken

    28710
    领券