2017-10-11 53 views
1

我正尝试使用Graph API创建用户。用户json对象如下所示。我创建了一个名为Role的自定义属性。因此,在创建用户时,我需要给出一些值Role。但是,如果我包含这个自定义属性,我得到错误。使用图形API在Azure AD B2C中创建具有自定义属性的用户

一个或多个属性无效

创建用户是成功的,如果我不指定该自定义属性。

var jsonObject = new JObject 
      { 
       {"accountEnabled", true}, 
       {"country", "India"}, 
       {"creationType", "LocalAccount"}, 
       {"givenName","given"}, 
       {"surName","surname"}, 
       {"extension_Role","Admin"}, 
       {"displayName","[email protected]"}, 
       {"passwordPolicies", "DisablePasswordExpiration,DisableStrongPassword"}, 
       {"passwordProfile", new JObject 
       { 
        {"password", "[email protected]"}, 
        {"forceChangePasswordNextLogin", false} 
       } }, 
       {"signInNames", new JArray 
        { 
         new JObject 
         { 
          {"value", "[email protected]"}, 
          {"type", "emailAddress"} 
         } 
        } 
       } 
      }; 

extension_Role是抛出错误的属性。我试着给extension_appId_Role。它提供了不同的错误说

没有扩展属性这个名字

我想我们不能添加在创建用户自定义属性的存在。只有我们可以使用编辑配置文件更新它们纠正我,如果我错了。我已将此自定义属性添加到sign-upedit-profile政策中并作为声明。

注意:我赋予了图API的适当权限,并使用应用程序注册门户注册了一个应用程序。

回答:我找到了答案。但不知道这是否是正确的行为。我可以插入自定义属性,当我追加它与b2c-extensions-app应用程序ID。我在App Registrations下注册了一个单独的应用程序,但不知道为什么它仍然采用default b2c-extensions-app应用程序ID。可能是因为我在注册应用程序App Registrations之前创建了自定义用户属性。

+0

我刚刚创建了一个自定义属性'extension_ [guid] _my_attribute'的用户。 – spottedmahn

+0

您是否阅读过[本文档](https://docs.microsoft.com/zh-cn/)COM/EN-US /天蓝色/主动目录B2C /主动目录B2C-devquickstarts-图形的DOTNET#使用定制的属性)? – spottedmahn

+0

您使用自定义策略还是内置策略? – spottedmahn

回答

0

如果您使用的是内置策略,则无法控制它用于存储的应用程序custom attributes

如果您使用custom policies,see this guide来配置它用来存储自定义属性的应用程序。

<ClaimsProviders> 
    <ClaimsProvider> 
      <DisplayName>Azure Active Directory</DisplayName> 
     <TechnicalProfile Id="AAD-Common"> 
      <DisplayName>Azure Active Directory</DisplayName> 
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AzureActiveDirectoryProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> 
      <!-- Provide objectId and appId before using extension properties. --> 
      <Metadata> 
      <Item Key="ApplicationObjectId">insert objectId here</Item> 
      <Item Key="ClientId">insert appId here</Item> 
      </Metadata> 
     <!-- End of changes --> 
      <CryptographicKeys> 
      <Key Id="issuer_secret" StorageReferenceId="TokenSigningKeyContainer" /> 
      </CryptographicKeys> 
      <IncludeInSso>false</IncludeInSso> 
      <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" /> 
     </TechnicalProfile> 
    </ClaimsProvider> 
</ClaimsProviders> 
0

您需要启用那些属性(告诉他们)的注册政策(自定义或没有)中的一个,并通过对它们设置一个值,政策创建一个帐户。他们将不会在该租户和目录中提供,直到您完成。

0

正如在评论中指出的那样,您需要在属性名称中指定前缀extension_b2c-extensions-app应用程序ID。应用程序ID是一个GUID,但必须包含连字符,例如

extension_93ae98b337124e0aaced3698b59f8acb_Role 

b2c-extension-app ID可以通过在天青AD B2C租户内的天青门户选择All Resources -> App Registrations找到。默认情况下,它显示My apps的列表;将下拉列表更改为All apps,然后单击b2c-extension-app并复制其Application ID

相关问题