Dela via


Definiera en teknisk profil för anspråkstransformering i en anpassad Azure Active Directory B2C-princip

Anteckning

I Azure Active Directory B2C är anpassade principer främst utformade för att hantera komplexa scenarier. I de flesta scenarier rekommenderar vi att du använder inbyggda användarflöden. Om du inte har gjort det kan du läsa mer om startpaketet för anpassad princip i Kom igång med anpassade principer i Active Directory B2C.

Med en teknisk profil för anspråkstransformering kan du anropa utdataanspråktransformeringar för att manipulera anspråksvärden, verifiera anspråk eller ange standardvärden för en uppsättning utdataanspråk.

Protokoll

Attributet Name för protocol-elementet måste anges till .Proprietary Hanterarattributet måste innehålla det fullständigt kvalificerade namnet på protokollhanterarsammansättningen som används av Azure AD B2C: . Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

I följande exempel visas en teknisk profil för anspråkstransformering:

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

Utdataanspråk

Elementet OutputClaims är obligatoriskt. Ange minst ett utdataanspråk som returneras av den tekniska profilen. I följande exempel visas hur du anger standardvärden i utdataanspråken:

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

Omvandlingar av utdataanspråk

Elementet OutputClaimsTransformations kan innehålla en samling OutputClaimsTransformation-element som används för att ändra anspråk eller generera nya. Följande tekniska profil anropar anspråksomvandlingen RemoveAlternativeSecurityIdByIdentityProvider . Den här anspråkstransformeringen tar bort en social identifiering från samlingen av AlternativeSecurityIds. Utdataanspråken för den här tekniska profilen är identityProvider2, som är inställt på facebook.com, och AlternativeSecurityIds, som innehåller listan över sociala identiteter som är associerade med den här användaren när facebook.com identitet har tagits bort.

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

Med den tekniska profilen för anspråkstransformering kan du köra en anspråkstransformering från alla användarresors orkestreringssteg. I följande exempel anropar orkestreringssteget en av de avlänkade tekniska profilerna, till exempel UnLink-Facebook-OAUTH. Den här tekniska profilen anropar utdataanspråksomvandlingen RemoveAlternativeSecurityIdByIdentityProvider, som genererar ett nytt AlternativeSecurityIds2-anspråk . Utdataanspråket innehåller listan över användarens sociala identiteter, samtidigt som Facebook-identiteten tas bort från samlingarna.

<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

Attribut Krävs Beskrivning
IncludeClaimResolvingInClaimsHandling No För indata- och utdataanspråk anger om anspråksmatchning ingår i den tekniska profilen. Möjliga värden: true, eller false (standard). Om du vill använda en anspråkslösare i den tekniska profilen anger du dessa metadata till true.
ContentDefinitionReferenceId No Identifieraren för innehållsdefinitionen som är associerad med den här tekniska profilen. Innehållsdefinitionsmetadata krävs för Anspråkstransformation för FormatLocalizedString, GetLocalizedStringsTransformation och GetMappedValueFromLocalizedCollection .

Använda en teknisk valideringsprofil

En teknisk profil för anspråkstransformering kan användas för att verifiera information. I följande exempel ber den självsäkra tekniska profilen med namnet LocalAccountSignUpWithLogonEmail användaren att ange e-postmeddelandet två gånger och anropar sedan den tekniska profilenför validering med namnet Validate-Email för att verifiera e-postmeddelandena. Den tekniska profilen Validate-Email anropar anspråksomvandlingen AssertEmailAreEqual för att jämföra de två anspråkens e-post och e-postRepeat och utlöser ett undantag om de inte är lika med den angivna jämförelsen.

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

Den tekniska profilen för anspråkstransformering anropar AssertEmailAreEqual-anspråksomvandlingen , som hävdar att e-postmeddelanden som tillhandahålls av användaren är desamma.

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

En egensäkrad teknisk profil kan anropa den tekniska valideringsprofilen och visa felmeddelandet som anges i metadata för 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>