当前位置: 首页 > 知识库问答 >
问题:

在Spring启动微服务docker实现中,谷歌oaust2的重定向uri参数无效

芮念
2023-03-14

我使用spring stack(Spring Boot 2 . 0 . 0 . release)创建了一个网站,通过OAuth2将用户认证/注册委托给Google。它被实现为几个Spring Cloud微服务,带有一个运行在端口8080上的Zuul网关。

Google Auth Server


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

我使用谷歌作为一个OAuth2服务器,并使用sping-security-oaust2作为一个客户端,这是作为一个单独的微服务实现的。如果我所有的云都部署在localhost一切正常。但是如果我的微服务部署在不同的机器上,例如Docker,OAuth2登录不起作用。

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

共有1个答案

上官锦
2023-03-14

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

 类似资料:
  • 我有一个运行在Minikube中的应用程序,它可以像预期的那样与入口网关一起工作。调用spring boot应用程序,显示视图,并通过链接调用受保护的资源。呼叫被转发到Key斗篷,并通过登录掩码进行授权,受保护的资源按预期显示。 使用Istio时,重定向失败,并显示消息:“无效参数:重定向\u uri”。 我的Istio网关配置 我的虚拟服务配置 点击受保护的链接后,我在浏览器中得到以下URI:

  • [Edit-1]在oauth2配置中添加作用域,添加grafana服务,删除 : 我访问了Grafana,请求被路由到Keyclope 我已经搜索并尝试了一些建议,但它们对我不起作用。希望你们能帮忙。我真的很感激。 这是我的docker swarm配置:

  • 如何正确地将NGINX配置为keydove前面的代理? 询问 这是专门处理keydove位于反向代理后面的情况,例如nginx和nginx终止SSL并推送到keydove。这与keydape Invalid parameter:redirect_uri的问题不同,尽管它会产生相同的错误消息。

  • 问题内容: 码头工人给我一个困难时期。我按照以下说明进行操作,以便在运行由strato.de托管的Ubuntu 14.04的虚拟服务器上安装docker。 执行此行直接将我带入此错误消息: 安装完成后,我安装了上述两个软件包。现在我的问题是我无法让docker运行。 结果是: 结果是 和 结果是 有人对缺少哪些依赖项有任何线索吗?还有什么可能出问题了?码头工人是否提供任何日志? 我正在来回寻找解决

  • 以下是Azure文档的两个教程:https://docs.microsoft.com/en-us/azure/java/spring-framework/deploy-spring-boot-java-app-with-maven-plugin它展示了如何将一个简单的Spring Boot应用程序部署到Azure和https://docs.microsoft.com/en-us/azure/jav

  • 问题内容: 我一直在尝试 在Ubuntu 16.04上 使用 Docker(1.10), 但安装失败,因为 Docker Service无法启动 。我已经尝试通过 docker.io和docker -engine apt软件包安装 docker ,但是它不起作用。 我的 主机信息 是: 这里是 : 这是 这是 ./check- config.sh 输出: 如果有人可以帮助我,我将非常感激 问题答案