1

在本地帐户注册表单上,displayName属性不是必填字段,我们不想使其成为必填字段。

但是,当用户没有为此提供任何值时,它会存储unknown策略中设置的值。

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

我想在givenName保存配置文件时将属性值设置为默认值,而不是unknown.

我已经尝试如下,但没有帮助

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

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

2 回答 2

0

我从来没有做过,但我相信这是我们可以使用ClaimsTransformations的地方。它并没有真正记录在案,所以我无法为您指明好的 howto 的方向。

借用这个SO answer,我相信你可以做到这一点:

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

然后,您需要在 TechnicalProfile 中调用您的 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>
于 2018-04-12T18:20:48.853 回答
-2

检查下面的链接可能会对您有所帮助,先生。对不起,我迟到了 https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-technical-profile

于 2018-04-11T18:53:43.150 回答