Azure AD将'#EXT#'添加到UserPrincipalName

5
当我们使用Graph API在Active Directory中创建用户时,一些字符会被附加到用户名后面(#EXT#)。这使得在AD B2C的界面中无法编辑用户(文档中记录的问题),也无法使用ADAL 2.23(Active Directory身份验证库)进行登录。

AD B2C interface problem

特别地,当我们使用AcquireToken(username, password)方法时,会出现一个错误(unknown_user_type)。该错误如下:

ADAL error

为什么会发生这种情况?有解决方案或解决方法吗?
此致。

用户是否来自外部提供商?AAD已将类似的字符串附加到与之连接的我的Microsoft帐户上。 AAD本身无法直接验证用户,需要将用户重定向到其提供商进行登录。 - juunas
@juunas 是的,这是因为Graph API是另一个应用程序。有没有什么解决办法? - Mauricio Ulloa
这是设计上的考虑,B2C限制中已经提到了,该字段实际上是UPN,不应该显示出来。 - Erik Oppedijk
1
@MauricioUlloa 我已编辑标题以反映不是 Azure AD Graph API 添加 #EXT#,而是 Azure AD 本身。 - Philippe Signoret
1个回答

7
用户的UserPrincipalName(UPN,在某些地方也称为“用户名”)中包含#EXT#的用户通常是来自其他身份提供者的用户。这包括:
  1. 常规目录:使用其Microsoft帐户(MSA)添加的用户
  2. 常规目录:来自Azure AD中其他目录的用户
  3. B2C目录:几乎所有B2C用户都有此权限
常规目录 如果您的应用程序知道用户要登录到的Azure AD目录,并且您正在使用特定于租户的终结点https://login.microsoftonline.com/<domain or ID>,而不是租户不可知的终结点https://login.microsoftonline.com/common,则情况(1)和(2)的用户应该能够使用ADAL签入应用程序。登录时,他们将使用来自MSA或其“主目录”的常规用户名。
例如:用户bob@contoso.com,来自目录contoso,被添加为fabrikam目录的外部用户。这将在fabrikam中产生一个具有UPNbob_contoso.com#EXT#@fabrikam.onmicrosoft.com的用户,但您不必担心这个问题。当他们登录到信任https:/login.microsoftonline.com/fabrikam.onmicrosoft.com的应用程序时,他们只需使用bob@contoso.com作为用户名,并使用来自contoso的正常密码即可。 B2C目录 Azure AD B2C感知应用程序始终使用特定于租户的终结点,但是它正在使用更新的“v2”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
再次强调-用户将始终使用其主要身份提供者进行登录。
重要提示:请记住,截至2016年3月,Azure AD B2C目前处于预览状态。 TL;DR: 如果用户的UserPrincipalName包含#EXT#,则实际上不应该有任何更改用户UserPrincipalName的情况,因为这意味着这并不是他们在登录时键入的用户名。

谢谢您的回答。问题不在于编辑UPN时,而是在编辑任何字段或尝试使用ADAL登录时。 - Mauricio Ulloa
你属于上述三种情况中的哪一种?你是在跟随现有的样例,还是从零开始? - Philippe Signoret
我们的案例是第三个。谢谢! - Mauricio Ulloa
@MauricioUlloa 你正在尝试使用哪个版本的ADAL?你能否编辑你的帖子,包括你观察到的具体错误信息? - Philippe Signoret
在我的情况下,用户在 Azure AD 存在之前创建了 MS 帐户。现在,所有来自新目录 contoso 的用户都像 bob#EXT#@contoso.com 一样存在,我无法弄清如何将它们转换为内部用户。 - Gabriel Anderson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接