azure - 是否可以仅请求用户在 Azure AD OAuth2 隐式流中授予同意的范围的子集?

标签 azure azure-active-directory

我创建了一个应用程序注册,我们将其称为 API,应用程序 id URI = api://dummyapi,具有读取和写入范围。 在来自另一个应用程序注册的初始请求中,我们将其称为客户端,在用户同意后,我使用以下请求通过 token 的 scp(scope) =“read write” 获得了 token :

https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id={client app id}
&response_type=token
&redirect_uri=http://localhost
&scope=api://dummyapi/read api://dummyapi/write
&response_mode=fragment

对于 future 的访问 token 请求,是否可以请求仅具有读取范围的 token ? 在以只读范围测试以下请求时,我获得了 scp =“read write”的访问 token 。

https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id={client app id}
&response_type=token
&redirect_uri=http://localhost
&scope=api://dummyapi/read
&response_mode=fragment

我正在考虑一种场景,其中 UI 客户端应用程序具有只读和读写模式,并且它可以使用 scp=read 请求只读模式的 token 。

最佳答案

目前,Azure AD 将颁发一个访问 token ,其中包含代表登录用户授予的所请求资源的所有委派权限。

The only exception to this是如果客户端应用程序动态请求权限,并且未请求的授予权限之一将触发条件访问质询。

(此答案的其余部分只是有关该异常的其他详细信息。)

为了更好地理解此异常,请考虑一个示例,其中应用程序已被授予 User.Read、Mail.Read 和 Files.Read.All,并且客户有一个条件访问策略,要求在访问邮件时进行多重身份验证 (但在访问文件时则不然),并且用户尚未执行 MFA:

  • 如果应用请求 scope=.default,则将强制执行条件访问,并且 User.Read、Mail.Read 和 Files.Read 将包含在 token 。
  • 如果应用使用 scope=User.Read Mail.Read,则将再次强制执行条件访问,并且 token 将再次包含所有三个权限。请注意,Files.Read.All 并未明确请求,但它已被授予,并且包含它不会触发任何其他条件访问挑战。
  • 如果应用请求 scope=User.Read,则不需要 MFA,并且 token 将仅包含 User.Read 和 Files.Read.All。请注意,包含 Mail.Read,因为未明确请求它,包含它会触发条件访问质询。另请注意,Files.Read.All 被包含在内,因为虽然没有明确请求它,但它已被授予,并且包含它不会引发额外的挑战。

关于azure - 是否可以仅请求用户在 Azure AD OAuth2 隐式流中授予同意的范围的子集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70380010/

相关文章:

java - 使用 msgraph-sdk-java 实现组 $filter 查询

azure - azure 用户 session 生命周期

reactjs - 将应用程序从react-azure-adb2c移植到react-adal

azure - 尽管服务主体也有凭据,但 Azure Active Directory 应用程序凭据的用途是什么

azure - 如何使用Azure ARM模板将现有虚拟网络添加到Azure SQL数据库中?

azure - 连接 Azure RDP, "The logon attempt failed"

azure - 将所有 Azure AD 组及其所有者导出到 csv 文件

azure - 我们可以对 Active Directory 中特定组的用户进行身份验证吗

Azure AD B2C guest 用户无法登录

azure - 从 Azure 函数将对象列表保存到 cosmos DB(文档 DB 或 mongo DB)