【问题标题】:Passing multiple scope values to Oauth token endpoint将多个范围值传递给 Oauth 令牌端点
【发布时间】:2020-07-01 12:44:07
【问题描述】:

我正在尝试向https://login.microsoftonline.com/{{tenantId}}/oauth2/v2.0/token 进行身份验证,其中tenantId 来自 Azure AD。

只要我只通过以下格式的一个范围,它就可以正常工作

api://{{clientId}}/.default

如果我将多个值传递给范围参数,它会失败并出现错误AADSTS70011: The provided request must include a 'scope' input parameter. The provided value for the input parameter 'scope' is not valid.

我尝试用空格、逗号和加号分隔值。但它永远不会起作用;如果我单独传递任何值,它们都可以工作,但我希望我的访问令牌中有多个受众,那么我该怎么做呢?

编辑

传递的额外参数:

grant_type : client_credentials

client_id

client_secret

范围

【问题讨论】:

  • 请让我们知道身份验证流程和其他范围的名称。
  • 是的,看我的编辑

标签: azure azure-active-directory azure-authentication


【解决方案1】:

由于访问令牌仅包含对一个 API 的权限,因此为特定受众生成令牌,即我们只能为一个 API 指定范围。

此外,OAuth 流在这里是客户端凭据流,这意味着我们不能动态请求范围,只能请求特定资源的 .default 范围。

根据MS Docs

在这个请求中传递给范围参数的值应该是 您想要的资源的资源标识符(应用程序 ID URI), 附有 .default 后缀。对于 Microsoft Graph,该值为 https://graph.microsoft.com/.default。此值通知 Microsoft 您的所有应用程序权限的身份平台端点 已为您的应用程序配置,它应该为这些应用程序发出一个令牌 与您要使用的资源相关联。

【讨论】:

  • 是的,但我传递了多个 .default 范围(一个用于我想要在令牌中的每个 api)。关于第一点,您似乎是对的。我不能在一个令牌中拥有多个观众。惭愧:(
  • 一个想法是为每个范围使用两个单独的 OAuth 请求,而不是单个请求。
  • 是的,我最终做到了
猜你喜欢
  • 2014-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-13
  • 2012-09-07
  • 2017-01-31
  • 1970-01-01
相关资源
最近更新 更多