当我们使用Graph API在Active Directory中创建用户时,一些字符会附加到用户名(#EXT#)。这使得无法在AD B2C的界面(documented problem)中编辑用户或使用ADAL 2.23(Active Directory身份验证库)进行登录。
特别是,当我们使用unknown_user_type
方法时,会出现错误(AcquireToken(username, password)
)。错误如下:
为什么会这样?这个问题有什么解决方案或解决方法吗?
问候。
答案 0 :(得分:4)
在UserPrincipalName中具有#EXT#
的用户(UPN,在多个地方也模糊地称为"用户名")通常是来自其他身份提供商的用户。这包括:
常规目录
如果您的应用程序知道Azure AD目录,那么用户正在尝试登录到,并且您正在使用特定于租户的端点https://login.microsoftonline.com/<domain or ID>
,而不是与租户无关的端点端点https://login.microsoftonline.com/common
,案例(1)和(2)中的用户应该能够使用ADAL使用应用程序登录。登录时,他们会使用MSA的常规用户名或他们的&#34; home&#34; 。目录
示例:目录bob@contoso.com
中的用户contoso
作为外部用户添加到目录fabrikam
中。这会导致fabrikam
中的用户使用UPN bob_contoso.com#EXT#@fabrikam.onmicrosoft.com
,但您不必担心这一点。当他们登录信任https:/login.microsoftonline.com/fabrikam.onmicrosoft.com
的应用程序时,他们只需以bob@contoso.com
登录并使用contoso
中的常规密码。
B2C目录
Azure AD B2C感知应用程序始终使用特定于租户的端点,但它使用较新的&#34; v2&#34; OAuth 2.0端点:
https://login.microsoftonline.com/<domain or ID>/oauth2/v2.0/authorize
https://login.microsoftonline.com/<domain or ID>/oauth2/v2.0/token
再次 - 用户将始终使用其家庭身份提供商登录。
重要提示:请记住,Azure AD B2C目前处于预览(截至2106年3月)。
<强> TL; DR 强>:
您实际上不应该有任何想要更改用户的场景。 UserPrincipalName,如果它包含#EXT#
,因为这意味着这实际上不是他们在登录时键入的用户名。