【问题标题】:WSO2 APIM Token ExchangeWSO2 APIM 代币兑换
【发布时间】:2020-10-21 05:43:58
【问题描述】:

我需要在通过 WSO2 APIM 的 api 调用之间执行令牌交换过程,类似于以下场景:

User -> client app -> WSO2 APIM -> JWT Sent to -> Microservice 1

接下来,微服务 1 需要将经过身份验证的用户的 JWT 传播到它所依赖的另一个服务(微服务 2),:

Microservice 1 -> JWT Token Exchange (token issued on the first client access to microservice 1 api) 
-> WSO2 APIM -> JWT Sent to -> Microservice 2

仅将 JWT 传播到 APIM 是不够的,微服务 1 需要发布新的访问令牌来消费微服务 2 API,而令牌交换恰好在这个过程中。

阅读 WSO2 APIM All in One 文档,我没有看到任何与令牌交换过程相关的内容,我只看到了 JWT Bearer,但我不知道它是否考虑了我上面报告的这种情况。

【问题讨论】:

    标签: wso2 wso2-am


    【解决方案1】:

    如果您想传递调用 API 资源时发送的 JWT,可以通过在 deployment.toml 文件驻留在 <APIM-Home>/repository/conf directory 中添加以下配置来启用它。

    [apim.oauth_config]
      enable_outbound_auth_header = true
    

    【讨论】:

    • 感谢您的回答@vithursa! JWT 生成已设置并发送到 API 后端,但是需要将此 JWT 传播到其他内部微服务,而这些微服务位于 API 网关后面,我无法直接与它们对话。另一个细节,每个微服务都有自己的基本令牌(客户端 ID 和密码),所以我需要从第一个后端接收的 JWT 进行令牌交换,以便能够代表经过身份验证的用户(JWT)发出新的访问令牌发布)。 PS .:我编辑了上面的问题以详细说明场景。
    • 我假设 MicroService 1 返回调用 MicroService 2 所需的令牌。这是一个正确的假设吗? MicroService1 和 MicroService2 服务是否都部署在 WSO2 APIM 中?
    • 所以,微服务1和微服务2的api都被植入了同一个APIM中。目前这个 WSO2 使用不透明的访问令牌。用于消费 ms1 的访问令牌正在使用这个不透明的 AT,并且 JWT 到达其后端。但是,要让 ms1 使用 ms2,它需要另一个访问令牌,但是我只有 JWT。所以我说要使用令牌交换来传播这个身份验证,从 JWT 发出一个新的访问令牌。事实上,我需要知道这是否可能。突然间,我需要停止在边界使用不透明令牌,并始终使用 JWT 端到端。
    【解决方案2】:

    您可以在 Jwt 的 Audience 字段中添加另一个微服务 2 的上下文路径,并将请求标头从微服务 1 传递给微服务 2,然后它将起作用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-05
      • 2012-06-10
      相关资源
      最近更新 更多