我正在尝试使用C#制作控制台应用程序,通过该控制台应用程序我要将超过100000个用户迁移到Azure AD B2C。
我们正在为此使用Graph API。
我目前的方法是每个API调用创建一个用户帐户,并且花费超过12个小时才能迁移约50000个用户。
减少总时间我想批量发送数据而不是一一发送使用API。但是,我找不到任何解决方案。
是否有API端点可用于批量创建用户。请帮助。
此外,如果我要批量删除这些用户。有可能这样做吗?
这是一些我用于实施解决方案的Microsoft文档参考。
https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-user-migration?tabs=applicationshttps://docs.microsoft.com/en-us/previous-versions/azure/ad/graph/api/users-operations#CreateLocalAccountUser
您可以使用JSON batching在一个HTTP调用中组合多个请求。
这里是一个例子:
POST https://graph.microsoft.com/v1.0/$batch
{
"requests": [{
"id": "1",
"method": "POST",
"url": "/users",
"body": {
"accountEnabled": true,
"displayName": "allentest01",
"mailNickname": "allentest01",
"userPrincipalName": "allentest01@{tenant}.onmicrosoft.com",
"passwordProfile": {
"forceChangePasswordNextSignIn": true,
"password": "{password-value}"
}
},
"headers": {
"Content-Type": "application/json"
}
}, {
"id": "2",
"method": "POST",
"url": "/users",
"body": {
"accountEnabled": true,
"displayName": "allentest02",
"mailNickname": "allentest02",
"userPrincipalName": "allentest02@{tenant}.onmicrosoft.com",
"passwordProfile": {
"forceChangePasswordNextSignIn": true,
"password": "{password-value}"
}
},
"headers": {
"Content-Type": "application/json"
}
}
]
}
您还可以使用它删除用户。 (使用DELETE
方法)
使用JSON批处理的方法似乎更合理,但上一次我们使用Parallel.ForEach循环通过Graph API将160,000个用户导入到Azure AD B2C,MaxDegreeOfParallelism为10。我们每次运行可提供40,000个用户。迁移40,000个用户花了30分钟。