我想通过Azure API管理公开一些API(逻辑应用程序,函数)。 它们工作正常,所以我决定添加OAuth2自动处理功能。
我一步一步来了https://docs.microsoft.com/fr-fr/azure/api-management/api-management-howto-protect-backend-with-aad:
一切正常,直到“ validate-jwt”策略步骤生效。 当我添加它时,我得到一个“ 401-未经授权。访问令牌丢失或无效。” 我可以在开发人员控制台和Postman中获得令牌,但是只要我执行API调用... 401!
当我使用jwt.ms检查令牌的内容时,我注意到 aud 参数与后端“应用程序ID”无关。 令牌中的值为“ 00000003-0000-0000-c000-000000000000”,而后端应用程序ID类似于“ 16caXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXcc0”。
我的想法不多了,需要一些Azure专家的帮助! 帮助将不胜感激...
在以下根据MS doc的入站策略:
UPDATE favorites
SET favorited = not favorited
WHERE title="${recipe}"
答案 0 :(得分:0)
您实际上并不需要检查aud参数的值。您可以一起删除required-claims
,这样仍然可以验证令牌的存在和签名。如果要确保已为您的应用程序颁发了令牌,只需找到包含应用程序ID的声明,然后在name =“ ...”中使用它即可与您的应用程序ID值进行匹配。
答案 1 :(得分:0)
几年前,我在验证Azure AD令牌时遇到了一些问题-请参阅我的write up。
我怀疑问题是JWT标头中的随机数。我与Azure AD有点脱节-希望这能为您提供正确方向的指点。
答案 2 :(得分:0)
如果使用的是v2版本端点,请转到->天蓝色广告->应用注册->选择后端应用->清单->更新属性“ accessTokenAcceptedVersion”:2,“