了解如何将范围用于Azure AD中的用户授权

问题描述 投票:0回答:1

在阅读有关Azure AD和OAuth授权范围时总是会出现。但是我不明白如何在以下情况下使用它们:

我的设置:

我注册了两个应用程序,一个是SPA,另一个是WEB API。我使用SPA中的隐式授予流来请求WEB API的访问令牌。在WEB API应用中,我已经注册了四个范围A,B,C和D。

情况是什么:

用户到达我的SPA并被重定向到Azure AD。客户端使用隐式流程请求访问令牌。当设置向Azure AD发出实际请求的客户端时,将提供范围(A,B,C和D)。

我不明白的地方:

当用户到达SPA时,作用域已经在SPA客户端上进行了硬编码。我想要的是让不同的人类用户可以访问WEB API上的不同范围。

我的问题是:

  • 仅当您有多个客户端应用程序时,范围才相关且与您有多个实际人类用户无关?
  • 如果范围不适用于用户,有哪些替代方法?
  • 如果范围也适用于用户,我该如何使用它们?
azure oauth active-directory azure-active-directory openid
1个回答
0
投票

据我所知,您的问题与Azure AD V2 Microsoft Graph用户范围有关。这是我在下面的回答:

  1. 如果您使用已签名的用户来获取访问令牌(密码流),则范围(换句话说,访问令牌的权限)都与该用户相关,在此我们将权限称为Delegated权限。如果您使用客户端应用程序获取访问令牌(client_credentials流),则访问令牌的权限都与客户端应用程序相关,我们在此称此权限为应用程序权限。如果您想了解更多信息,请参考this official doc。因此,您方案中的范围是关于用户的,而不是您用于用户登录的客户端应用程序。
  2. 不清楚您的问题,能否请您告诉我更多有关您的要求或方案的信息?
  3. [如果您只想调用Microsoft Graph API或Office相关的API,则服务器端将为您检查访问令牌中的范围。如果访问令牌没有API要求的范围,您将收到403错误,并显示消息:“权限不足,无法完成操作。”不需要故意使用它。This doc也提到了它。

根据您的描述,您想知道的是:是否可以动态获取具有作用域(或权限)而不是硬代码作用域的访问令牌。可以使用Azure AD V2 endpoint(每个Azure AD应用程序具有v1和v2终结点,v1仅用于B2B方案,并且不支持使用动态权限获取访问令牌)。 this doc很好地描述了您的要求。

如果有任何不清楚或误解的地方,请随时告诉我:)

© www.soinside.com 2019 - 2024. All rights reserved.