Azure APIM 策略:允许多个 header 名称用于发送 JWT,或策略中的 'OR' 条件

Azure APIM policies: allow multiple header names for sending JWT, or 'OR' condition in policies

我需要配置 APIM 以支持任何预定义 header 中提供的 JWT。为此,我需要通过 'OR' 条件组合两个策略,但我找不到相应语法的文档。

我有两种类型的客户端应用程序。他们中的一些人按照 Azure 文档中的建议在 'Authorization' 令牌中发送 JWT:

Authorization: Bearer eyJhbGciOi....

而其他应用使用自定义 header 名称:

custom_token: eyJhbGciOi....

我需要同时支持两者。但是我无法指定策略 one-by-one,因为 'AND' 条件用于以下情况:

<validate-jwt header name="Authorization" ... </validate-jwt>
<validate-jwt header name="custom_token" ... </validate-jwt>

如何在政策之间实施 'OR' 条件? 谢谢!

好的,我找到了解决方案。这比我担心的要容易:

    <choose>
        <when condition="@(!context.Request.Headers.GetValueOrDefault("Authorization", "").Equals(""))">
            <validate-jwt header-name="Authorization" ..... </validate-jwt>
        </when>
        <otherwise>
            <validate-jwt header-name="custom_token" ..... </validate-jwt>
        </otherwise>
    </choose>