【发布时间】:2021-04-04 09:18:00
【问题描述】:
我正在尝试通过阅读文章通过 AzureAD 使用 OAuth2 保护 APIM API:Protect a web API backend in Azure API Management by using OAuth 2.0 authorization with Azure AD
AzureAPIM - OAuth2
- 授权端点 URL (v1):https://login.microsoftonline.com/{tenant}/oauth2/authorize
- 令牌端点 URL (v1):https://login.microsoftonline.com/{tenant}/oauth2/token
- 客户端 ID:客户端应用 ID
- 重定向 URI:(已弃用的门户):https://xxx-api.portal.azure-api.net/docs/services/auth1/console/oauth2/authorizationcode/callback
AzureAD - 后端应用:
- 范围:Files.All
AzureAD - 客户端应用程序:
- 密钥:xxx
- 重定向网址:仅适用于 APIM 中已弃用的门户 (https://xxx-api.portal.azure-api.net/docs/services/auth1/console/oauth2/authorizationcode/callback)
对于演示会议 API,将验证 JWT 策略添加到入站处理,其中 3a0cf09b- 是租户 ID,b7c31179- 是后端应用程序 ID:
在开发者门户中,对 AzureAD 的身份验证成功并返回令牌:
查看jwt.io中收到的token,发现"aud": "00000003-0000-0000-c000-000000000000"不是backend-app application id:
{
"aud": "00000003-0000-0000-c000-000000000000",
"iss": "https://sts.windows.net/3a0cf09b-xxx/",
"app_displayname": "client-app",
"appid": "05a245fb-xxx",
"scp": "Files.Read User.Read profile openid email",
"tenant_region_scope": "OC",
"tid": "3a0cf09b-2952-4673-9ace-0e1bf69ee23a",
"unique_name": "user1@xxx.onmicrosoft.com",
}
API 测试 HTTP 响应跟踪显示 validate-jwt 上的错误:
validate-jwt (-0.138 ms)
{
"message": "JWT Validation Failed: Claim value mismatch: aud=b7c31179-xxx.."
}
将aud 替换为令牌00000003-0000-0000-c000-000000000000 中的值或删除validate-jwt 策略中的required-claims 以使其正常工作。
有什么想法吗?
【问题讨论】:
标签: oauth-2.0 azure-active-directory azure-api-management