Dib*_*aha 0 azure-active-directory next.js azure-authentication next-auth
我想将 Azure (Microsoft) 身份验证与 Google 作为提供商一起添加到我的应用程序中,以避免电子邮件和密码注册和签名。
Google 登录工作正常,没有任何问题,而对于 Microsoft 来说,它无法工作,因为我收到以下错误:
AADSTS50020: User account 'xxxx@hotmail.com' from identity provider 'live.com' does not exist in tenant 'Default Directory' and cannot access the application 'f42685g2-3150-3t37-u4y2-392a0ec2775'(next-auth-dev) in that tenant.
我通过选择 as 在 Azure AD 中创建了多租户应用程序Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox)。
我还提供了“http://localhost:3000/api/auth/callback/azure-ad”作为“Web Platform”的重定向 URI。
我已经完成了 Next-Auth.js“https://next-auth.js.org/providers/azure-ad”文档中提到的所有操作
它只能验证帐户所有者的身份,但除此之外任何外部用户都无法完成此过程。
经过搜索,我发现用户需要在 Azure AD 应用程序中添加为“来宾用户”,但这不是本意,任何随机用户都可以访问我的应用程序并通过“Microsoft (Azure AD)”身份验证进行身份验证。
如果我遗漏了什么或者我的理解不正确,有人可以帮忙吗?
创建Azure AD 多租户应用程序:

例如,我使用以下端点来授权用户:
https://login.microsoftonline.com/TenantID/oauth2/v2.0/authorize?
&client_id=ClientID
&response_type=code
&redirect_uri=https://jwt.ms
&response_mode=query
&scope=https://graph.microsoft.com/user.read
&state=12345
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试对外部用户进行身份验证时,出现了相同的错误:

TenantID如果您在授权用户时通过,通常会发生该错误。
要解决该错误,请确保传递common授权端点。
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?
&client_id=ClientID
&response_type=code
&redirect_uri=https://jwt.ms
&response_mode=query
&scope=https://graph.microsoft.com/user.read
&state=12345
Run Code Online (Sandbox Code Playgroud)
通过传递common授权端点,外部用户身份验证成功:

外部用户重定向到页面:

修改您的代码如下:
AZURE_AD_CLIENT_ID=ClientID
AZURE_AD_CLIENT_SECRET=ClientSecret
AZURE_AD_TENANT_ID=common
Run Code Online (Sandbox Code Playgroud)
参考:
错误 AADSTS50020 - 租户中不存在来自身份提供商的用户帐户 - Active Directory
AADSTS50020:租户中不存在用户帐户 - Thinbug
| 归档时间: |
|
| 查看次数: |
990 次 |
| 最近记录: |