Azure Active Directory B2C özel ilkesinde talep dönüştürme teknik profili tanımlama

Not

Azure Active Directory B2C'de özel ilkeler öncelikli olarak karmaşık senaryoları ele almak için tasarlanmıştır. Çoğu senaryoda, yerleşik kullanıcı akışlarını kullanmanızı öneririz. Bunu yapmadıysanız, Active Directory B2C'de özel ilkeleri kullanmaya başlama bölümünde özel ilke başlangıç paketi hakkında bilgi edinin.

Talep dönüştürme teknik profili, talep değerlerini işlemek, talepleri doğrulamak veya bir çıkış talepleri kümesi için varsayılan değerleri ayarlamak için çıkış talep dönüştürmelerini çağırmanızı sağlar.

Protokol

Protocol öğesinin Name özniteliği olarak ayarlanmalıdırProprietary. İşleyici özniteliği, Azure AD B2C tarafından kullanılan protokol işleyici derlemesinin tam adını içermelidir: Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.

Aşağıdaki örnekte talep dönüştürme teknik profili gösterilmektedir:

<TechnicalProfile Id="Facebook-OAUTH-UnLink">
    <DisplayName>Unlink Facebook</DisplayName>
    <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  ...

Çıkış talepleri

OutputClaims öğesi zorunludur. Teknik profil tarafından döndürülen en az bir çıkış talebi sağlayın. Aşağıdaki örnekte çıkış taleplerinde varsayılan değerlerin nasıl ayarlanacağı gösterilmektedir:

<OutputClaims>
  <OutputClaim ClaimTypeReferenceId="ageGroup" DefaultValue="Undefined" />
  <OutputClaim ClaimTypeReferenceId="ageGroupValueChanged" DefaultValue="false" />
</OutputClaims>

Çıkış talep dönüştürmeleri

OutputClaimsTransformations öğesi, talepleri değiştirmek veya yenilerini oluşturmak için kullanılan OutputClaimsTransformation öğelerinin bir koleksiyonunu içerebilir. Aşağıdaki teknik profil RemoveAlternativeSecurityIdByIdentityProvider talep dönüştürmesini çağırır. Bu talep dönüştürmesi , AlternativeSecurityIds koleksiyonundan sosyal kimliği kaldırır. Bu teknik profilin çıkış talepleri, olarak ayarlanmış facebook.comidentityProvider2 ve facebook.com kimlik kaldırıldıktan sonra bu kullanıcıyla ilişkili sosyal kimliklerin listesini içeren AlternativeSecurityIds'dir.

<ClaimsTransformations>
  <ClaimsTransformation Id="RemoveAlternativeSecurityIdByIdentityProvider"
TransformationMethod="RemoveAlternativeSecurityIdByIdentityProvider">
    <InputClaims>
      <InputClaim ClaimTypeReferenceId="IdentityProvider2"
TransformationClaimType="identityProvider" />
      <InputClaim ClaimTypeReferenceId="AlternativeSecurityIds"
TransformationClaimType="collection" />
    </InputClaims>
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="AlternativeSecurityIds"
TransformationClaimType="collection" />
    </OutputClaims>
  </ClaimsTransformation>
</ClaimsTransformations>
...
<TechnicalProfile Id="Facebook-OAUTH-UnLink">
    <DisplayName>Unlink Facebook</DisplayName>
    <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
    <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="identityProvider2" DefaultValue="facebook.com" AlwaysUseDefaultValue="true" />
    </OutputClaims>
    <OutputClaimsTransformations>
        <OutputClaimsTransformation ReferenceId="RemoveAlternativeSecurityIdByIdentityProvider" />
    </OutputClaimsTransformations>
    <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

Talep dönüştürme teknik profili, herhangi bir kullanıcı yolculuğunun düzenleme adımından bir talep dönüştürmesi yürütmenizi sağlar. Aşağıdaki örnekte düzenleme adımı, UnLink-Facebook-OAUTH gibi bağlantıyı kaldırma teknik profillerinden birini çağırır. Bu teknik profil, yeni bir AlternativeSecurityIds2 talebi oluşturan RemoveAlternativeSecurityIdByIdentityProvider çıkış talep dönüşümlerini çağırır. Çıkış talebi, facebook kimliğini koleksiyonlardan kaldırırken kullanıcının sosyal kimliklerinin listesini içerir.

