javascript - Azure AD V2/msal.js 限制个人账户?

标签 javascript azure-active-directory azure-ad-msal

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

通过像这样指定权限,我能够重定向到正确的登录 url:

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

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

我读自Is there a way to find whether authentication followed MSA or Azure AD in MSAL.jshttps://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-tokens我可以使用解码后的 id_tokeniss 属性的 Guid 部分来确定用户是使用 MSA 还是 AAD 登录的。但是,这始终返回相同的值,即 https://sts.windows.net/{tenant_id}/ 无论我是使用 MSA 还是其他帐户登录。

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

最佳答案

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

https://login.microsoftonline.com/organizations

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

要允许所有,请使用 common

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

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

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

关于javascript - Azure AD V2/msal.js 限制个人账户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47323852/

相关文章:

azure - 使用 UPN(用户主体名称)通过 Azure AD 进行身份验证

c# - 获取token时如何解析 "possible System.NullReferenceException"

javascript - Div 可见性切换不起作用

javascript 抛出未捕获的类型错误 : Cannot set property '0' of undefined when filling multidimensional array

Javascript 数组到 html 表

javascript - 预检响应在 Angular 方面无效

azure-active-directory - AcquireTokenByAuthorizationCodeAsync 后如何处理 MsalUiRequiredException

Azure ML 推理管道部署授权 token 错误

azure-active-directory - MSAL - userIdentifier 与 idToken.oid

azure - UserAgentApplication 的详细日志记录