使用自定义属性将用户批量上传到 Azure B2C

Sli*_*icc 1 azure-ad-b2c

我正在尝试将现有用户迁移到 Azure B2C,我向 B2C 添加了一个名为“CompanyId”的新自定义属性。在进行批量上传时,我在名为“CompanyId”的 CSV 文件中添加了一个列,但 B2C 上传工具拒绝了该文件,告诉我“CompanyId”列标题无效。

是否可以使用自定义属性将用户批量上传到 B2C?

Sta*_*ong 5

不,您不能直接使用 CSV 在 Azure 门户上批量上传具有自定义属性的用户。但是您可以在使用 PowerShell 创建用户后更新用户的自定义属性,如下所示:

Connect-AzureAD  //connect to your b2c tenant

$userNameList = <string array list of signin name of users in your CSV>
$ExtensionName = <extension name of your company id attribute>
$ExtensionValue = <value of your companyID>


$userlist = Get-AzureADUser | Where-Object {$userNameList.Contains($_.SignInNames[0].Value) }

foreach( $user in $userlist){
   Set-AzureADUserExtension -ExtensionName $ExtensionName -ExtensionValue $ExtensionValue -ObjectId $user.ObjectId
} 
Run Code Online (Sandbox Code Playgroud)

如您所见,有一个我们不知道的参数是 "ExtensionName" 。一旦我们在 B2C 中创建了自定义属性,后端将为它创建一个密钥(更多信息),通常密钥格式是 : extension_<some id>_<name of custom attribute>。这里的关键是 ExtensionName 的值。要找到密钥,请运行以下 ps 命令:

Get-AzureADExtensionProperty
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我为您创建了一个自定义属性,如您所见,在我的案例中,关键是extension_48c33b45c4f8419eb9d97a0f3ff1817b_CompanyId

因此,我们可以将这个扩展密钥与您需要的值添加到新创建的用户将满足您的要求。

在这种情况下,我从 Azure 门户上传了一个测试用户,如您所见,当我使用该用户获取访问令牌时,没有 companyID 声明: 在此处输入图片说明

运行以下脚本后:

Connect-AzureAD


$userNameList = New-Object System.Collections.ArrayList 
$userNameList.Add("newuser")


$ExtensionName = "extension_48c33b45c4f8419eb9d97a0f3ff1817b_CompanyId"
$ExtensionValue = "MSFT"


$userlist = Get-AzureADUser | Where-Object {$userNameList.Contains($_.SignInNames[0].Value) }

foreach( $user in $userlist){
   Set-AzureADUserExtension -ExtensionName $ExtensionName -ExtensionValue $ExtensionValue -ObjectId $user.ObjectId
}
Run Code Online (Sandbox Code Playgroud)

再次通过这个名为“newuser”的新创建用户获取访问令牌: 在此处输入图片说明 如您所见,公司 ID 已设置。希望能帮助到你 。