我正在使用msal.js来允许用户使用他们的AAD帐户登录 . 我使用目标租户中的帐户在https://apps.dev.microsoft.com/中创建了应用程序 . 我的印象是,这样做会在该租户下创建应用程序,并且msal.js可以正常工作 . 但是,当调用 loginRedirect()
时,我最终到达/ common / endpoints ,我可以使用各种组织和个人帐户登录 .
通过指定权限,我能够重定向到正确的登录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读到我可以使用已解码的 id_token
的 iss
属性的Guid部分来确定用户是否使用MSA或AAD登录 . 但是,无论是否使用MSA或其他帐户登录,它始终返回相同的值 https://sts.windows.net/{tenant_id}/
.
我的问题是如何仅使用来自同一租户的用户帐户强制签名,如果我不能这样做,我如何至少获得一个值来检查用户是使用MSA还是使用同一个帐户登录的承租人?
1 回答
您可以在权限中指定
organizations
而不是common
以仅允许AAD帐户:如果您只想要Microsoft帐户,则可以使用
consumers
.要允许所有,请使用
common
.https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-protocols#endpoints
在新的v2门户中创建应用程序时,默认情况下该应用程序将是多租户,您将无法在目录中找到它 .
如果您需要单租户应用,请使用v1 .