我正在使用SAML2协议将Microsoft SSO集成到我的应用程序中。我设法在Azure门户中创建了一个新的企业应用程序,并在SimpeSAMLphp库的帮助下成功添加了SSO。现在,当我使用不是Azure AD的帐户登录时,我会收到一条特定的错误消息
AADSTS50020: User account ... from identity provider 'live.com' does not exist in
tenant 'Default Directory' and cannot access the application ... 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.
我知道,为了让用户能够使用Microsoft SSO,需要将他们添加为Azure AD中的用户/组,但如果他们没有添加到Azure AD中并且在数据库中,我想向用户发送邀请(使用Microsoft Graph API(。问题是我找不到任何方法来捕捉这个错误或任何其他解决方法。我还尝试在用户添加后获取他们的电子邮件,他们试图在Microsoft上使用邮件登录。这有可能吗?(我还需要我的应用程序使用SAML协议,这样我就不能在Azure AD中创建一个普通的应用程序并使用oAuth(。
其中一个解决方法可能会有所帮助:
我想知道是否有可能至少获得用户的当他们收到错误消息时发送电子邮件,这样我就可以向他们发送邀请(如果他们的帐户已经创建(。
要达到上述要求,您可能需要使用V2端点来允许从个人Microsoft帐户进行访问。
例如:-https://login.microsoftonline.com/common/oauth2/v2.0/authorize
并将uri重定向为CCD_ 2。
https://login.microsoftonline.com/common/oauth2/v2.0/authorize
?client_id=ffffff-1111-2222-3333-xxx
&response_type=id_token
&redirect_uri=http://jwt.ms
&response_mode=form_post
&prompt=consent
&scope=openid
&state=12345
&nonce=RandomGUI
p.S:-请提供您的应用程序的客户端Id和租户Id
通过这样做,您可以获得登录失败的用户电子邮件,并可以向该用户发送邀请。
在替代解决方案中:-您的应用程序可以使用Azure AD B2C对任何Microsoft帐户进行身份验证。可以将Microsoft帐户添加为社交身份提供商。因此,任何拥有实时帐户的人都可以使用Azure AD B2C登录/注册您的应用程序
有关更多信息,请参阅以下链接:
- SO THREAD|AADSTS50020使用基于live.com的帐户验证用户时出错
租户"xxx"中不存在用户帐户,无法访问应用程序&
使用除我的AAD帐户之外的ms实时帐户时,Azure AD身份验证失败。