【发布时间】:2019-05-04 15:39:17
【问题描述】:
我在 b2c 中配置了后端应用程序 (api) 和 azure apim devportal(客户端应用程序)。我提供了从客户端应用程序访问后端 api 的权限。我有 使用它在 azure api 管理中配置 oauth 身份验证。
我正在使用授权代码流。对于令牌验证,我使用了入站策略:
<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" clock-skew="0">
<openid-config url="https://<domain>/tenantid/v2.0/.well-known/openid-configuration?p=signinsignup_policy" />
<required-claims>
<claim name="aud">
<value><appid for backend app></value>
</claim>
</required-claims>
</validate-jwt>
从 apim 开发者门户尝试时 使用收到的令牌时出现以下错误:。
JWT 验证失败:IDX10501:签名验证失败。无法匹配键
我已将后端 api 应用程序 ID 配置为资源,并将 user_impersonation 配置为默认范围。解码令牌我可以看到与 aud 相同的后端 appid。我也尝试使用 appid uri 作为资源,但看到同样的错误。
感谢任何帮助。
【问题讨论】:
-
Open ID 配置 URL 应该有一个指向密钥集的链接 - jwks_uri。确保您获得的令牌中的“孩子”声明包含该文档中某个键的值。
标签: azure azure-ad-b2c azure-api-management