Spring Cloud Gateway 和 TokenRelay 过滤器

2023-12-30

我正在尝试将 JHipster 从使用 Zuul 迁移到 Spring Cloud Gateway。 JHipster 使用 Eureka 来查找路由,我相信我已经正确配置了 Spring Cloud Gateway 来查找路由并将访问令牌传播给它们。这是我的配置:

spring:
  cloud:
    gateway:
      default-filters:
        - TokenRelay
      discovery:
        locator:
          enabled: true
          lower-case-service-id: true
          route-id-prefix: /services/
      httpclient:
        pool:
          max-connections: 1000

我遇到的问题是访问令牌没有发送Authorization标头到下游服务。

以下是我的 Zuul 的配置方式application.yml:

zuul: # those values must be configured depending on the application specific needs
  sensitive-headers: Cookie,Set-Cookie #see https://github.com/spring-cloud/spring-cloud-netflix/issues/3126
  host:
    max-total-connections: 1000
    max-per-route-connections: 100
  prefix: /services
  semaphore:
    max-semaphores: 500

我创建了一个拉取请求来显示集成 Spring Cloud Gateway 后发生的变化。

https://github.com/mraible/jhipster-reactive-microservices-oauth2/pull/4 https://github.com/mraible/jhipster-reactive-microservices-oauth2/pull/4

重现问题的步骤:

git clone -b reactive gi[email protected] /cdn-cgi/l/email-protection:mraible/jhipster-reactive-microservices-oauth2.git

启动 JHipsterRegistry、Keycloak 和网关应用程序:

cd jhipster-reactive-microservices-oauth2/gateway
docker-compose -f src/main/docker/jhipster-registry.yml up -d
docker-compose -f src/main/docker/keycloak.yml up -d
./mvnw

启动 MongoDB 和博客应用程序:

cd ../blog
docker-compose -f src/main/docker/mongodb.yml up -d
./mvnw

导航http://本地主机:8080 http://localhost:8080在您的浏览器中,使用以下命令登录admin/admin,并尝试去Entities > Blog。您将收到 403 访问被拒绝错误。如果您在 Chrome 开发者工具中查看网络流量,您会发现访问令牌不包含在任何标头中。


我能够使用解决这个问题这个答案 https://stackoverflow.com/a/54114682/65681.

spring:
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
          predicates:
            - name: Path
              args:
                pattern: "'/services/'+serviceId.toLowerCase()+'/**'"
          filters:
            - name: RewritePath
              args:
                regexp: "'/services/' + serviceId.toLowerCase() + '/(?<remaining>.*)'"
                replacement: "'/${remaining}'"

