Azure AD V2 / msal.js 限制个人帐户?

Azure AD V2 / msal.js restrict personal accounts?

我正在使用 msal.js 来允许用户使用他们的 AAD 帐户登录。我使用目标租户中的帐户在 https://apps.dev.microsoft.com/ 中创建了应用程序。我的印象是,这样做也会在该租户下创建应用程序,并且 msal.js 会正常工作。然而,当 loginRedirect() 被调用时,我最终到达 /common/ 端点,并且我被允许使用各种组织和个人帐户登录。

我能够通过指定权限重定向到正确的登录名 url:

new Msal.UserAgentApplication({client_id}, 'https://login.microsoftonline.com/{tenant_id}/', () => {});

但是,这仍然不限制仅使用来自该组织的帐户登录。其实我也可以用个人账号登录。

我从 and https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-tokens 了解到,我可以使用解码 id_tokeniss 属性 的 Guid 部分来确定用户是使用 MSA 登录还是AAD。但是,无论我是使用 MSA 还是其他帐户登录,这始终 returns 与 https://sts.windows.net/{tenant_id}/ 相同的值。

我的问题是如何强制仅使用来自同一租户的用户帐户登录,如果我不能这样做,我如何至少获取一个值来检查用户是否使用 MSA 或来自同一租户的帐户?

您可以在权限中指定 organizations 而不是 common 以仅允许 AAD 帐户:

https://login.microsoftonline.com/organizations

如果您只需要 Microsoft 帐户,可以使用 consumers

要允许全部,请使用 common

https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-protocols#endpoints

当您在新的 v2 门户中创建应用程序时,默认情况下该应用程序将是多租户的,您不会在您的目录中找到它。

如果您想要单租户应用程序,请使用 v1。