Следуйте этому руководству, чтобы защитить API в Azure APIM с помощью OAuth2, и он работал нормально.
https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-protect-backend-with-aad
Но чтобы проверить, что происходит, когда я отменяю доступ, предоставленный клиентскому приложению через мой API, я отозвал его в Azure AD, но я могу получать токены даже после этого, и эти токены также проверяются APIM как Хорошие. Когда я проверяю токен в jwt.io в «aud», я все еще вижу идентификатор приложения API, поэтому я считаю, что это проблема с токеном, поскольку APIM использует «aud» для проверки заявки.
Я использую Postman для получения этих токенов на предъявителя и чтобы убедиться, что он не кэширован, я перезапустил его (не помогло), удалил ключ клиентского приложения из приложения Azure AD и создал новый, но даже с новый ключ все еще работает.
Действительно озадачен этим, какие-нибудь указатели? Вот моя политика validatejwt xml от APIM.
<validate-jwt failed-validation-error-message="Unauthorized. Access token is missing or invalid." failed-validation-httpcode="401" header-name="Authorization">
<openid-config url="https://login.microsoftonline.com/{tenantid}/.well-known/openid-configuration" />
<required-claims>
<claim name="aud">
<value>{Application Id}</value>
</claim>
</required-claims>
</validate-jwt>