我还必须添加.pathMatchers("/services/**").authenticated()我的安全配置,Zuul 不需要。你可以看到我的在这里提交 https://github.com/mraible/jhipster-reactive-microservices-oauth2/pull/4/commits/79a09497e6907fafa8bb141b4feb4736ab3afc23.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Cloud Gateway 和 TokenRelay 过滤器 的相关文章

  • Access / Word 2010 VBA 邮件合并尝试打开 [文件夹名称].mdb 而不是 ACCDB 源

    我们正在尝试从 Access 中自动执行邮件合并过程 单击按钮后 VBA 将运行指定当前数据库 accdb 作为数据源并运行 SQL 具体代码如下 Set up Word Dim objWord As Object Set objWord
  • 在哪里存储 Java 的 .properties 文件?

    The Java教程 http download oracle com javase tutorial essential environment properties htmlon using Properties 讨论如何使用 Prop
  • 没有 OAuth 的 Spring Security JWT

    最近我开始学习如何使用oauth 2 0 jwt配置spring boot 我有一个问题 是否可以使用spring boot security jwt避免oauth 2 0 是的 可以使用JWT无需使用标准化的功能OAuth 2 0 flo
  • 闪亮井板宽度

    library shiny library shinydashboard ui lt dashboardPage dashboardHeader dashboardSidebar dashboardBody wellPanel tags d
  • 使用 crypt() 加密

    我目前正在做一个非常安全的登录系统 但我是 crypt 函数的新手 需要一些快速帮助 我在注册过程中使用 crypt 加密密码字符串并将其保存到数据库中 但是 我如何在登录过程中解密密钥 或者我应该怎么做 或者是否可以对提交的密码字符串进行
  • 带重定向标准流的 C# + telnet 进程立即退出

    我正在尝试用 C 做一个 脚本化 telnet 项目 有点类似于Tcl期望 http expect nist gov 我需要为其启动 telnet 进程并重定向 和处理 其 stdin stdout 流 问题是 生成的 telnet 进程在
  • 您可以使用关键字参数而不提供默认值吗?

    我习惯于在 Python 中使用这样的函数 方法定义 def my function arg1 None arg2 default do stuff here 如果我不供应arg1 or arg2 那么默认值None or default
  • Scrapy Spider不存储状态(持久状态)

    您好 有一个基本的蜘蛛 可以运行以获取给定域上的所有链接 我想确保它保持其状态 以便它可以从离开的位置恢复 我已按照给定的网址进行操作http doc scrapy org en latest topics jobs html http d
  • 在 Android 中使用 iText 将图像添加到特定位置

    我想使用 Android 中的 iText 将图像添加到 PDF 文件中的特定位置 这是一个可填写的表单 我添加了作为图像占位符的文本框 我想要做的就是像这样获取该文本框和图像 public class FormFill public st
  • 实例化 Microsoft.Office.Interop.Excel.Application 对象时出现错误:800700c1

    实例化 Microsoft Office Interop Excel Application 以从 winforms 应用程序生成 Excel 时 出现以下错误 这之前是有效的 但突然间它停止工作了 尽管代码和 Excel 版本没有变化 我
  • 带显示块的SPAN

    和默认有什么区别 div 元素和默认值 span 元素与display block HTML 元素的有效性和语义存在差异 否则它们是相同的 div and span两者都被定义为通用容器 在 HTML 方面没有更深层次的含义 一个默认为块显
  • 使用 Crypto++ 获取 ECDSA 签名

    我必须使用 Crypto 在变量中获取 ECDSA 签名 我在启动 SignMessage 后尝试获取它 但签名为空 我怎样才能得到它 你看过 Crypto wiki 吗 上面有很多东西椭圆曲线数字签名算法 http www cryptop
  • 自定义 Visual Studio 2008 中的位置栏

    有人成功定制了 VS 2008 的 Places Bar 吗 我从 VS 2005 进行的自定义设置并没有转移到 2008 显然 并且无论我如何处理注册表 我都无法使我的自定义位置出现在 打开 对话框中 我已经阅读并应用了相关的MS KB文
  • 是否可以在 C# 中强制接口实现为虚拟?

    我今天遇到了一个问题 试图重写尚未声明为虚拟的接口方法的实现 在这种情况下 我无法更改接口或基本实现 而必须尝试其他方法 但我想知道是否有一种方法可以强制类使用虚拟方法实现接口 Example interface IBuilder
  • 匿名结构体作为返回类型

    下面的代码编译得很好VC 19 00 23506 http rextester com GMUP11493 标志 Wall WX Za 与VC 19 10 25109 0 标志 Wall WX Za permissive 这可以在以下位置检
  • 错误:无效使用不完整类型“类 Move”/未定义对 Move::NONE 的引用

    拜托 我不知道为什么这个简单的代码被拒绝 它给了我 2 个编译错误 请帮帮我 I use 代码 块 20 03 我的编译器是GNU GCC 移动 hpp class Move public Move Move int int public
  • Android 和 Java 中绘制椭圆的区别

    在Java中由于某种原因Ellipse2D Double使用参数 height width x y 当我创建一个RectF在Android中参数是 left top right bottom 所以我对适应差异有点困惑 如果在 Java 中创
  • 保存符号方程以供以后使用?

    From here http www mathworks com help releases R2011a toolbox symbolic brvfu8o 1 html brvfxem 1 我正在尝试求解这样的符号方程组 syms x y
  • 当ScrollView滚动到底部时加载更多数据

    我有一个带有动态加载内容的滚动视图 有时可能会有很多内容 所以我想在用户滚动到底部时加载更多内容 我搜索了合适的方法 发现了两种 onScrollChanged and getScrollY 但我不知道如何将它用于我的目的 请给我一些建议
  • android ndk 硬件调试内存

    背景 我对 C 很有经验 对 Android 和 Java 还很陌生 但这是编程的环境问题 我已经用 ANSI C 开发了一个管理应用程序 可以移植到任何操作系统 只需在依赖于操作系统的代码中添加 UI 即可 它使用相当多的内存 特别是对于

