Политика проверки JWT неожиданно недействительна при изменении на другую аудиторию с помощью управления API Azure

У меня странная проблема с изменением значения элемента аудитории ниже для проверки JWT в APIM, см. Ссылку ниже

https://docs.microsoft.com/en-us/azure/api-management/api-management-access-restriction-policies#ValidateJWT

1 новая ссылка: https://new.onelogin.com/oidc/token

Я только изменил значение элемента аудитории из старой версии в 2. Но при попытке сохранить политику я получаю приведенную ниже ошибку проверки с портала APIM:

The element 'validate-jwt' has invalid child element 'openid-config'. List of possible elements expected: 'required-claims'.

Обратите внимание, что в старой версии в 2 не требуется элемент required-Claims.

client_id = новый xxx

    <validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Error: expired token or invalid token" require-expiration-time="true" require-scheme="Bearer" require-signed-tokens="true">
        <audiences>
            <audience>new xxx</audience>
        </audiences>
        <issuers>
            <issuer>https://openid-connect-eu.onelogin.com/oidc</issuer>
        </issuers>
       <openid-config url="https://openid-connect-eu.onelogin.com/oidc/.well-known/openid-configuration" />
    </validate-jwt>

2 Старая проверка URL и jwt, и она работает.

https://old.onelogin.com/oidc/token

     client_id=old xxx

    <validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Error: expired token or invalid token" require-expiration-time="true" require-scheme="Bearer" require-signed-tokens="true">
        <audiences>
            <audience>old xxx</audience>
        </audiences>
        <issuers>
            <issuer>https://openid-connect-eu.onelogin.com/oidc</issuer>
        </issuers>
       <openid-config url="https://openid-connect-eu.onelogin.com/oidc/.well-known/openid-configuration" />
    </validate-jwt>

Любая идея?

Обновления:

Теперь даже исходная политика, которая работала, имеет проблему, даже если ничего не было изменено:

The element 'validate-jwt' has invalid child element 'openid-config'. List of possible elements expected: 'required-claims'.

person Pingpong    schedule 24.07.2019    source источник


Ответы (1)


Вам нужно переместить openid-configup в xml и оставить его под тегом validate-jwtopening. См. Ниже:

<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="" />
    <issuer-signing-keys>
        <key>Base64 Encoded Key</key>
    </issuer-signing-keys>
    <audiences>
        <audience></audience>       
    </audiences>
    <issuers>
        <issuer></issuer>
    </issuers>  
</validate-jwt>
person Silly John    schedule 25.07.2019
comment
То же верно и в отношении других политик. Порядок имеет значение! Он должен соответствовать порядку, указанному в документации. docs.microsoft.com/ en-us / azure / api-management / - person JordanBean; 01.02.2020