<UserJourney Id="AccountUnLink">
  <OrchestrationSteps>
    ...
    <OrchestrationStep Order="8" Type="ClaimsExchange">
      <ClaimsExchanges>
        <ClaimsExchange Id="UnLinkFacebookExchange" TechnicalProfileReferenceId="UnLink-Facebook-OAUTH" />
        <ClaimsExchange Id="UnLinkMicrosoftExchange" TechnicalProfileReferenceId="UnLink-Microsoft-OAUTH" />
        <ClaimsExchange Id="UnLinkGitHubExchange" TechnicalProfileReferenceId="UnLink-GitHub-OAUTH" />
      </ClaimsExchanges>
    </OrchestrationStep>
    ...
  </OrchestrationSteps>
</UserJourney>

Meta veri

Öznitelik Gerekli Açıklama
IncludeClaimResolvingInClaimsHandling No Giriş ve çıkış talepleri için, talep çözümlemesinin teknik profile dahil edilip edilmeyeceğini belirtir. Olası değerler: trueveya false (varsayılan). Teknik profilde bir talep çözümleyicisi kullanmak istiyorsanız, bu meta verileri olarak trueayarlayın.
ContentDefinitionReferenceId No Bu teknik profille ilişkili içerik tanımının tanımlayıcısı. İçerik tanımı meta verileri FormatLocalizedString, GetLocalizedStringsTransformation ve GetMappedValueFromLocalizedCollection talep dönüştürmeleri için gereklidir.

Doğrulama teknik profili kullanma

Bilgileri doğrulamak için talep dönüştürme teknik profili kullanılabilir. Aşağıdaki örnekte, LocalAccountSignUpWithLogonEmail adlı kendi kendini onaylayan teknik profil, kullanıcıdan e-postayı iki kez girmesini ister, ardından e-postaları doğrulamak için Validate-Email adlı doğrulama teknik profilini çağırır. Validate-Email teknik profili, iki talep e-postasını ve emailRepeat'ı karşılaştırmak için AssertEmailAreEqual talep dönüştürmesini çağırır ve belirtilen karşılaştırmaya göre eşit değilse bir özel durum oluşturur.

<ClaimsTransformations>
  <ClaimsTransformation Id="AssertEmailAreEqual" TransformationMethod="AssertStringClaimsAreEqual">
    <InputClaims>
      <InputClaim ClaimTypeReferenceId="email" TransformationClaimType="inputClaim1" />
      <InputClaim ClaimTypeReferenceId="emailRepeat" TransformationClaimType="inputClaim2" />
    </InputClaims>
    <InputParameters>
      <InputParameter Id="stringComparison" DataType="string" Value="ordinalIgnoreCase" />
    </InputParameters>
  </ClaimsTransformation>
</ClaimsTransformations>

Talep dönüştürme teknik profili, kullanıcı tarafından sağlanan e-postaların aynı olduğunu onaylayan AssertEmailAreEqual talep dönüştürmesini çağırır.

<TechnicalProfile Id="Validate-Email">
  <DisplayName>Unlink Facebook</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="emailRepeat" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="email" />
  </OutputClaims>
  <OutputClaimsTransformations>
    <OutputClaimsTransformation ReferenceId="AssertEmailAreEqual" />
  </OutputClaimsTransformations>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

Kendi kendine onaylanan bir teknik profil doğrulama teknik profilini çağırabilir ve UserMessageIfClaimsTransformationStringsAreNotEqual meta verilerinde belirtildiği gibi hata iletisini gösterebilir.

<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
  <DisplayName>User ID signup</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    ...
    <Item Key="UserMessageIfClaimsTransformationStringsAreNotEqual">The email addresses you provided are not the same</Item>
  </Metadata>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="email" />
    <OutputClaim ClaimTypeReferenceId="emailRepeat" />
    ...
  </OutputClaims>
  <ValidationTechnicalProfiles>
    <ValidationTechnicalProfile ReferenceId="Validate-Email" />
  </ValidationTechnicalProfiles>
</TechnicalProfile>