3

我们正在开发一个带有前端和后端的应用程序。应该通过带有 OAuth2 令牌的 Rest API 访问后端。授权提供程序是 Azure AD。

在 Azure 中,我们创建了 2 个应用注册。一个用于 API,一个用于客户端应用程序。API 注册定义了 3 个范围(读取、写入、删除)。客户端应用注册已委派这些范围的权限。

我们从客户端应用注册请求带有 clientID 和 clientSecret 的令牌。

问题是我们只能请求范围为 api/.default 的令牌。例如 api/read 导致无效范围错误。但如果我们使用 api/.default,则令牌中不包含范围 (scp) 属性。不需要检查使用 API 的应用程序是否具有正确的权限吗?

我不确定我们是否做错了什么,或者我们是否有错误的理解/期望。

4

1 回答 1

6

使用客户端凭据流获取 Azure AD JWT 令牌时,范围必须采用以下格式

api://<clientid of the API app registered>/.default

根据 MSDN,OAUTH 客户端凭据流

scope - 必需 - 此请求中为 scope 参数传递的值应该是您想要的资源的资源标识符(应用程序 ID URI),并附加 .default 后缀。对于 Microsoft Graph 示例,该值为https://graph.microsoft.com/.default。此值告诉 Microsoft 标识平台,在您为应用程序配置的所有直接应用程序权限中,端点应为与您要使用的资源关联的权限颁发令牌。要了解有关 /.default 范围的更多信息,请参阅同意文档。

于 2021-03-24T08:13:29.767 回答