我正在尝试获取 OAuth 令牌(client_credentials 流)以便能够调用我的 API。我无法在令牌中找到合适的受众。
在 Azure AD 中,我创建了 2 个应用注册。一个代表我的 API,另一个代表我的客户。
如您在屏幕截图中所见,我还将我的客户端应用注册添加为“授权客户端应用”。
在我的客户端应用注册中,我创建了一个密钥来进行身份验证。
我还在“API 权限”中添加了我的 API 应用注册,并授予了管理员同意。
我的问题是当我尝试从 Azure AD 获取令牌时。我在 Postman 中执行以下操作:
但是我得到的令牌不包含我指定的受众。它包含默认的“图形 API”受众。
过去 2 天我一直在阅读 OAuth,但我不知道我做错了什么。
另外,请注意,我无法使用 v2.0 端点,因为最后,我执行所有这些操作是为了能够在 Power Automate 中对我的 API 进行身份验证,但我无法选择使用 v2.0端点(以及资源或范围参数)。
这是解码的令牌
任何帮助将不胜感激。
答案 0 :(得分:1)
总而言之,我将其作为答案发布。
就像我在评论中所说的,如果您使用的是 OAuth 2.0 协议,当您使用 v1.0
endpoint 请求访问令牌时,您应该使用 resource
参数代替audience
参数,因为 audience
参数不被 OAuth 2.0 协议识别。即使你没有在postman中选择这个参数,你也应该能够获得一个默认的ms graph api token。
audience
参数在 Auth0 组织中常用,但它与 OAuth 2.0 协议有一些区别。 Auth0 的请求 URL 如下:
curl --request POST \
--url 'https://YOUR_DOMAIN/oauth/token' \
--header 'content-type: application/x-www-form-urlencoded' \
--data grant_type=client_credentials \
--data client_id=YOUR_CLIENT_ID \
--data client_secret=YOUR_CLIENT_SECRET \
--data audience=YOUR_API_IDENTIFIER