Azure AD 多租户应用程序 - 查找哪些租户提供了管理员同意

Azure AD Multi-tenant App - Find what tenant provided admin consent

我一直在四处寻找有关 Azure AD 多租户应用程序的文档和信息,了解谁在使用我的应用程序。

在 Azure AD 中,我创建了一个应用程序注册并选择了 'Accounts in any organizational directory (Any Azure AD directory - Multitenant)'。我看不到任何方式来指定我希望允许哪些租户。

我正在使用需要管理员同意才能使用该应用程序的应用程序权限,因此每个租户的全局管理员都必须授予同意。但是,我看不到任何方式来查看我的应用程序并查看哪个租户同意。

背景:我构建了一个跨两个租户执行用户目录搜索的应用程序。无论哪个用户从哪个租户登录,他们都可以在两个租户中搜索用户。我在两个租户中都设置了应用程序注册,并使用客户端机密获取访问令牌来搜索每个目录。

由于我的目录正在托管要登录的应用程序,因此每个租户都需要授予管理员同意才能使用该应用程序。我正在努力确保我们两个租户之外的任何其他租户都不能同意并使用我们的应用程序。

  1. 有没有办法限制允许哪些租户使用我的应用程序?
  2. 有没有办法查看哪个租户允许我的应用程序?
  3. 如果另一个组织获取了我的客户 ID 并同意,我是否可以做任何事情来阻止他们使用它?
  4. 如果另一个组织同意我的应用,我可以设置通知吗?

Is there a way to restrict which tenant are allowed to use my app?

您可以通过在 Restrict-Access-To-Tenants header

中指定租户列表来限制允许哪个租户使用您的应用程序

Is there a way to look into which tenant did allow my app?

如果您想知道 tenants/users 可以访问您的应用程序的人的列表,您应该是该特定租户的用户。

If another org were to get ahold of my client id and grant consent, am I able to do anything to prevent them from using it?

您可以通过在您的应用程序中使用 Restrict-Access-To-Tenants header 来限制哪些租户可以访问您的应用程序

Can I set up notifications if another org grants consent to my app?

如果任何其他组织同意您的申请,我们将无法收到通知

Is there a way to restrict which tenant are allowed to use my app?

目前执行此操作的唯一安全方法是在您的应用代码中。如果用户正在登录您的应用程序,您可以通过验证 ID 令牌的颁发者是否与您允许的租户之一相对应来执行此操作。如果您的应用程序接受访问令牌(即它是一个 API),您可以对访问令牌执行相同的操作。

Is there a way to look into which tenant did allow my app?

事后,没有。如果您的应用程序是将用户发送到 sign-in/consent 的应用程序,那么在同意后浏览器将被发送回重定向 URL,但在某些情况下会授予 consent/access不会导致该重定向。 (此外,您不想依赖未受保护的查询参数来接近访问控制,因为用户计数会轻易拦截重定向并更改参数值。)

If another org were to get ahold of my client id and grant consent, am I able to do anything to prevent them from using it?

一般来说,不会。在某些情况下,可以降低发生这种情况的可能性,但如果您的应用被配置为多租户应用,您必须假设来自任何组织的用户都能够登录到它。如果您需要限制哪些组织实际使用该应用程序,则需要在您的应用程序代码中强制执行此操作。

Can I set up notifications if another org grants consent to my app?

不,这不可能。