查明管理员是否同意使用 Web 应用程序 Azure

Finding out if admin consented for use of Web Application Azure

有没有办法查明管理员是否同意允许在他们的租户目录中允许 Web 应用程序?

基本上,我有一个 Web 应用程序,我只希望管理员代表所有用户同意。如果我在身份验证请求中使用 prompt=admin_consent,效果很好,只有管理员可以同意。

但是每次访问应用程序时,即使在其目录中配置应用程序后,同样的提示也会重新出现

我可以通过创建一个入职页面来解决这个问题,我从他们那里收集租户 ID 并查看它是否已注册,如果是,请不要再次提示并继续进行身份验证。

但是这个东西是免费的还是令牌中有什么东西可以告诉这个用户是否是管理员用户?

But is there anyway this thing comes for free or is there anything in the token that tells if this user is admin user or not ?

我确定您可以使用图 API 找到用户角色,但是我认为这对您的情况没有帮助,因为在用户信息返回给您之前,同意部分发生在 Azure AD 本身申请。


我们的应用程序遇到了完全相同的问题,以下是我们尝试解决该问题的方法。看看这个方法对你是否有意义。

我们的应用程序有两种不同的 URL:一种用于注册,另一种用于登录。

在将用户发送到 Azure AD 进行身份验证的注册过程中,我们将 prompt=admin_consent 附加到 URL 以便只有管理员角色的用户才能注册。他们注册后,我们会取回用户信息,同时我们会取回租户 ID。我们所做的是将租户 ID 存储在我们的数据库中。在注册过程中,我们要求他们为他们的帐户选择一个名称,可以是任何名称。除了租户 ID,我们还存储此信息。注册过程完成后,我们会为此帐户创建一个唯一的 URL(类似于 https://my-app.com/{account-name}/sign-in),这是帐户管理员(注册人)可以向其团队成员提供的内容。

当团队成员使用登录 URL 访问应用程序时,我们从 URL 中提取团队名称并根据它找出 Azure AD 租户 ID,并将用户重定向到用于登录的 Azure AD 租户 (https://login.microsoftonline.com/{tenant-id})。目前,我们不在 URL.

中包含 prompt=admin_consent