我使用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.js和https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-tokens读到,我可以使用已解码iss
的{{1}}属性的Guid部分来确定用户是使用MSA登录还是AAD。但是,无论我是使用MSA还是其他帐户登录,都会返回id_token
的相同值。
我的问题是如何仅使用来自同一租户的用户帐户强制签名,如果我不能这样做,我如何至少获得一个值来检查用户是否使用MSA登录或来自同一租户的帐户?
答案 0 :(得分:1)
您可以在权限中指定organizations
而不是common
,以仅允许AAD帐户:
https://login.microsoftonline.com/organizations
如果您只想要Microsoft帐户,可以使用consumers
。
要允许所有人,请使用common
。
在新的v2门户中创建应用程序时,默认情况下该应用程序将是多租户,您将无法在目录中找到它。
如果您需要单租户应用,请使用v1。