asp.net-mvc - 如何在 AD B2C 中使用图形 api/sdk
问题描述
我试图简单地使用 Graph API sdk 针对我的 AD B2C 租户创建一个用户,但我一直遇到问题。我在这里关注文档:https ://docs.microsoft.com/en-us/graph/api/user-post-users?view=graph-rest-1.0&tabs=csharp
我收到的第一个错误是“userPrincipalName 属性的域部分无效。您必须在您的组织中使用经过验证的域名之一”。环顾四周后,我发现这个文档指出必须将 CreationType 属性设置为“LocalAccount”。当我尝试这样做时,我得到了“一个或多个属性包含无效值”的错误。</p>
该错误没有提供有关哪个属性无效的任何详细信息!Microsoft 的某个人可以向我指出如何使其正常工作的适当文档吗?在 API 可能针对 AD 而不是 AD B2C 的文档中似乎存在一些混淆。但我没有 AD 租户,只有 AD B2C 租户,这就是我的目标。同样,我使用的是最新版本的 SDK。
解决方案
我能够弄清楚这个问题。对于 AD B2C,我应该将 ObjectIdentity 附加到要创建的用户对象。
下面是代码:
var identity = new ObjectIdentity
{
Issuer = Globals.Tenant,
IssuerAssignedId = email,
SignInType = "emailAddress"
};
var graphClient = GetGraphServiceClient();
var user = new User
{
DisplayName = fullName,
PasswordProfile = new PasswordProfile
{
Password = password,
ForceChangePasswordNextSignIn = forceChangePasswordSignIn
},
PasswordPolicies = "DisablePasswordExpiration",
AccountEnabled = enabled,
CreationType = "LocalAccount",
Identities = new ObjectIdentity[] { identity }
};
var userInfo = await graphClient.Users.Request().AddAsync(user);
return userInfo;
推荐阅读
- ios - 在 ViewController 中更改 Cocoa 类 TableViewCell 的间距 - Swift
- php - Laravel:每个用户一个 IP,以及如何从 Laravel 服务器向客户端 IP 提供会话
- javascript - 如何在 Node.js 中全局有效地存储 setInterval,以便我可以从我的 API 的任何路由中清除它?
- r - 如何在 R-studio 中将字符串值更改为整数值
- github - WIthin github site, where do i find the other repositories coloboraton invites?
- kubernetes - 如何使用 masterurl 访问 Kubernetes 集群
- flutter - 我如何将容器变成浮动操作按钮
- java - 在 ajax 上显示 Nprogress = false
- java - 在 ORACLE DB 中保存 HTTP API JSON 数据
- java - java.lang.IllegalStateException:在已经为当前请求调用 getReader() 后无法调用 getInputStream()