Condividi tramite


Definire un profilo tecnico di trasformazione delle attestazioni in un criterio personalizzato di Azure Active Directory B2C

Nota

In Azure Active Directory B2C i criteri personalizzati sono stati progettati principalmente per far fronte a scenari complessi. Per la maggior parte degli scenari, è consigliabile usare i flussi utente predefiniti. In caso contrario, informazioni sul pacchetto di avvio dei criteri personalizzati in Introduzione ai criteri personalizzati in Active Directory B2C.

Un profilo tecnico di trasformazione delle attestazioni consente di chiamare le trasformazioni delle attestazioni di output, modificare i valori delle attestazioni, convalidare le attestazioni o impostare i valori predefiniti per un set di attestazioni di output.

Protocollo

L'attributo Nome dell'elemento Protocollo deve essere impostato su Proprietary. L'attributo gestore deve contenere il nome completo dell'assembly del gestore di protocollo usato da Azure AD B2C: Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.

Nell'esempio seguente viene illustrato un profilo tecnico di trasformazione delle attestazioni:

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

Attestazioni di output

L'elemento OutputClaims è obbligatorio. Specificare almeno un'attestazione di output restituita dal profilo tecnico. Nell'esempio seguente viene illustrato come impostare i valori predefiniti nelle attestazioni di output:

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

Trasformazioni delle attestazioni di output

L'elemento OutputClaimsTransformations può contenere una raccolta di elementiOutputClaimsTransformation che vengono usati per modificare le attestazioni o generarne di nuove. Il seguente profilo tecnico chiama la trasformazione delle attestazioni RemoveAlternativeSecurityIdByIdentityProvider. Questa trasformazione delle attestazioni elimina un identificatore sociale dalla raccolta di AlternativeSecurityIds. Le attestazioni di output di questo profilo tecnico sono identityProvider2, impostate su facebook.com, e AlternativeSecurityIds, che contiene l'elenco delle identità sociali associate a questo utente, una volta che l'identità facebook.com è stata eliminata.

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

Il profilo tecnico di trasformazione delle attestazioni consente di eseguire una trasformazione delle attestazioni dal passaggio di orchestrazione di qualsiasi percorso utente. Nell'esempio seguente, il passaggio di orchestrazione chiama uno dei profili tecnici di scollegamento, ad esempio UnLink-Facebook-OAUTH. Questo profilo tecnico chiama la trasformazione attestazioni di output RemoveAlternativeSecurityIdByIdentityProvider, che genera una nuova attestazione AlternativeSecurityIds2 . L'attestazione di output contiene l'elenco delle identità social dell'utente, rimuovendo l'identità facebook dalle raccolte.

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

Metadati

Attributo Obbligatoria Descrizione
IncludeClaimResolvingInClaimsHandling No Per le attestazioni di input e output, specifica se la risoluzione delle attestazioni è inclusa nel profilo tecnico. Valori possibili: true o false (impostazione predefinita). Se si vuole usare un sistema di risoluzione delle attestazioni nel profilo tecnico, impostare questi metadati su true.
ContentDefinitionReferenceId No Identificatore della definizione di contenuto associata a questo profilo tecnico. I metadati della definizione del contenuto sono necessari per le trasformazioni delle attestazioni FormatLocalizedString, GetLocalizedStringsTransformation e GetMappedValueFromLocalizedCollection.

Usare un profilo tecnico di convalida

Si può usare un profilo tecnico di trasformazione delle attestazioni per convalidare le informazioni. Nell'esempio seguente, il profilo tecnico autocertificato denominato LocalAccountSignUpWithLogonEmail richiede all'utente di immettere due volte l'e-mail, quindi chiama il profilo tecnico di convalida denominato Convalida-email per convalidare le e-mail. Il profilo tecnicoConvalida-email chiama la trasformazione delle attestazioni AssertEmailAreEqual per confrontare le due attestazioni email e emailRepeate genera un'eccezione se non sono uguali in base al confronto specificato.

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

Il profilo tecnico di trasformazione delle attestazioni chiama la trasformazione delle attestazioni AssertEmailAreEqual secondo cui le e-mail fornite dall'utente sono uguali.

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

Un profilo tecnico autocertificato può chiamare il profilo tecnico di convalida e visualizzare il messaggio di errore come specificato nei metadati 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>