随机推荐

  • VBA 高度持久的运行时错误 91

    我遇到的问题是 当我尝试启动宏时 我不断收到错误 代码是 Sub MAGAZINE iiii Dim IE As InternetExplorer MODIFICATION Dim els el colDocLinks As New Col
  • 请问在函数内部使用 func() 在 python 中意味着什么

    请问在函数内部使用 func 在 python 中意味着什么 例如下面的代码 def identity decorator func def wrapper func return wrapper func是赋予函数的参数identity
  • Safari 移动设备忽略阻止默认设置

    我在用e preventdefault 在谷歌地图信息窗口中的链接上 它在桌面上按预期工作 其中链接不访问href但在 Safari 上 它似乎会忽略它并访问该链接 就好像没有加载 JavaScript 一样 它显然正在加载 JavaScr
  • “对象处于不一致状态”的含义

    我曾多次遇到过 以特定方式对对象进行编码可能会导致其处于不一致的状态 一个例子是这样的question https stackoverflow com questions 4768349 builder vs decorator patte
  • 云技术的最佳概述是什么? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 围绕云技术有很多讨论 您会推荐哪些资源来回顾云计算世界并帮助人们了解大局 and 当前的趋势 除了阅读这
  • 具有尾随返回类型的模板成员函数,即使未使用也会出错

    据我所知 模板成员函数仅在使用时才会生成 如果不是所有使用的类型都支持这样的功能 这很方便 但是 这似乎不适用于具有尾随返回类型规范的函数 下面是一个小实验 helper function for case A workaround tem
  • 如何显示未促销的 WooCommerce 产品?

    我想展示非销售产品仅意味着常规产品 排除销售产品 在 WooCommerce 中 我的页面仅显示常规产品 那么谁能告诉我该怎么做 我设法过滤掉没有销售的产品 并将下面的代码放置在if have posts args array post t
  • phpMyAdmin - 错误:关系功能被禁用

    当我想使用 phpMyAdmin 4 3 8 在设计器模式下创建两个表之间的关系时 它给我一个错误 错误 关系功能已禁用 当我尝试使用 4 1 4 时 它工作得很好 我似乎找不到应该在哪里更改设置才能在设计器模式下创建关系 任何想法 提前致
  • Paperclip S3 下载远程图像

    如何下载远程图像 http协议 url位于image remote url属性中 并通过Paperclip将其保存为S3的附件 class Product lt ActiveRecord Base require open uri attr
  • 在固定时间后中断线程,是否必须抛出InterruptedException?

    我想在固定时间后中断线程 其他人问了同样的问题 投票最高的答案 https stackoverflow com a 2275596 1310503 https stackoverflow com a 2275596 1310503 给出了下
  • 在 MacOSX (Macbook Pros) 上以编程方式读取 CPU 温度(+其他传感器数据)

    我想以编程方式从我的 MacBook Pro 2009 型号 读取 CPU 温度和任何其他有趣的传感器数据 我该怎么做 我注意到一个上一篇文章 https stackoverflow com questions 2216888 how to
  • 在 Spring 中格式化/缩进 JaxB 编组器

    我正在尝试对 Spring 中的 Jaxb2Marshaller 类的输出 XML 进行 PrettyPrint 缩进 格式化 即使我输入的属性如 Web 上其他地方所见 该文件仍然全部在一行上 这是我的 bean 声明
  • C++:我想在所有 CPP 文件之间使用这个配置类,如何初始化它?

    class Config public static int OUTPUT TO FILE static int NEED TO TRAIN static int NO FILE TRAIN static int NEED TO TEST
  • Java 创建临时文件

    名称的最大长度是多少TempFile在java中和MaximumFilesize取决于 在我们提到要创建的临时目录或其他基于java的机器上 何时致电deleteOnExit 方法 但是这个方法有什么用 因为它会在 JVM 关闭时被调用 但
  • Glide - 下载 GIF 并调整其大小到文件中

    我需要下载一个 GIF 并将其保存到外部存储 以便我可以通过彩信发送它 消息的大小限制为 300kb 并且大多数 GIF 太大 因此我需要调整它们的大小 我在项目的其余部分中使用 Glide Glide 有一个漂亮的功能 理论上应该下载调整
  • twitter bootstrap form-group 的 AngularJS 指令

    我最近一直在玩 Angular 到目前为止一切都很好 但我在指令方面遇到了困难 我正在尝试创建一个指令 为标准引导表单组生成 html 标记及其相应的验证消息 所以基本上我正在尝试转换它
  • Couchdb - 是否可以停用reduce_overflow_error错误

    我正在开发一个映射 归约 它在重新归约的情况下并不能准确地返回我所期望的结果 我想调试它 但我至少也想看看里面有什么 所以我输出了很多东西 Couch 返回了一个reduce overflow error每次我运行视图时 是否可以停用此行为
  • 正确使用 NSGetExecutablePath

    我尝试在运行时获取应用程序的路径 我找到了一些来自 C 的旧源代码 并将其相应地转换为函数参数类型定义 var path Int8 count 1024 repeatedValue 0 var bufsize UInt32 1024 if
  • 如何在多个字段上使用 SearchHeadline 和 SearchVector

    我需要一个搜索多个字段并返回一个突出显示匹配单词的 标题 我的理解是 SearchVector 是跨多个字段搜索的合适选择 但我见过的所有 SearchHeadline 示例都只使用一个字段 将 SearchHeadline 与多个字段结合
  • Spring Cloud Gateway 和 TokenRelay 过滤器

    我正在尝试将 JHipster 从使用 Zuul 迁移到 Spring Cloud Gateway JHipster 使用 Eureka 来查找路由 我相信我已经正确配置了 Spring Cloud Gateway 来查找路由并将访问令牌传