当前位置: 首页 > 知识库问答 >
问题:

批准 AAD 租户中的单个应用以防止 AADSTS90093 错误

郗浩言
2023-03-14

我有一个AAD 2.0聚合应用程序(通过https://apps.dev.microsoft.com创建),它只要求委派权限,不需要管理员同意。

它已在许多具有默认设置的AAD实例上成功安装并运行,但如果管理员已禁用允许用户同意应用程序,则无法安装。

使用当前的授权流,管理员可以很好地安装它(为他们自己,而不是整个租户),普通用户参见

这个错误是有道理的,我能想到的绕过这个问题的两种方法是:

  1. 让租户管理员更改设置以允许用户同意所有应用程序
  2. 在OAuth流中请求管理员同意,以便管理员可以批准所有常规用户的作用域

我希望有另一个解决方案,有问题的租户的管理员可以有选择地允许用户安装这个特定的应用程序,没有此限制的所有其他租户上的普通用户仍然可以在没有管理员同意的情况下安装应用程序。

然而,环顾Azure Active Directory门户,我找不到这样做的方法。任何关于如何处理这种情况的帮助将不胜感激。

共有2个答案

连德水
2023-03-14

根据我的理解,如果管理员禁用用户同意允许第三方多租户应用程序访问他们在目录中的用户配置文件数据,管理员必须同意这些应用程序,用户才可以使用它们。

在这种情况下,您的应用程序可以要求用户提供其租户的管理员的电子邮件,并将管理员同意链接发送给管理员。

我希望有另一种解决方案,在该解决方案中,相关租户的管理员可以选择性地允许用户安装此特定应用程序

此功能类似于为该应用提供admin_consent。如果你对 Azure AD 有任何想法或反馈,可以从此处提交。

黄和怡
2023-03-14

为了实现这一目标:

我希望有另一种解决方案,在该解决方案中,相关租户的管理员可以选择性地允许用户安装此特定应用程序

您需要发送管理员特制的 URL 以获得管理员同意。从“Azure AD v2 范围”文档:

https://login.microsoftonline.com/common/adminconsent?client_id=<YOUR_CLIENT_ID>&state=12345&redirect_uri=<YOUR_REDIRECT_URI>

管理员完成此操作后,将为租户中的所有用户授予同意。

即使您没有请求任何管理权限,这也是适用的。在用户委托权限的情况下,这将:

  • 在启用用户同意的租户中,防止提示每个用户同意,并让他们使用应用程序。
  • 在禁用用户同意的租户中,用户将不再阻止用户并让他们使用应用程序
 类似资料:
  • 记住,使用 tenant2 可以在一些服务调用中更新自己的 TenantId,我们需要在服务器端对它进行安全检测。 与此类似,即使默认情况下,不能看到其他租户的用户,但实际上可以检索和更新他们。 又到了黑客时间。 打开 Chrome 的控制台,并输入: new MultiTenancy.Administration.UserDialog().loadByIdAndOpenDialog(1) 什么?

  • 我们正在开发一个多租户应用程序。在体系结构方面,我们为业务逻辑设计了共享中间层,为数据持久性设计了每个租户一个数据库。也就是说,业务层将与每个租户的数据库服务器建立一组连接(连接池)。这意味着应用程序为每个租户维护单独的连接池。如果我们预计约有5000个租户,那么这个解决方案需要高资源利用率(每个租户的应用服务器和数据库服务器之间的连接),这会导致性能问题。 我们已经通过保持公共连接池解决了这个问

  • 我正在使用Spring 2. x、Hibernate 5. x、Spring Data REST、Mysql 5.7构建一个多租户REST服务器应用程序。Spring 2. x使用Hikari进行连池。 我将使用每个租户数据库的方法,这样每个租户都有自己的数据库。 我以这种方式创建了我的MultiTenantConnectionProvider: 在我的实现中,我阅读了tenantId,并从中央管

  • 我正在构建一个应用程序,它应该服务于多个租户,并存储他们非常敏感的数据。每个租户都有多个用户。我的后端堆栈是用spring boot Hibernate5构建的。我希望hibernate处理多租户问题,所以我有两个问题要问专家: 如果我使用的是每租户模式范式,如何在登录时将用户名与租户关联?每个租户都有自己的用户表,那么我如何知道用户名属于哪个租户呢? 在注册时,什么是正确的方法来动态创建新模式?

  • 我们正在为奖励计划运行一个多租户SaaS应用程序。 目前,我们在数据库中分别管理每个租户的队列。 每个承租人可以有一个通知、奖励、bulk_operations队列。 我们知道这不是最好的方法和最好的做法。 我们正在计划扩展应用程序,我们需要以最好的方式设置队列和队列工作者。 任何建议都是很好的。我们对队列使用任何服务都持开放态度,如SQS、Redis等。我们需要为每个租户提供一个单独的队列。 [

  • 问题内容: 我有一个带有Name字段的Web表单,我希望它能够接受单撇号,例如名称O’Leary,但是当尝试将此记录推送到SQL 2005服务器时,出现错误。我的问题不是这个。这就是当我尝试使用此语句将记录插入到数据库中时… 我在数据库中得到了O’‘Leary,而不是O’Leary。认为SQL应该将这些双单撇号视为一个撇号??? 问题答案: 使用参数化查询会更好。这些将自动处理单引号,并更好地保护