【问题标题】:Azure API Management and Protect Backend Web APIAzure API 管理和保护后端 Web API
【发布时间】:2021-09-27 16:17:27
【问题描述】:

我们有一个现有的 API,该 API 由对 xxxx.com/api/vi/auth/token 的初始用户名和密码调用保护,该 API 返回一个不记名令牌,以包含在对 API 的所有未来调用中。此 API 与一些受信任的应用程序一起使用。

我们现在需要将此 API 置于 Azure API 管理 (APIM) 之后,以供新合作伙伴使用,并已将其设置为将 OAuth2 与 AD 结合使用。

理想情况下,当 APIM 调用我们的后端 API 时,我们需要它通过现有 API 身份验证流程来获取现有 API 令牌并将其包含在任何调用中。

似乎可以在 Azure 中设置一些有限的“授权凭据”,但我找不到有关如何设置/使用它们的任何帮助。

【问题讨论】:

    标签: azure-api-management apim


    【解决方案1】:

    可以通过多种方式完成,但其中大多数都涉及编写自定义策略。最简单的如下:

    <send-request mode="new" response-variable-name="token" timeout="3">
        <set-url>xxxx.com/api/vi/auth/token</set-url>
        <set-method>POST</set-method>
        <set-header name="Authorization" exists-action="override">
            <value>Basic dXNlcm5hbWU6cGFzc3dvcmQ=</value>
        </set-header>
    </send-request>
    <set-header name="Authorization" exists-action="override">
        <value>@("Bearer " + ((IResponse)context.Variables["token"]).Body.As<string>())</value>
    </set-header>
    

    send-request 发送带有基本身份验证标头(替换您的值)的请求,并将响应存储在token 变量中。

    set-headertoken 响应中获取正文,将其解析为字符串并将其放入Authorization 标头中以请求后端。

    这里可以做一些改进:

    1. 为安全起见,将您的基本凭据存储在命名值中。
    2. 缓存令牌,这样您就不需要为每个请求获取它,可能会根据令牌过期进行缓存

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-10
      • 2020-01-06
      • 2015-09-14
      • 1970-01-01
      • 2019-03-31
      • 1970-01-01
      • 2017-07-30
      • 2019-09-15
      相关资源
      最近更新 更多