Een technisch profiel voor claimtransformatie definiëren in een aangepast Azure Active Directory B2C-beleid

Notitie

In Azure Active Directory B2C is een aangepast beleid voornamelijk bedoeld om complexe scenario's aan te pakken. Voor de meeste scenario's raden we u aan de ingebouwde gebruikersstromen te gebruiken. Als u dit nog niet hebt gedaan, vindt u meer informatie over aangepast beleid in het starterspakket in Aan de slag met aangepaste beleidsregels in Active Directory B2C.

Met een technisch profiel voor claimtransformatie kunt u transformaties van uitvoerclaims aanroepen om claimwaarden te bewerken, claims te valideren of standaardwaarden in te stellen voor een set uitvoerclaims.

Protocol

Het kenmerk Naam van het element Protocol moet worden ingesteld op Proprietary. Het handlerkenmerk moet de volledig gekwalificeerde naam bevatten van de protocolhandlerassembly die wordt gebruikt door Azure AD B2C: Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.

In het volgende voorbeeld ziet u een technisch profiel voor claimtransformatie:

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

Uitvoerclaims

Het element OutputClaims is verplicht. Geef ten minste één uitvoerclaim op die wordt geretourneerd door het technische profiel. In het volgende voorbeeld ziet u hoe u standaardwaarden instelt in de uitvoerclaims:

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

Transformaties van uitvoerclaims

Het element OutputClaimsTransformations kan een verzameling OutputClaimsTransformation-elementen bevatten die worden gebruikt om claims te wijzigen of nieuwe te genereren. Met het volgende technische profiel wordt de claimtransformatie RemoveAlternativeSecurityIdByIdentityProvider aangeroepen. Deze claimtransformatie verwijdert een sociale identificatie uit de verzameling AlternativeSecurityIds. De uitvoerclaims van dit technische profiel zijn identityProvider2, die is ingesteld op facebook.comen AlternativeSecurityIds, die de lijst met sociale identiteiten bevat die aan deze gebruiker zijn gekoppeld nadat facebook.com identiteit is verwijderd.

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

Met het technische profiel claimtransformatie kunt u een claimtransformatie uitvoeren vanuit de indelingsstap van een gebruikerstraject. In het volgende voorbeeld roept de indelingsstap een van de technische profielen voor ontkoppelen aan, zoals UnLink-Facebook-OAUTH. Dit technische profiel roept de transformatie van uitvoerclaims RemoveAlternativeSecurityIdByIdentityProvider aan, waarmee een nieuwe AlternativeSecurityIds2-claim wordt gegenereerd. De uitvoerclaim bevat de lijst met sociale identiteiten van de gebruiker, terwijl de Facebook-identiteit uit de verzamelingen wordt verwijderd.

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

Metagegevens

Kenmerk Vereist Beschrijving
IncludeClaimResolvingInClaimsHandling No Geeft voor de invoer- en uitvoerclaims aan of claimsoplossing is opgenomen in het technische profiel. Mogelijke waarden: true of false (standaard). Als u een claim resolver in het technische profiel wilt gebruiken, stelt u deze metagegevens in op true.
ContentDefinitionReferenceId No De id van de inhoudsdefinitie behorende bij dit technische profiel. De metagegevens van de inhoudsdefinitie zijn vereist voor claimtransformaties FormatLocalizedString, GetLocalizedStringsTransformation en GetMappedValueFromLocalizedCollection .

Een technisch validatieprofiel gebruiken

Een technisch profiel voor claimtransformatie kan worden gebruikt om informatie te valideren. In het volgende voorbeeld vraagt het zelf-gecontroleerde technische profiel met de naam LocalAccountSignUpWithLogonEmail de gebruiker om het e-mailbericht tweemaal in te voeren. Vervolgens wordt het technische validatieprofiel met de naam Validate-Email aangeroepen om de e-mailberichten te valideren. Het technische profiel Validate-Email roept de claimtransformatie AssertEmailAreEqual aan om de twee claim-e-mail en emailRepeat te vergelijken en een uitzondering te genereren als ze niet gelijk zijn volgens de opgegeven vergelijking.

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

Het technische profiel voor claimtransformatie roept de claimtransformatie AssertEmailAreEqual aan, waarmee wordt bevestigd dat e-mailberichten die door de gebruiker worden verstrekt, hetzelfde zijn.

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

Een zelf-gecontroleerd technisch profiel kan het technische validatieprofiel aanroepen en het foutbericht weergeven zoals opgegeven in de metagegevens 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>