基于 JWT 颁发者声明的 API 网关(Azure、AWS)流量路由

问题描述 投票:0回答:1

我对使用策略在 API 网关内路由流量有疑问。

我希望根据用户 JWT(JSON Web 令牌)中的声明(颁发者)从同一 API 网关端点调用不同的后端服务器。

具体来说,我可以编写一个策略来执行基于 JWT 声明的路由,就像我可以在策略中使用 HTTP 标头一样,还是必须调用 lambda 或 azure 函数,然后通过检查 lambda 中的令牌来调用后端服务?

我们正在尝试将对 API 的访问集中在多个服务器实例上,我们的用例如下所示。你能建议一下吗:-

  • 1.a - UserAServerA Auth Services
  • 获取访问令牌
  • 2 - UserA 调用 API 网关
  • 3 - UserA 根据其令牌的发行者声明 (ServerA) 被路由到 ServerA WebAPI
  • 1.b. -
  • UserBServerB Auth Services 获取访问令牌
  • 2 -
  • UserB 调用 API 网关
  • 3 -
  • UserB 根据其令牌的发行者声明 (ServerB) 被路由到 ServerB WebAPI

enter image description here 请指教。

routes aws-api-gateway azure-api-management api-gateway network-traffic
1个回答
0
投票

<policies> <inbound> <validate-jwt header-name="Authorization" output-token-variable-name="incoming-jwt"> <issuers> <issuer>issuer1</issuer> <issuer>issuer2</issuer> </issuers> </validate-jwt> <set-variable name="issuer" value="@(((Jwt)context.Variables["incoming-jwt"]).Issuer)" /> <choose> <when condition="@(((string)context.Variables["issuer"]) == "issuer1")"> <set-backend-service backend-id="Backend1" /> </when> <when condition="@(((string)context.Variables["issuer"]) == "issuer2")"> <set-backend-service backend-id="Backend2" /> </when> </choose> <inbound> ... </policies>

	
© www.soinside.com 2019 - 2024. All rights reserved.