在 azure api 管理器中,有一个可以指定的 validate-jwt 策略。该文档有以下短语“可选地使用 id 指定密钥”。但 validate-jwt/issuer-signing-keys 的架构中未指定 id 属性。有人可以帮忙提供一个 validate-jwt 策略示例吗?
我尝试添加上述属性,但 API 管理器/入站处理表单拒绝了它
您需要在
kid
中添加issuer-signing-keys
值,如下图-
<policies>
<inbound>
<base />
<set-variable name="base64Key" value="@(Convert.ToBase64String(Encoding.UTF8.GetBytes("{kid value}")))" />
<validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized" require-expiration-time="true" require-scheme="Bearer" require-signed-tokens="true">
<openid-config url="https://login.microsoftonline.com/{tenant_id}/.well-known/openid-configuration" />
<issuer-signing-keys>
<key>@((string)context.Variables["base64Key"])</key>
</issuer-signing-keys>
<audiences>
<audience>{audience}</audience>
</audiences>
<issuers>
<issuer>https://sts.windows.net/{tenant_id}</issuer>
</issuers>
<required-claims>
<claim name="aud" match="all">
<value>{audience}</value>
</claim>
</required-claims>
</validate-jwt>
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>
我得到了预期的回应。