我已使用ADAL JS库为我的JavaScript前端配置了Azure AD身份验证。我可以使用属于Active Directory的帐户成功登录。
我们希望允许所有外部用户登录该应用程序。只要您拥有Microsoft或Live帐户,就应该授予您访问权限。我收到此错误:
AADSTS50020:用户帐户' xxxx@gmail.com'来自身份提供商' live.com'在租户'默认目录'中不存在并且无法访问应用程序' xxxx'在那个房客里。该帐户需要首先作为外部用户添加到租户中。注销并使用其他Azure Active Directory用户帐户重新登录。
将用户添加为访客可以解决此问题,但我不想这样做。它必须自动工作。我已将应用程序配置为多租户。我认为启用自助服务将是解决方案。但是,由于未知原因,设置显示为灰色,我不知道如何更改它们。
我已启用用户请求访问权限,并在应用程序上自动授予访问权限。 Screenshot: Enterprise application - Self-service settings
但是,在目录中,未启用自助服务(选项Self-service group management enabled
设置为No
),我无能为力。如何更改这些设置?
Screenshot: Groups - General settings
我尝试将另一个应用程序注册到https://apps.dev.microsoft.com,如此线程Azure AD authentication without app registration所述,但我仍然会收到新clientId的相同错误消息。
在此线程Azure Multi-Tenant Application with Windows Live ID Authentication中,解决方案似乎根据租户更改了身份验证端点。这需要首先询问用户它正在使用哪个租户,然后重定向到身份验证,这似乎是一个非常糟糕的用户体验。
答案 0 :(得分:1)
如果您的要求是除了公司帐户之外还要接受这两个个人帐户(hotmail.com/outlook.com),那么您不应该使用ADAL。 ADAL / ADAL.JS仅用于接受公司帐户并使用 - 所谓的 - Azure AD'v1'端点。
以下是您的选择:
AppSource 只需要公司帐户登录。如果您只需要AppSource认证,则可以继续使用adal.js登录公司帐户。然后,您需要做的是将您的应用程序设置为Azure门户中的多租户,这样您就不需要添加访客帐户。但是,此选项仅接受公司帐户登录。
如果您的要求是也接受个人帐户,那么您需要使用 msal.js 而不是adal.js - 然后在新门户{{3}中注册您的应用程序}。此新应用程序称为聚合应用程序,并使用 Azure AD v2端点。要开始使用https://apps.dev.microsoft.com作为使用msal.js登录用户的起点。