使用客户端凭据流未返回的范围

spo*_*ahn 9 oauth-2.0 azure-active-directory

在 Azure AD 中使用客户端凭据流时,我可以定义自定义范围并让它们返回吗?


在我的实验中,我配置了 2 个 Azure AD 应用程序,一个用于 Web API,一个用于客户端(Web API 客户端 A)。我向 Web API 添加了一个范围,但是当通过客户端凭据流请求访问令牌时,没有返回该范围

此外,它只允许我在使用.default范围时请求访问令牌,即api://web-api-client-credential-flow/.default.

范围截图

web api客户端一个api权限

我遇到了这个 UserVoice 项目:V2.0 Client Credentials Implement Scopes所以它似乎在客户端凭据流下的 Azure AD 中不支持范围?

如果没有返回,那么为我的 Web API 客户端 A 应用程序授予该范围的权限有什么意义?Web API 如何知道守护程序应用程序是否具有执行必要操作的范围?

看来我必须使用应用程序权限

juu*_*nas 8

是的,您必须使用应用程序权限。

范围(又名委派权限)仅在用户参与登录过程时适用。它们允许您代表用户进行操作。

应用程序权限是赋予应用程序本身的角色。它们仅适用于不涉及用户的客户端凭据身份验证。您可以通过应用程序注册中的清单来定义应用程序的应用程序权限。然后可以将它们分配给客户端应用程序。获取令牌时,您必须使用 .default,因为您无法动态更改应用程序权限。你总是会得到已经被授予的东西。在令牌中,权限将位于角色声明中。


spo*_*ahn 5

在 Azure AD 中使用客户端凭据流时,我可以定义自定义范围并返回它们吗?

不,但您可以通过清单定义应用程序权限(绝对不如委托范围的 UI 好),并通过客户端凭证流返回它们:

清单配置屏幕截图

然后您可以提供客户端应用程序权限:

客户端权限授予截图

现在,当请求具有“范围”范围的令牌时,api://web-api-client-credential-flow/.default会在声明中返回roles样本智威汤逊

jwt 角色截图