Definování technického profilu transformace deklarací identity ve vlastních zásadách Azure Active Directory B2C

Poznámka

V Azure Active Directory B2C jsou vlastní zásady navržené primárně tak, aby řešily složité scénáře. Ve většině scénářů doporučujeme používat předdefinované toky uživatelů. Pokud jste to neudělali, přečtěte si informace o úvodním balíčku vlastních zásad v tématu Začínáme s vlastními zásadami v Active Directory B2C.

Technický profil transformace deklarací identity umožňuje volat transformace výstupních deklarací identity pro manipulaci s hodnotami deklarací identity, ověřování deklarací identity nebo nastavení výchozích hodnot pro sadu výstupních deklarací identity.

Protokol

Atribut Name elementu Protocol musí být nastavený na Proprietary. Atribut obslužné rutiny musí obsahovat plně kvalifikovaný název sestavení obslužné rutiny protokolu, které používá Azure AD B2C: Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.

Následující příklad ukazuje technický profil transformace deklarací identity:

<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" />
  ...

Výstup deklarací identity

Element OutputClaims je povinný. Zadejte alespoň jednu výstupní deklaraci identity vrácenou technickým profilem. Následující příklad ukazuje, jak nastavit výchozí hodnoty ve výstupních deklarací identity:

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

Transformace výstupních deklarací identity

OutputClaimsTransformations Element může obsahovat kolekci OutputClaimsTransformation elementů, které se používají k úpravě deklarací identity nebo generování nových. Následující technický profil volá transformaci deklarací identity RemoveAlternativeSecurityIdByIdentityProvider . Tato transformace deklarací identity odebere sociální identifikaci z kolekce AlternativeSecurityIds. Výstupní deklarace identity tohoto technického profilu jsou identityProvider2, která je nastavená na facebook.com, a AlternativeSecurityIds, která obsahuje seznam sociálních identit přidružených k tomuto uživateli po odebrání identity facebook.com.

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

Technický profil transformace deklarací identity umožňuje spustit transformaci deklarací identity z jakéhokoli kroku orchestrace cesty uživatele. V následujícím příkladu krok orchestrace volá jeden z technických profilů pro zrušení propojení, například UnLink-Facebook-OAUTH. Tento technický profil volá výstupní transformaci deklarací identity RemoveAlternativeSecurityIdByIdentityProvider, která generuje novou deklaraci identity AlternativeSecurityIds2 . Výstupní deklarace identity obsahuje seznam sociálních identit uživatele a zároveň odebere identitu Facebooku z kolekcí.

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

Metadata

Atribut Povinné Popis
IncludeClaimResolvingInClaimsHandling No U vstupních a výstupních deklarací identity určuje, jestli je překlad deklarací zahrnutý v technickém profilu. Možné hodnoty: true, nebo false (výchozí). Pokud chcete v technickém profilu použít překladač deklarací identity, nastavte tato metadata na true.
Id contentDefinitionReferenceId No Identifikátor definice obsahu přidruženého k tomuto technickému profilu. Metadata definice obsahu je vyžadována pro FormatLocalizedString, GetLocalizedStringsTransformation a GetMappedValueFromLocalizedCollection transformace deklarace identity.

Použití technického profilu pro ověření

K ověření informací je možné použít technický profil transformace deklarací identity. V následujícím příkladu technický profil s vlastním potvrzením s názvem LocalAccountSignUpWithLogonEmail požádá uživatele, aby dvakrát zadal e-mail, a pak zavolá ověřovací technický profils názvem Validate-Email k ověření e-mailů. Technický profil Validate-Email volá transformaci deklarací identity AssertEmailAreEqual k porovnání dvou deklarací identity e-mailu a emailRepeat a vyvolá výjimku, pokud nejsou rovny podle zadaného porovnání.

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

Technický profil transformace deklarací identity volá transformaci deklarací identity AssertEmailAreEqual , která potvrzuje, že e-maily poskytnuté uživatelem jsou stejné.

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

Technický profil s vlastním potvrzením může volat technický profil ověření a zobrazit chybovou zprávu, jak je uvedeno v metadatech UserMessageIfClaimsTransformationStringsAreNotEqual .

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