使用图形API在Azure AD B2C中创建具有自定义属性的用户
我正尝试使用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-up
和edit-profile
政策中并作为声明。
注意:我赋予了图API的适当权限,并使用应用程序注册门户注册了一个应用程序。
回答:我找到了答案。但不知道这是否是正确的行为。我可以插入自定义属性,当我追加它与b2c-extensions-app
应用程序ID。我在App Registrations
下注册了一个单独的应用程序,但不知道为什么它仍然采用default b2c-extensions-app
应用程序ID。可能是因为我在注册应用程序App Registrations
之前创建了自定义用户属性。
如果您使用的是内置策略,则无法控制它用于存储的应用程序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>
您需要启用那些属性(告诉他们)的注册政策(自定义或没有)中的一个,并通过对它们设置一个值,政策创建一个帐户。他们将不会在该租户和目录中提供,直到您完成。
正如在评论中指出的那样,您需要在属性名称中指定前缀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
。
我刚刚创建了一个自定义属性'extension_ [guid] _my_attribute'的用户。 – spottedmahn
您是否阅读过[本文档](https://docs.microsoft.com/zh-cn/)COM/EN-US /天蓝色/主动目录B2C /主动目录B2C-devquickstarts-图形的DOTNET#使用定制的属性)? – spottedmahn
您使用自定义策略还是内置策略? – spottedmahn