Definiera en teknisk valideringsprofil i en anpassad Azure Active Directory B2C-princip

Kommentar

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.

En teknisk valideringsprofil är en vanlig teknisk profil från alla protokoll, till exempel Microsoft Entra-ID eller ett REST-API. Den tekniska valideringsprofilen returnerar utdataanspråk eller returnerar 4xx HTTP-statuskod med följande data. Mer information finns i returnera felmeddelande

{
    "version": "1.0.0",
    "status": 409,
    "userMessage": "Your error message"
}

Omfattningen för utdataanspråken för en teknisk valideringsprofil är begränsad till den självsäkra tekniska profilen som anropar den tekniska valideringsprofilen och dess tekniska valideringsprofiler. Om du vill använda utdataanspråken i nästa orkestreringssteg lägger du till utdataanspråken i den självsäkra tekniska profilen som anropar den tekniska valideringsprofilen.

Tekniska profiler för validering körs i den sekvens som de visas i elementet ValidationTechnicalProfiles . Du kan konfigurera i en teknisk valideringsprofil om körningen av efterföljande tekniska verifieringsprofiler ska fortsätta om den tekniska valideringsprofilen genererar ett fel eller lyckas.

En teknisk valideringsprofil kan köras villkorligt baserat på förhandsvillkor som definierats i elementet ValidationTechnicalProfile . Du kan till exempel kontrollera om ett specifikt anspråk finns eller om ett anspråk är lika med det angivna värdet eller inte.

En självsäkrad teknisk profil kan definiera en teknisk valideringsprofil som ska användas för att verifiera vissa eller alla utdataanspråk. Alla indataanspråk för den refererade tekniska profilen måste visas i utdataanspråken för den tekniska profilen för referensverifiering.

Kommentar

Endast självsäkra tekniska profiler kan använda tekniska valideringsprofiler. Om du behöver verifiera utdataanspråken från icke-självsäkra tekniska profiler kan du överväga att använda ytterligare ett orkestreringssteg i din användarresa för att hantera den tekniska profil som ansvarar för valideringen.

ValidationTechnicalProfiles

Elementet ValidationTechnicalProfiles innehåller följande element:

Element Händelser beskrivning
ValidationTechnicalProfile 1:n En teknisk profil som ska användas för att verifiera vissa eller alla utdataanspråk för den refererande tekniska profilen.

Elementet ValidationTechnicalProfile innehåller följande attribut:

Attribut Obligatoriskt Beskrivning
ReferenceId Ja En identifierare för en teknisk profil som redan har definierats i principen eller den överordnade principen.
ContinueOnError Nej Anger om valideringen av efterföljande tekniska valideringsprofiler ska fortsätta om den här tekniska valideringsprofilen ger upphov till ett fel. Möjliga värden: true eller false (standard, bearbetning av ytterligare valideringsprofiler stoppas och ett fel returneras).
ContinueOnSuccess Nej Anger om valideringen av efterföljande valideringsprofiler ska fortsätta om den här tekniska valideringsprofilen lyckas. Möjliga värden: true eller false. Standardvärdet är true, vilket innebär att bearbetningen av ytterligare valideringsprofiler fortsätter.

Kommentar

Om du för närvarande anger ContinueOnError till false för en teknisk valideringsprofil av typen ClaimsTransformation, uppfyller inte den tekniska profilen inställningen. Du kan lösa det här problemet genom att använda Förhandsvillkor i stället.

Elementet ValidationTechnicalProfile innehåller följande element:

Element Händelser beskrivning
Förvillkor 0:1 En lista över förhandsvillkor som måste uppfyllas för att den tekniska valideringsprofilen ska kunna köras.

Elementet Villkor innehåller följande attribut:

Attribut Obligatoriskt Beskrivning
Type Ja Typen av kontroll eller fråga som ska utföras för förhandsvillkoret. Antingen ClaimsExist anges för att säkerställa att åtgärder ska utföras om de angivna anspråken finns i användarens aktuella anspråksuppsättning eller ClaimEquals anges att åtgärderna ska utföras om det angivna anspråket finns och dess värde är lika med det angivna värdet.
ExecuteActionsIf Ja Anger om åtgärderna i förhandsvillkoret ska utföras om testet är sant eller falskt.

Elementet Villkor innehåller följande element:

Element Händelser beskrivning
Värde 1:n De data som används av kontrollen. Om typen av den här kontrollen är ClaimsExistanger det här fältet ett ClaimTypeReferenceId att fråga efter. Om typen av kontroll är ClaimEqualsanger det här fältet ett ClaimTypeReferenceId att fråga efter. Medan ett annat värdeelement innehåller det värde som ska kontrolleras.
Åtgärd 1:1 Den åtgärd som ska vidtas om förhandsvillkorskontrollen i ett orkestreringssteg är sann. Värdet för åtgärden är inställt på .SkipThisValidationTechnicalProfile Anger att den associerade tekniska valideringsprofilen inte ska köras.

Exempel

I följande exempel används dessa tekniska valideringsprofiler:

  1. Den första tekniska valideringsprofilen kontrollerar användarautentiseringsuppgifterna och fortsätter inte om ett fel inträffar, till exempel ogiltigt användarnamn eller felaktigt lösenord.
  2. Nästa tekniska verifieringsprofil körs inte om userType-anspråket inte finns eller om värdet för userType är Partner. Den tekniska valideringsprofilen försöker läsa användarprofilen från den interna kunddatabasen och fortsätta om ett fel inträffar, till exempel att REST API-tjänsten inte är tillgänglig eller om det uppstår ett internt fel.
  3. Den senaste tekniska verifieringsprofilen körs inte om userType-anspråket inte har funnits eller om värdet för userType är Customer. Den tekniska verifieringsprofilen försöker läsa användarprofilen från den interna partnerdatabasen och fortsätter om ett fel inträffar, till exempel att REST API-tjänsten inte är tillgänglig eller om det uppstår ett internt fel.
<ValidationTechnicalProfiles>
  <ValidationTechnicalProfile ReferenceId="login-NonInteractive" ContinueOnError="false" />
  <ValidationTechnicalProfile ReferenceId="REST-ReadProfileFromCustomersDatabase" ContinueOnError="true" >
    <Preconditions>
      <Precondition Type="ClaimsExist" ExecuteActionsIf="false">
        <Value>userType</Value>
        <Action>SkipThisValidationTechnicalProfile</Action>
      </Precondition>
      <Precondition Type="ClaimEquals" ExecuteActionsIf="true">
        <Value>userType</Value>
        <Value>Partner</Value>
        <Action>SkipThisValidationTechnicalProfile</Action>
      </Precondition>
    </Preconditions>
  </ValidationTechnicalProfile>
  <ValidationTechnicalProfile ReferenceId="REST-ReadProfileFromPartnersDatabase" ContinueOnError="true" >
    <Preconditions>
      <Precondition Type="ClaimsExist" ExecuteActionsIf="false">
        <Value>userType</Value>
        <Action>SkipThisValidationTechnicalProfile</Action>
      </Precondition>
      <Precondition Type="ClaimEquals" ExecuteActionsIf="true">
        <Value>userType</Value>
        <Value>Customer</Value>
        <Action>SkipThisValidationTechnicalProfile</Action>
      </Precondition>
    </Preconditions>
  </ValidationTechnicalProfile>
</ValidationTechnicalProfiles>