繁体   English   中英

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

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

我在公元 Azure 有一个 SPA 应用程序注册和一个使用 msal-react 的基于反应的登录流程。 是否有可能要求普通用户在首次尝试登录该应用程序时才请求访问该应用程序? 管理员批准后,不再需要再次请求。 我尝试过的事情是:

  • append prompt: "consent"登录请求 - 这可行,但是当管理员收到 email 并批准请求时,用户会被要求再次请求,从而导致无限请求-> 批准循环。
  • 我已经在企业应用程序下启用并配置了Admin Content Requests Enterprise Applications -> Manage -> User Settings
  • 我从我的 WebAPI 应用程序中公开了一个 api,它对Who can consent? - Admins Only (不确定这是否正确)。 此权限已添加到我的 SPA 应用程序中,但我尚未授予管理员同意(同样,不确定这是否是正确的配置)

SPA API 权限

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

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

编辑#1我已经通过 msal-react 在登录请求中指定了 api://id/Test.Read scope

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

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

您可以考虑以下选项:

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

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

这种方法的主要缺点是,当前没有内置的“单击此处请求访问权限”体验,当用户尝试登录应用程序但未分配给他们时。

作为此策略的一部分,您可能还对使用自助服务应用程序访问功能感兴趣。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM