到 SPA 应用程序的 Azure AD 登录流程仅需要管理员批准才能首次登录

Azure AD Login flow to SPA application require admin approval for first login only

我在 Azure AD 中注册了 SPA 应用程序,并使用 msal-react 进行了基于反应的登录流程。是否有可能要求普通用户在首次尝试登录该应用程序时仅请求访问该应用程序?管理员批准后,不再需要再次请求。我尝试过的是:

SPA API Permissions

通过上述配置,用户可以自由登录应用程序,根本看不到任何“请求管理员同意请求”弹出窗口。

我想要实现的目标是否可行?如果是,我的配置中缺少什么?任何帮助将非常感激!谢谢!

编辑#1 我通过 msal-react

在登录请求中指定了 api://id/Test.Read 范围

当管理员批准管理员同意请求时,他们通常会代表所有 用户授予同意,而不仅仅是代表请求访问权限的用户。

听起来您正在寻找一种策略,即每个用户都需要获得批准(一次)才能使用应用程序。这更多的是用户访问应用程序的授权问题,而不是应用程序代表用户访问 API 的授权(或用户授予该授权的权限)。

您可以考虑以下方案:

  • 不要使用 prompt=consent(一般来说,
  • 仅请求您的应用实际需要的委派权限。如果应用不需要访问 API,只需使用 scope=openid(或 scope=openid profile 等)
  • 将应用程序配置为 require assignment(在 Azure 门户 > Azure AD > 企业应用程序 > (app) > 属性 > 需要分配?)。
  • 授予该应用的管理员许可(代表所有用户)。

通过上述配置,您将授予应用程序的权限(管理员同意)与用户访问应用程序的权限(需要分配)分开。只有分配了该应用程序的用户才能登录该应用程序。您可以选择谁可以将应用程序分配给用户,方法是在企业应用程序下让他们成为应用程序的所有者(即应用程序服务主体的所有者),或者通过将应用程序分配给一个组并让拥有该组的人来决定。

此方法的主要缺点是当用户尝试登录应用但未分配时,目前没有 built-in“单击此处请求访问权限”体验。

作为此策略的一部分,您可能还对使用 self-service app access 功能感兴趣。