我试图将现有用户迁移到Azure B2C,我向B2C添加了一个名为“ CompanyId”的新自定义属性。批量上传时,我在CSV文件中添加了一个名为“ CompanyId”的列,但B2C上传工具拒绝了该文件,并告诉我“ CompanyId”列标题无效。
是否可以使用自定义属性将用户批量上传到B2C?
答案 0 :(得分:2)
否,您不能直接使用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
}
如您所见,有一个我们不知道的参数是“ ExtensionName”。一旦我们在B2C中创建了自定义属性,后端就会为其创建密钥(more information),密钥格式通常为:extension_<some id>_<name of custom attribute>
。关键是此处的ExtensionName的值。要找到密钥,请运行以下ps命令:
Get-AzureADExtensionProperty
我为您创建了一个自定义属性,如您所见,在我的情况下,键为 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
}