【问题标题】:Azure API Management - How to change default error message for invalid subscription keyAzure API 管理 - 如何更改无效订阅密钥的默认错误消息
【发布时间】:2019-08-23 14:15:46
【问题描述】:

我们已配置 APIM 并将其指向部署在 WebApp 中的 API 端点。

我们已经配置了相同的产品、订阅密钥、APIS、操作。

对于 APIM 端点,开发者必须传递订阅密钥,如果未传递,APIM 将返回 HTTP 401 并带有以下错误消息

由于订阅密钥无效,访问被拒绝。确保为有效订阅提供有效密钥。

有什么办法,我们可以根据业务团队的要求用自定义消息来改变这个吗?

【问题讨论】:

    标签: azure-api-management


    【解决方案1】:

    在 on-error 部分使用选择策略来识别场景(您可以检查 context.LastError.Reason),并使用返回响应策略来提供自定义响应。

    【讨论】:

    • 这行不通。如果 API 需要订阅,并且请求带有无效的订阅密钥,APIM 将在 API 的策略被调用之前拒绝该请求。
    • 事实并非如此。如果 APIM 由于任何原因(包括丢失或无效的订阅密钥)未满足请求,则执行错误部分。请参阅此处:docs.microsoft.com/en-us/azure/api-management/… 以获取预定义的错误代码。您应该检查“SubscriptionKeyNotFound”和“SubscriptionKeyInvalid”
    • 文档确实这么说。不过,这不是我的 APIM 租户当前表现出的行为。我可能遇到了错误,我会联系支持并查看
    • 是的,你是对的。我的部分问题是我的政策是在哪里定义的。它们可以在所有 API 级别、API 级别和操作级别进行定义。对于 URL:https://{host}/{API URL Suffix}/{Operation Path},为不正确的 API URL 后缀定义消息正文应该发生在 All API 级别。处理无效订阅密钥应在 API 或操作级别进行。您可以使用 策略 从更高级别继承定义的策略行为
    【解决方案2】:

    目前没有办法做到这一点。请在 Azure 的反馈论坛上投票支持此请求:

    Customize error schema messages

    编辑:@Vitaliy Kurokhtin 的答案是一种解决方法,尽管您需要记住定义错误策略的位置(所有 API 级别、API 级别、操作级别)将影响您定义的 On Error 策略将被调用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多