关于 azure api manager validate-jwt 策略架构。该架构与对颁发者签名密钥中的 <id> 属性的文档引用不匹配

问题描述 投票:0回答:1

在 azure api 管理器中,有一个可以指定的 validate-jwt 策略。该文档有以下短语“可选地使用 id 指定密钥”。但 validate-jwt/issuer-signing-keys 的架构中未指定 id 属性。有人可以帮忙提供一个 validate-jwt 策略示例吗?

我尝试添加上述属性,但 API 管理器/入站处理表单拒绝了它

azure key digital-signature
1个回答
0
投票

您需要在

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>

我得到了预期的回应。

enter image description here

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.