遵循本指南使用OAuth2保护Azure APIM中的api,并且效果很好。
https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-protect-backend-with-aad
但是要检查当我撤消授予对API的客户端应用程序的访问权限时发生的情况,我在Azure AD中撤消了该请求,但是即使在此之后,我仍然可以获取令牌,并且APIM还将这些令牌验证为良好。当我在jwt.io上的“ aud”中检查令牌时,我仍然看到API的应用程序ID,因此我认为这是令牌的问题,因为APIM使用“ aud”来检查声明。
我正在使用Postman获取这些不记名令牌,并确保未缓存它们,我已重新启动它(没有帮助),从Azure AD App中删除了客户端应用程序的密钥并创建了一个新的,但即使使用新密钥仍然有效。
真的被这个困扰了,有没有指针?这是我来自APIM的validatejwt策略xml。
<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>