azure - 为什么我的应用程序注册设置需要管理员同意?

标签 azure oauth-2.0 azure-active-directory

我真的希望有人能够解释为什么在我们的情况下需要管理员同意,如果可能的话,我们如何避免它。以下是我们正常应用程序的简化版本,我能够在其中重现该问题。

我控制两个租户:T1,用于开发以及所有应用程序注册/资源所在的位置。还有租户 T2,我可以在其中控制所有用户设置,并用它来测试 Multi-Tenancy 。

在 T1 中,我注册了两个名为“app-frontend”和“app-api”的应用程序注册。 两者都具有 User.Read on Graph 所需的权限。此外,app-api 公开了一个(管理员和用户)范围,该范围被设置为应用程序前端所需的权限。 App-frontend 也在 app-api 上注册为已知客户端应用程序。

现在我们期望的行为是,当用户第一次请求应用程序前端的 token 时,他们会被请求同意并在接受后给予 token 。对于任何非管理员帐户,这会导致在使用 T2 的用户进行测试时出现“需要管理员批准”错误。当从 app-frontend 到 app-api 所需的权限被删除时,同意对于非管理员用户来说效果很好。

我在这里浏览了许多答案,试图找出为什么这里似乎需要管理员同意,但建议的答案/原因似乎都不适用于我们的案例。总结一下:

  • T2 中的“用户可以注册应用程序”设置已启用。
  • “用户可以同意应用代表他们访问公司数据”设置在 T2 中处于启用状态。
  • 不需要进行用户分配(对于任一应用注册)。
  • 这两个应用注册都不需要其他权限(因此不涉及应用程序权限)。
  • 向 v1 和 v2 端点发出请求时都会出现此问题。

当应用程序前端的唯一权限是 User.Read 时,我希望其中的大多数也会导致需要管理员同意,但只有当存在对应用程序 API 范围的所需权限时,才会出现问题。

如果需要任何其他信息,我很乐意提供,我已经花了很长时间来解决这个问题。

更新: 两次注册时设置的应用程序权限的屏幕截图。

前端应用注册:Front end app registration

API应用注册:Api app registration

最佳答案

我没有重现您的问题,请参阅下面的步骤。

1.在租户A创建tonyFronEnd应用程序和tonyBackend应用程序,它们都是 Multi-Tenancy 应用程序。此外,tonyFronEnd 应用程序可以访问 tonyBackend 应用程序。并且 File.Read 不需要管理员同意。

enter image description here

enter image description here

2.使用tennatB的用户登录tonyFronEnd应用程序

 https://login.microsoftonline.com/common/oauth2/v2.0/authorize?
client_id=90ffbdb4-5b89-4bbc-9f90-d42b2419294c
&response_type=code
&redirect_uri=https://localhost:8080
&response_mode=query
&scope=openid api://08b3e812-2141-47af-a00a-75de13d3916d/Files.Read
&state=12345

不需要管理员同意。

enter image description here

更新:(用户同意)

enter image description here

关于azure - 为什么我的应用程序注册设置需要管理员同意?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61368997/

相关文章:

azure - 在自定义策略中使用显示控件时如何自动填充 MFA 页面上的电子邮件字段

css - 如何更改机器人背景颜色

authentication - Google OAuth 2 授权 - 错误 : redirect_uri_mismatch

Laravel Passport、Oauth 和微服务

jwt - 如何在登录时在 JWT token 中从 Azure Active Directory 传递自定义扩展属性?

Azure - 更新服务主体范围

Azure 内存扩展指标

azure - 如何为 Jenkins Azure VM 代理插件准备 VHD

angularjs - Identity Server 身份验证无需请求用户许可

c# - 获取每个应用程序的所有用户 Azure Active Directory .NET Web Api C#