gpt4 book ai didi

spring-boot - spring boot 微服务 docker 实现中 google oauth2 的无效重定向 uri 参数

转载 作者:行者123 更新时间:2023-12-05 07:21:07 25 4
gpt4 key购买 nike

我正在使用 spring stack (Spring Boot 2.0.0.RELEASE) 创建一个站点,该站点通过 OAuth2 将用户身份验证/注册委托(delegate)给 Google。它作为一些 Spring Cloud 微服务实现,Zuul 网关在端口 8080 上运行。

Google Auth Server


Zuul Gateway(:8080)
/ \
/ \
/ \
Other OAuth2 Client Microservice(:8000)
Microservices

我使用Google作为OAuth2服务器,使用spring-security-oauth2作为客户端,作为一个独立的微服务实现。如果我所有的云都部署在本地主机上,一切正常。但是如果我的微服务部署在不同的机器上,例如Docker、OAuth2 登录不起作用。获取无效的重定向 Uri 参数错误。

Docker 的 Zuul 配置:

  zuul:
ignoredServices: '*'
host:
connection-timeout-millis: 20000
socket-timeout-millis: 20000 routes:
authserver_oauth:
path: /oauth2/**
serviceId: authserver
stripPrefix: false
sensitiveHeaders:

Docker 的 Eureka 配置:

eureka:
instance:
prefer-ip-address: false
client:
serviceUrl:
defaultZone: http://eureka-server:8761/eureka/

授权服务器配置:

spring:
security:
oauth2:
client:
registration:
google:
clientId: ***
clientSecret: ***
redirectUriTemplate: "{baseUrl}/oauth2/callback/{registrationId}"
scope:
- email
- profile

当我针对 Oauth2 条件进行调试时,我得到的请求和响应的 uri 不相等:

   authorizationResponse.getRedirectUri()
(java.lang.String) http://authserver:8080/oauth2/callback/google
authorizationRequest.getRedirectUri()
(java.lang.String) http://localhost:8080/oauth2/callback/google

最佳答案

我在使用云环境(NGINX、Docker、Cubernettes)的 Spring boot 2.2.2RELEASE 时遇到了类似的问题,其中根本无法自定义 NGINX 配置。尝试过设置 x-forwarded-for 属性、使用 docker 模拟 prod、NGINX 设置 (https://juplo.de/how-to-redirect-to-spring-security-oauth2-behind-a-gateway-proxy-hiding-the-app-behind-a-reverse-proxy-gateway/) 等方法,但没有任何效果。最后,我将我的 Spring boot 版本更新为 2.4.1,它无需任何其他配置即可运行。

关于spring-boot - spring boot 微服务 docker 实现中 google oauth2 的无效重定向 uri 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57070948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com