我正在尝试在我们公司的Azure目录上执行B2C用户创建。作为参考,我使用Microsoft的这个站点,以及其中的.DotNet示例。
我完全按照这个例子,我到达了我得到的地步 经过身份验证,我可以在目录中解压缩AD用户。这是我生成的示例请求。
获取https://graph.windows.net/mycompany/users?api-version = beta
但是当我开始在目录中创建示例用户时,我得到错误响应" 一个或多个属性包含无效值"。
POST https://graph.windows.net/mycompany/users?api-version = beta
这是我使用的有效负载,它是用于创建用户的网站示例中使用的完全相同的有效负载。这是JSON格式。
{" accountEnabled":true," alternativeSignInNamesInfo":[{" type":" emailAddress",&#34 ;值":" joeconsumer@gmail.com"}]," creationType":" NameCoexistence"," displayName":&# 34; Joe Consumer"," mailNickname":" joec"," passwordProfile":{" password":" P @ssword!"," forceChangePasswordNextLogin":false}," passwordPolicies":" DisablePasswordExpiration"}
此有效负载符合基于Microsoft的用户创建要求的要求,同样,它也是网站示例中完全相同的有效负载,这就是为什么我收到的消息是奇怪的属性具有无效值。更糟糕的是,响应没有明确说明哪个值是问题的根源。
任何帮助都将不胜感激。
答案 0 :(得分:0)
我认为贵公司的Active Directory不存在这种情况,您需要创建一个单独的B2C Active Directory。
按照本教程创建B2C目录: https://azure.microsoft.com/en-us/documentation/articles/active-directory-b2c-get-started/
答案 1 :(得分:0)
您是否已创建B2C租户,并且它具有在Azure AD中创建的应用程序。
请你试试这个有效载荷,它对我来说很好。
{
"accountEnabled": true,
"signInNames": [
{
"type": "emailAddress",
"value": "joeconsumers6@gmail.com"
}
],
"creationType": "LocalAccount",
"displayName": "karthikeyan",
"mailNickname": "karthikeyan",
"passwordProfile": {
"password": "cads2016!",
"forceChangePasswordNextLogin": false
},
"passwordPolicies": "DisablePasswordExpiration",
"city": "San Diego",
"country": null,
"facsimileTelephoneNumber": null,
"givenName": "Joe",
"mail": null,
"mobile": null,
"otherMails": [],
"postalCode": "92130",
"preferredLanguage": null,
"state": "California",
"streetAddress": null,
"surname": "Consumer",
"telephoneNumber": null,
}
答案 2 :(得分:0)
当尝试创建一个具有登录名的用户时,出现错误,该用户将类型设置为userName,而该值实际上是一个电子邮件地址。我以为用户名可以允许任意字符串,但是显然,如果您想使用电子邮件作为用户名,则必须先将类型设置为emailAddress,然后才能通过Microsoft的验证。
public class SignInNames
{
public string type { get; set; }
public string value { get; set; }
public SignInNames(string userName)
{
// Type must be 'emailAddress' (or 'userName')
if (!string.IsNullOrWhiteSpace(userName) && userName.Contains("@"))
this.type = "emailAddress";
else
this.type = "userName";
// The user email address
this.value = userName;
}
}