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>