允许所有外部用户通过 Azure AD 身份验证访问

Allow all external users to access via Azure AD authentication

我已经使用 ADAL JS 库为我的 JavaScript 前端配置了 Azure AD 身份验证。我可以使用属于 Active Directory 的帐户成功登录。

我们希望允许所有外部用户登录该应用程序。只要您拥有 Microsoft 或 Live 帐户,就应该被授予访问权限。我收到此错误:

AADSTS50020: User account 'xxxx@gmail.com' from identity provider 'live.com' does not exist in tenant 'Default Directory' and cannot access the application 'xxxx' in that tenant. The account needs to be added as an external user in the tenant first. Sign out and sign in again with a different Azure Active Directory user account.

将用户添加为访客可以解决此问题,但我不希望这样。它必须自动工作。我已将应用程序配置为多租户。我认为启用自助服务将是解决方案。但是,由于未知原因,设置显示为灰色,我不知道如何更改它们。

我已允许用户请求访问权限并自动授予应用程序访问权限。 Screenshot: Enterprise application - Self-service settings

但是,在目录中,自助服务未启用(选项 Self-service group management enabled 设置为 No),对此我无能为力。如何更改这些设置? Screenshot: Groups - General settings


我尝试将另一个应用程序注册到 https://apps.dev.microsoft.com as said on this thread ,但对于新的 clientId,我仍然收到相同的错误消息。

在此线程中 Azure Multi-Tenant Application with Windows Live ID Authentication 解决方案似乎更改了基于租户的身份验证端点。这需要先询问用户它使用的是什么租户,然后重定向到身份验证,这似乎是一个非常糟糕的用户体验。

如果您的要求除了公司帐户外还接受个人帐户 (hotmail.com/outlook.com),那么您不应使用 ADAL。 ADAL/ADAL.JS 仅设计为接受公司帐户并使用 - 所谓的 - Azure AD 'v1' 端点。

以下是您的选择:

  1. AppSource 只需要公司帐户 sign-ins。如果您只需要 AppSource 认证,您可以继续使用 adal.js 到 sign-in 个公司帐户。然后你需要做的是在 Azure Portal 中将你的应用程序设置为 multi-tenant 这样你就不需要添加来宾帐户了。但是,同样,此选项只接受公司帐户 sign-ins.

  2. 如果您的要求是也接受个人帐户,那么您需要使用 msal.js 而不是 adal.js - 然后在新门户 https://apps.dev.microsoft.com . This new application is known as converged application and uses the Azure AD v2 endpoint. To get started use this guide 中注册您的应用程序作为 sign-in 用户使用 msal.js.

  3. 的起点