Установка значения по умолчанию для атрибута DisplayName для локальной учетной записи в политике регистрации Azure AD B2C

В форме регистрации локальной учетной записи атрибут displayName не является обязательным полем, и мы не хотим делать его обязательным полем.

Но когда пользователь не предоставляет для этого никакого значения, он сохраняет значение unknown, как оно установлено в политике.

<PersistedClaim ClaimTypeReferenceId="displayName" DefaultValue="unknown" />

Я хочу установить значение атрибута givenName по умолчанию при сохранении профиля вместо unknown.

Я пробовал, как показано ниже, но не помогал

<PersistedClaim ClaimTypeReferenceId="displayName" DefaultValue="{givenName}" />

<PersistedClaim ClaimTypeReferenceId="displayName" 
    PartnerClaimType="givenName" DefaultValue="unknown"  />

person Lucky    schedule 11.04.2018    source источник
comment
Это потому, что AAD считает displayName обязательным полем. Таким образом, даже если ваша политика не обеспечивает этого, AAD все равно нужно что-то. Есть ли причина, по которой вам не требуется displayName, но требуется givenName?   -  person Marc LaFleur    schedule 12.04.2018
comment
@MarcLaFleur, у нас есть несколько других IDP, таких как facebook, connectedIn и т. Д., Которые включены в политику, которая по умолчанию заполняет displayName, мы просто хотим сохранить тот же опыт, не делая его обязательным полем для всей платформы. Я ищу, можно ли этого достичь без принуждения пользователя, если нет, я должен сделать это обязательным.   -  person Lucky    schedule 12.04.2018


Ответы (2)


Я никогда этого не делал, но считаю, что именно здесь мы можем использовать ClaimsTransformations. На самом деле это не задокументировано, поэтому я не могу указать вам в направлении хороших практических рекомендаций ????.

Заимствуя этот ТАК ответ, я считаю, что вы можете сделать это:

<ClaimsTransformation Id="CreateDisplayNameFromGivenName" TransformationMethod="FormatStringClaim">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="displayName" TransformationClaimType="inputClaim" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="stringFormat" DataType="string" Value="{0}" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="email" TransformationClaimType="givenName" />
  </OutputClaims>
</ClaimsTransformation>

Затем вам нужно вызвать ClaimsTransformation в своем Техническом профиле.

<TechnicalProfile Id="LocalAccount-Registration-GivenName">
  <DisplayName>Hello World Account</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="ContentDefinitionReferenceId">api.localaccount.registration</Item>
    <Item Key="IpAddressClaimReferenceId">IpAddress</Item>
    <Item Key="language.button_continue">Create</Item>
  </Metadata>
  <CryptographicKeys>
    <Key Id="issuer_secret" StorageReferenceId="TokenSigningKeyContainer" />
  </CryptographicKeys>
  <InputClaimsTransformations>
    <InputClaimsTransformation ReferenceId="CreateDisplayNameFromGivenName" />
  </InputClaimsTransformations>
  <InputClaims>
    ...
  </InputClaims>
  <OutputClaims>
    ...
  </OutputClaims>
  <ValidationTechnicalProfiles>
    <ValidationTechnicalProfile ReferenceId="AzureActiveDirectoryStore-WriteUserByEmail-ThrowIfExists" />
  </ValidationTechnicalProfiles>
  <UseTechnicalProfileForSessionManagement ReferenceId="SSOSession-AzureActiveDirectory" />
</TechnicalProfile>
person spottedmahn    schedule 12.04.2018

проверьте ссылку ниже, это может помочь вам, сэр, опоздать, извините https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-technical-profile

person Adnan Bashir    schedule 11.04.2018
comment
Привет, Аднан, этот вопрос касается Azure AD B2C, а не SQL - person spottedmahn; 12.04.2018