簡體   English   中英

使用Graph API在Azure AD B2C中創建具有自定義屬性的用戶

[英]Create user with Custom Attributes in Azure AD B2C with Graph API

我正在嘗試使用Graph API創建用戶。 用戶json對象如下所示。 我創建了一個名為Role的自定義屬性。 因此,在創建用戶時,我還需要賦予該Role一些價值。 但是,如果我包含此自定義屬性,則會出錯。

一個或多個屬性無效

如果我未指定此自定義屬性,則創建用戶成功。

 var jsonObject = new JObject
            {
                {"accountEnabled", true},
                {"country", "India"},
                {"creationType", "LocalAccount"},
                {"givenName","given"},
                {"surName","surname"},
                {"extension_Role","Admin"},
                {"displayName","test12@xxx.com"},
                {"passwordPolicies", "DisablePasswordExpiration,DisableStrongPassword"},
                {"passwordProfile", new JObject
                {
                    {"password", "Password@12"},
                    {"forceChangePasswordNextLogin", false}
                } },
                {"signInNames", new JArray
                    {
                        new JObject
                        {
                            {"value", "test12@xxx.com"},
                            {"type", "emailAddress"}
                        }
                    }
                }
            };

extension_Role是引發錯誤的屬性。 我試着給extension_appId_Role 它給出了不同的錯誤說明

此名稱不存在擴展屬性

我猜我們在創建用戶時不能添加自定義屬性。 只有我們可以使用編輯配置文件來更新它們。 如果我錯了請糾正我。 我已將此自定義屬性添加到sign-upedit-profile策略以及聲明中。

注意:我已授予圖形API適當的權限,並在App Registration門戶中注冊了一個應用。

答:我找到了答案。 但是不確定那是否是正確的行為。 當我將其附加b2c-extensions-app應用程序ID時,可以插入自定義屬性。 我在“ App Registrations下注冊了一個單獨的應用App Registrations但不確定為什么仍使用default b2c-extensions-app應用程序ID。 可能是因為我在“應用App Registrations注冊應用App Registrations之前創建了自定義用戶屬性。

如注釋中所指出的,您需要在屬性名稱中指定前綴extension_b2c-extensions-app應用ID。 應用程序ID是GUID,但必須包含不帶連字符的字符,例如

extension_93ae98b337124e0aaced3698b59f8acb_Role

可以通過在Azure AD B2C租戶內部的Azure門戶中選擇“ All Resources -> App Registrations來找到b2c-extension-app ID。 默認情況下它顯示My apps列表; 將下拉菜單更改為All apps然后單擊b2c-extension-app並復制其Application ID

  1. 從以下網址獲取B2C應用程序: https : //github.com/AzureADQuickStarts/B2C-GraphAPI-DotNet並使用b2c租戶的值更新app.config。 (有關設置和使用B2C的更多信息,請參見: https ://docs.microsoft.com/zh-cn/azure/active-directory-b2c/active-directory-b2c-devquickstarts-graph-dotnet)。
  2. 運行B2C Get-B2C-Application:復制“ objectId”的值(向輸出頂部)。
  3. 運行B2C Get-Extension-Attribute objectid(其中objectid是您在步驟(2)中捕獲的對象)。 其輸出將為每個自定義屬性提供一個name屬性(例如:“ name”:“ extension_appguid_customattributename”)
  4. (3)中的名稱是可以與命令B2C創建用戶“ path_to_email.json”一起使用的名稱。 在json中,您可以像這樣添加屬性:“ extension_appguid_customattributename”:“這是一個自定義屬性!”

注意:可以通過在AAD下找到在B2C租戶中注冊的App的appid(名稱為b2c-extensions-app)來找到自定義屬性的名稱。 然后,將extension_appid_附加到自定義屬性,然后就可以使用它了。

如果您使用內置策略,則無法控制其用於存儲自定義屬性的應用

如果您使用的是自定義策略請參閱本指南,以配置用於存儲自定義屬性的應用。

<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>

您需要為注冊策略之一(無論是否自定義)啟用這些屬性(顯示它們),並通過該策略創建一個為其設置了值的帳戶。 在完成該操作之前,它們將在該租戶和目錄中不可用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM