在阅读有关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 AD V2 Microsoft Graph用户范围有关。这是我在下面的回答:
- 如果您使用已签名的用户来获取访问令牌(密码流),则范围(换句话说,访问令牌的权限)都与该用户相关,在此我们将权限称为Delegated权限。如果您使用客户端应用程序获取访问令牌(client_credentials流),则访问令牌的权限都与客户端应用程序相关,我们在此称此权限为应用程序权限。如果您想了解更多信息,请参考this official doc。因此,您方案中的范围是关于用户的,而不是您用于用户登录的客户端应用程序。
- 不清楚您的问题,能否请您告诉我更多有关您的要求或方案的信息?
- [如果您只想调用Microsoft Graph API或Office相关的API,则服务器端将为您检查访问令牌中的范围。如果访问令牌没有API要求的范围,您将收到403错误,并显示消息:“权限不足,无法完成操作。”不需要故意使用它。This doc也提到了它。
根据您的描述,您想知道的是:是否可以动态获取具有作用域(或权限)而不是硬代码作用域的访问令牌。可以使用Azure AD V2 endpoint(每个Azure AD应用程序具有v1和v2终结点,v1仅用于B2B方案,并且不支持使用动态权限获取访问令牌)。 this doc很好地描述了您的要求。
如果有任何不清楚或误解的地方,请随时告诉我:)