【问题标题】:How to use WSO2 AM to call my backend services that are secured with OATH如何使用 WSO2 AM 调用受 OATH 保护的后端服务
【发布时间】:2018-01-20 03:03:32
【问题描述】:

使用我的 API Gateway WSO2,我想调用受 OAuth(ACCES-Token)保护的后端服务(我的端点)。但我找不到如何做到这一点。

甚至在 WSO2 网站上提到,通过使用 API 发布者(WSO2 AM),您只能将您的 API 配置为调用使用用户名/密码保护的服务:https://docs.wso2.com/display/AM210/Working+with+Endpoints

您不能通过在 API Publisher 中创建的 API 调用使用 OAuth 保护的后端服务。目前,您只能调用使用用户名/密码保护的服务。

您知道是否有其他方法可以在不使用 API Publisher 的情况下做到这一点?

Mu 浏览器 (SET API Gateway Access-Token) -- API Gatewau WSO2 (SET my Backend services Acess-Token) --> 我的后端服务

谢谢!

【问题讨论】:

  • 您发送给 AM 的访问令牌与您发送给 BE API 的访问令牌相同吗?

标签: wso2 wso2-am


【解决方案1】:

您不能通过在 API Publisher 中创建的 API 调用使用 OAuth 保护的后端服务。目前,您只能调用使用用户名/密码保护的服务。

从 API Publisher 开箱即用,您可以使用基本身份验证(用户名和密码)直接向后端进行身份验证

您知道是否有其他方法可以在不使用 API Publisher 的情况下做到这一点?

嗯 - Publisher 应用程序始终参与其中

我想调用使用 OAuth (ACCES-Token) 保护的后端服务(我的端点)

有多种方式可以通过后端进行身份验证,并非所有方式都那么简单

  1. 基本身份验证(这是您不想要的)
  2. JWT 令牌 - API 管理器能够通过 API 调用向后端发送签名的 JWT 令牌,后端服务可以验证并从 JWT 令牌中提取客户端详细信息。
  3. 使用入站中介配置,您可以操纵请求负载和元数据

使用第 3 点,您应该能够发送自定义 OAuth/Authorization 标头。问题是 - 您的服务使用哪个身份提供者进行身份验证/授权?

问题在于没有统一的配置,您的服务客户端(调用后端的 API 管理器)将如何获取/缓存/刷新/撤销可与所有可能的身份提供者一起使用的令牌。

理论上,您可以使用入站中介(序列)通过外部 IdP 实现 OAuth 身份验证,但我强烈建议不要为了可维护性而将任何复杂的东西作为 API 中介(去过那里,做过,搞砸了)

也许最简单的选择是拥有一个永久令牌 pass in the HTTP headers,这听起来很简单。

【讨论】:

    【解决方案2】:

    您可以尝试自定义 Oauth2 中介。 https://github.com/imesh/wso2-oauth-mediator

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-24
      • 1970-01-01
      • 2020-10-31
      • 1970-01-01
      • 1970-01-01
      • 2012-09-30
      相关资源
      最近更新 更多