Udostępnij za pośrednictwem


Definiowanie profilu technicznego przekształcania oświadczeń w zasadach niestandardowych usługi Azure Active Directory B2C

Uwaga

W usłudze Azure Active Directory B2C zasady niestandardowe są przeznaczone głównie do rozwiązywania złożonych scenariuszy. W przypadku większości scenariuszy zalecamy używanie wbudowanych przepływów użytkowników. Jeśli nie zostało to zrobione, dowiedz się więcej o niestandardowym pakiecie startowym zasad w temacie Wprowadzenie do zasad niestandardowych w usłudze Active Directory B2C.

Profil techniczny przekształcania oświadczeń umożliwia wywoływanie przekształceń oświadczeń wyjściowych w celu manipulowania wartościami oświadczeń, weryfikowania oświadczeń lub ustawiania wartości domyślnych dla zestawu oświadczeń wyjściowych.

Protokół

Atrybut Name elementu Protocol musi być ustawiony na Proprietarywartość . Atrybut programu obsługi musi zawierać w pełni kwalifikowaną nazwę zestawu procedury obsługi protokołu, który jest używany przez Azure AD B2C: Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.

W poniższym przykładzie przedstawiono profil techniczny przekształcania oświadczeń:

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

Oświadczenia wyjściowe

Element OutputClaims jest obowiązkowy. Podaj co najmniej jedno oświadczenie wyjściowe zwrócone przez profil techniczny. W poniższym przykładzie pokazano, jak ustawić wartości domyślne w oświadczeniach wyjściowych:

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

Przekształcenia oświadczeń wyjściowych

Element OutputClaimsTransformations może zawierać kolekcję elementów OutputClaimsTransformation , które są używane do modyfikowania oświadczeń lub generowania nowych. Poniższy profil techniczny wywołuje przekształcenie oświadczeń RemoveAlternativeSecurityIdByIdentityProvider . To przekształcenie oświadczeń usuwa identyfikację społecznościową z kolekcji AlternativeSecurityIds. Oświadczenia wyjściowe tego profilu technicznego to identityProvider2, który jest ustawiony na facebook.com, i AlternativeSecurityIds, który zawiera listę tożsamości społecznościowych skojarzonych z tym użytkownikiem po usunięciu tożsamości 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>

Profil techniczny przekształcania oświadczeń umożliwia wykonanie transformacji oświadczeń z kroku orkiestracji dowolnego użytkownika. W poniższym przykładzie krok aranżacji wywołuje jeden z profilów technicznych odłączenia, takich jak UnLink-Facebook-OAUTH. Ten profil techniczny wywołuje przekształcenie oświadczeń wyjściowych RemoveAlternativeSecurityIdByIdentityProvider, który generuje nowe oświadczenie AlternativeSecurityIds2 . Oświadczenie wyjściowe zawiera listę tożsamości społecznościowych użytkownika podczas usuwania tożsamości serwisu Facebook z kolekcji.

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

Metadane

Atrybut Wymagane Opis
IncludeClaimResolvingInClaimsHandling Nie W przypadku oświadczeń wejściowych i wyjściowych określa, czy rozpoznawanie oświadczeń jest zawarte w profilu technicznym. Możliwe wartości: true, lub false (wartość domyślna). Jeśli chcesz użyć programu rozpoznawania oświadczeń w profilu technicznym, ustaw te metadane na truewartość .
ContentDefinitionReferenceId Nie Identyfikator definicji zawartości skojarzonej z tym profilem technicznym. Metadane definicji zawartości są wymagane w przypadku przekształceń oświadczeń FormatLocalizedString, GetLocalizedStringsTransformation i GetMappedValueFromLocalizedCollection .

Korzystanie z profilu technicznego weryfikacji

Profil techniczny przekształcania oświadczeń może służyć do weryfikowania informacji. W poniższym przykładzie profil techniczny z potwierdzeniem własnym o nazwie LocalAccountSignUpWithLogonEmail prosi użytkownika o dwukrotne wprowadzenie wiadomości e-mail, a następnie wywołuje profil techniczny weryfikacji o nazwie Validate-Email w celu zweryfikowania wiadomości e-mail. Profil techniczny Validate-Email wywołuje przekształcenie oświadczeń AssertEmailAreEqual w celu porównania dwóch oświadczeń e-mail i emailRepeat i zgłosić wyjątek, jeśli nie są równe zgodnie z określonym porównaniem.

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

Profil techniczny przekształcania oświadczeń wywołuje przekształcenie oświadczeń AssertEmailAreEqual , które potwierdza, że wiadomości e-mail dostarczone przez użytkownika są takie same.

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

Własny profil techniczny może wywołać profil techniczny weryfikacji i wyświetlić komunikat o błędzie określony w metadanych 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>