我正在尝试使用 nextjs 和 nextauth 构建 Web 应用程序,因此我在我的个人 MS 帐户上创建了一个应用程序注册。我正在使用
AzureADProvider
,但在我输入学校电子邮件的凭据后,我在 https://login.microsoftonline.com/<My project GUID>/login
上收到以下错误消息。
AADSTS50020: User account '<My schools email>' from identity provider 'https://sts.windows.net/<School GUID I guess>/' does not exist in tenant 'Default Directory' and cannot access the application '<My app registration>'(<Project name>) 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
目标是能够用我的以及我们学校所有其他学生的帐户登录,所以不需要单独注册,只有学生可以登录,老师可以通过他们的邮件识别学生(因为大多数他们中的一些人会用蹩脚的邮件和用户名注册:/)。
我试图在我的环境中重现相同的内容并得到如下相同的错误:
如果Azure AD应用程序注册为单租户,但其他个人帐户或其他租户用户正在尝试登录,则通常会出现此错误
要解决错误,请尝试以下操作:
我创建了一个Azure AD应用程序作为“任何组织目录中的帐户(任何Azure AD目录-多租户)和个人Microsoft帐户(例如Skype,Xbox)”,如下所示:
对于sample,我使用下面的授权端点来验证用户:
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/.default
&state=12345
用户登录成功如下:
还要确保使用
common
端点来授权用户。
organizations
端点。如果问题依然存在,请参考以下MsDoc: