Skapa ett anpassat autentiseringstillägg för att starta och skicka händelser för attributsamlingen (förhandsversion)

Gäller för:Vit cirkel med en grå X-symbol. Personalklientorganisationer Grön cirkel med en vit bockmarkeringssymbol. Externa klienter (läs mer)

Den här artikeln beskriver hur du utökar användarregistreringsupplevelsen i Microsoft Entra Externt ID för kunder. I användarflöden för kundregistrering kan händelselyssnare användas för att utöka attributinsamlingsprocessen före attributsamlingen och vid tidpunkten för attributöverföring:

  • Händelsen OnAttributeCollectionStart inträffar i början av attributsamlingssteget innan sidan för attributsamling återges. Du kan lägga till åtgärder som att förfylla värden och visa ett blockeringsfel.

    Dricks

    Prova nu

    Om du vill prova den här funktionen går du till Woodgrove Groceries-demonstrationen och startar användningsfallet "Prepopulate sign-up attributes".

  • Händelsen OnAttributeCollectionSubmit inträffar när användaren har angett och skickat attribut. Du kan lägga till åtgärder som att verifiera eller ändra användarens poster.

    Dricks

    Prova nu

    Om du vill testa den här funktionen går du till Woodgrove Groceries-demonstrationen och startar användningsfallet "Verifiera registreringsattribut" eller användningsfallet "Blockera en användare från att fortsätta registreringsprocessen".

Förutom att skapa ett anpassat autentiseringstillägg för att starta och skicka händelser för attributsamlingen måste du skapa ett REST-API som definierar de arbetsflödesåtgärder som ska utföras för varje händelse. Du kan använda valfritt programmeringsspråk, ramverk och värdmiljö för att skapa och vara värd för ditt REST API. Den här artikeln visar ett snabbt sätt att komma igång med en C# Azure-funktion. Med Azure Functions kör du koden i en serverlös miljö utan att först behöva skapa en virtuell dator (VM) eller publicera ett webbprogram.

Förutsättningar

Steg 1: Skapa ett rest-API för anpassade autentiseringstillägg (Azure-funktionsapp)

Dricks

Stegen i den här artikeln kan variera något beroende på vilken portal du börjar från.

I det här steget skapar du ett HTTP-utlösarfunktions-API med hjälp av Azure Functions. Funktions-API:et är källan till affärslogik för dina användarflöden. När du har skapat utlösarfunktionen kan du konfigurera den för någon av följande händelser:

  1. Logga in på Azure Portal med ditt administratörskonto.

  2. På menyn Azure Portal eller på startsidan väljer du Skapa en resurs.

  3. Sök efter och välj Funktionsapp och välj Skapa.

  4. På sidan Grundläggande använder du inställningarna för funktionsappen enligt beskrivningen i följande tabell:

    Inställning Föreslaget värde Beskrivning
    Abonnemang Din prenumeration Prenumerationen där den nya funktionsappen skapas.
    Resursgrupp myResourceGroup Välj och befintlig resursgrupp eller namn på den nya där du skapar funktionsappen.
    Funktionsappens namn Globalt unikt namn Ett namn som identifierar den nya funktionsappen. Giltiga tecken är a-z (skiftlägesokänsliga), 0-9, och -.
    Publicera Kod Alternativ för att publicera kodfiler eller en Docker-container. I den här självstudien väljer du Kod.
    Körningsstack .NÄT Önskat programmeringsspråk. I den här självstudien väljer du .NET.
    Version 6 (LTS) i processen Version av .NET-körningen. Processen innebär att du kan skapa och ändra funktioner i portalen, vilket rekommenderas för den här guiden
    Region Önskad region Välj en region som är nära dig eller nära andra tjänster som dina funktioner kan komma åt.
    Operativsystem Windows Operativsystemet är förvalt baserat på valet av körningsstack.
    Plantyp Förbrukning (serverlös) Värdplan som definierar hur resurser allokeras till din funktionsapp.
  5. Välj Granska + skapa för att granska appkonfigurationsvalen och välj sedan Skapa. Distributionen tar några minuter.

  6. När du har distribuerat väljer du Gå till resurs för att visa din nya funktionsapp.

1.1 Skapa HTTP-utlösarfunktioner

Nu när du har skapat Azure-funktionsappen skapar du HTTP-utlösarfunktioner för de åtgärder som du vill anropa med en HTTP-begäran. HTTP-utlösare refereras till och anropas av ditt anpassade Microsoft Entra-autentiseringstillägg.

  1. På sidan Översikt i funktionsappen väljer du fönstret Funktioner och väljer Skapa funktion under Skapa i Azure Portal.
  2. I fönstret Skapa funktion lämnar du egenskapen Utvecklingsmiljö som Utveckla i portalen. Under Mall väljer du HTTP-utlösare.
  3. Under Mallinformation anger du CustomAuthenticationExtensionsAPI för egenskapen Ny funktion .
  4. För auktoriseringsnivån väljer du Funktion.
  5. Välj Skapa.

1.2 Konfigurera HTTP-utlösaren för OnAttributeCollectionStart

  1. På menyn väljer du Kod + Test.
  2. Välj fliken nedan för det scenario som du vill implementera: Fortsätt, Blockera eller SetPrefillValues. Ersätt koden med de kodfragment som angetts.
  3. När du har ersatt koden går du till den översta menyn och väljer Hämta funktions-URL och kopierar URL:en. Du använder den här URL:en i steg 2: Skapa och registrera ett anpassat autentiseringstillägg för mål-URL.

Använd den här HTTP-utlösaren för att tillåta att användaren fortsätter med registreringsflödet om ingen ytterligare åtgärd behövs.

#r "Newtonsoft.Json"

using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
using System.Text;

public static async Task<object> Run(HttpRequest req, ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");

    string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
    dynamic request = JsonConvert.DeserializeObject(requestBody);


    var actions = new List<ContinueWithDefaultBehavior>{
        new ContinueWithDefaultBehavior { type = "microsoft.graph.attributeCollectionStart.continueWithDefaultBehavior"}
    };

    var dataObject = new Data {
        type = "microsoft.graph.onAttributeCollectionStartResponseData",
        actions= actions
    };

    dynamic response = new ResponseObject {
        data = dataObject
    };

    // Send the response
    return response;
}

public class ResponseObject
{
    public Data data { get; set; }
}

[JsonObject]
public class Data {
    [JsonProperty("@odata.type")]
    public string type { get; set; }
    public List<ContinueWithDefaultBehavior> actions { get; set; }
}

[JsonObject]
public class ContinueWithDefaultBehavior {
    [JsonProperty("@odata.type")]
    public string type { get; set; }
}

1.3 Konfigurera HTTP-utlösaren för OnAttributeCollectionSubmit

  1. På menyn väljer du Kod + Test.
  2. Välj fliken nedan för det scenario som du vill implementera: Fortsätt, Blockera, Ändra värden eller Valideringsfel. Ersätt koden med de kodfragment som angetts.
  3. När du har ersatt koden går du till den översta menyn och väljer Hämta funktions-URL och kopierar URL:en. Du använder den här URL:en i steg 2: Skapa och registrera ett anpassat autentiseringstillägg för mål-URL.

Använd den här HTTP-utlösaren för att tillåta att användaren fortsätter med registreringsflödet om ingen ytterligare åtgärd behövs.

#r "Newtonsoft.Json"

using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
using System.Text;

public static async Task<object> Run(HttpRequest req, ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");

    string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
    dynamic request = JsonConvert.DeserializeObject(requestBody);
    
    var actions = new List<ContinueWithDefaultBehavior>{
        new ContinueWithDefaultBehavior { type = "microsoft.graph.attributeCollectionSubmit.continueWithDefaultBehavior"}
    };
						
    var dataObject = new Data {
        type = "microsoft.graph.onAttributeCollectionSubmitResponseData",
        actions= actions
    };
	    
	dynamic response = new ResponseObject {
        data = dataObject
    };

    // Send the response
    return response;
}

public class ResponseObject
{
    public Data data { get; set; }
}

[JsonObject]
public class Data {
    [JsonProperty("@odata.type")]
    public string type { get; set; }
    
    public List<ContinueWithDefaultBehavior> actions { get; set; }
}

[JsonObject]
public class ContinueWithDefaultBehavior {
    [JsonProperty("@odata.type")]
	public string type { get; set; }
}

Steg 2: Skapa och registrera ett anpassat autentiseringstillägg

I det här steget registrerar du ett anpassat autentiseringstillägg som används av Microsoft Entra-ID för att anropa din Azure-funktion. Det anpassade autentiseringstillägget innehåller information om din REST API-slutpunkt, attributsamlingen startar och skickar åtgärder som den parsar från rest-API:et och hur du autentiserar till rest-API:et.

  1. Logga in på administrationscentret för Microsoft Entra som minst programadministratör och autentiseringsadministratör.

  2. Bläddra till Anpassade autentiseringstillägg för identiteter>för externa identiteter.>

  3. Välj Skapa ett anpassat tillägg.

  4. I Grundläggande väljer du händelsen AttributeCollectionStart eller händelsen AttributeCollectionSubmit och väljer sedan Nästa. Kontrollera att detta matchar konfigurationen i föregående steg.

  5. Fyll i följande egenskaper i Slutpunktskonfiguration:

    • Namn – Ett namn på ditt anpassade autentiseringstillägg. Till exempel Händelsen För attributsamling.
    • Mål-URL – Url:en för {Function_Url} din Azure-funktion.
    • Beskrivning – En beskrivning av dina anpassade autentiseringstillägg.
  6. Välj Nästa.

  7. I API-autentisering väljer du alternativet Skapa ny appregistrering för att skapa en appregistrering som representerar din funktionsapp.

  8. Ge appen ett namn, till exempel API för Azure Functions-autentiseringshändelser.

  9. Välj Nästa.

  10. Välj Skapa, vilket skapar det anpassade autentiseringstillägget och den associerade programregistreringen.

När ditt anpassade autentiseringstillägg har skapats beviljar du programmets medgivande till den registrerade appen, vilket gör att det anpassade autentiseringstillägget kan autentisera till ditt API.

  1. Bläddra till Anpassade autentiseringstillägg för identitets>externa identiteter>(förhandsversion).
  2. Välj ditt anpassade autentiseringstillägg i listan.
  3. På fliken Översikt väljer du knappen Bevilja behörighet för att ge administratören medgivande till den registrerade appen. Det anpassade autentiseringstillägget använder client_credentials för att autentisera till Azure-funktionsappen med hjälp av behörigheten Receive custom authentication extension HTTP requests . Välj Acceptera.

Steg 3: Lägg till det anpassade autentiseringstillägget i ett användarflöde

Nu kan du associera det anpassade autentiseringstillägget med ett eller flera av dina användarflöden.

Not

Om du behöver skapa ett användarflöde följer du stegen i Skapa ett användarflöde för registrering och inloggning för kunder.

3.1 Lägg till det anpassade autentiseringstillägget i ett befintligt användarflöde

  1. Logga in på administrationscentret för Microsoft Entra som minst programadministratör och autentiseringsadministratör

  2. Om du har åtkomst till flera klienter använder du ikonen Inställningar på den översta menyn för att växla till din externa klientorganisation.

  3. Bläddra till Användarflöden för identiteter>för externa identiteter.>

  4. Välj användarflödet i listan.

  5. Välj Anpassade autentiseringstillägg.

  6. På sidan Anpassade autentiseringstillägg kan du associera ditt anpassade autentiseringstillägg med två olika steg i användarflödet:

    • Innan du samlar in information från användaren associeras med händelsen OnAttributeCollectionStart . Välj redigeringspennan. Endast de anpassade tillägg som konfigurerats för händelsen OnAttributeCollectionStart visas. Välj det program som du konfigurerade för attributsamlingens starthändelse och välj sedan Välj.
    • När en användare skickar sin information associeras med händelsen OnAttributeCollectionSubmit . endast de anpassade tillägg som konfigurerats för händelsen OnAttributeCollectionSubmit visas. Välj det program som du konfigurerade för attributsamlingens sändningshändelse och välj sedan Välj.
  7. Kontrollera att de program som anges bredvid båda attributsamlingsstegen är korrekta.

  8. Välj ikonen Spara.

Steg 4: Testa programmet

Om du vill hämta en token och testa tillägget för anpassad autentisering kan du använda https://jwt.ms appen. Det är ett Microsoft-ägt webbprogram som visar det avkodade innehållet i en token (innehållet i token lämnar aldrig webbläsaren).

Följ dessa steg för att registrera jwt.ms webbappen:

4.1 Registrera jwt.ms webbappen

  1. Logga in på administrationscentret för Microsoft Entra som minst programadministratör.
  2. Bläddra till Programregistreringar för identitetsprogram>>.
  3. Välj Ny registrering.
  4. Ange ett namn för programmet. Till exempel Mitt testprogram.
  5. Under Kontotyper som stöds väljer du Endast Konton i den här organisationskatalogen.
  6. I listrutan Välj en plattform i Omdirigerings-URI väljer du Webb och anger https://jwt.ms sedan i textrutan URL.
  7. Välj Registrera för att slutföra appregistreringen.

4.2 Hämta program-ID

I din appregistrering, under Översikt, kopierar du program-ID:t (klient). App-ID:t kallas <client_id> i senare steg. I Microsoft Graph refereras den av egenskapen appId .

4.3 Aktivera implicit flöde

Det jwt.ms testprogrammet använder det implicita flödet. Aktivera implicit flöde i registreringen av mitt testprogram med följande steg.

Viktig

Microsoft rekommenderar att du använder det säkraste tillgängliga autentiseringsflödet. Det autentiseringsflöde som används för testning i den här proceduren kräver en mycket hög grad av förtroende för programmet och medför risker som inte finns i andra flöden. Den här metoden bör inte användas för att autentisera användare till dina produktionsappar (läs mer).

  1. Under Hantera väljer du Autentisering.
  2. Under Implicit beviljande och hybridflöden markerar du kryssrutan ID-token (används för implicita flöden och hybridflöden).
  3. Välj Spara.

Steg 5: Skydda din Azure-funktion

Microsoft Entra-tillägget för anpassad autentisering använder server-till-server-flöde för att hämta en åtkomsttoken som skickas i HTTP-huvudet till din Azure-funktion Authorization . När du publicerar din funktion till Azure, särskilt i en produktionsmiljö, måste du verifiera token som skickas i auktoriseringshuvudet.

Om du vill skydda din Azure-funktion följer du de här stegen för att integrera Microsoft Entra-autentisering för att verifiera inkommande token med din Api-programregistrering för Azure Functions-autentiseringshändelser.

Not

Om Azure-funktionsappen finns i en annan Azure-klientorganisation än den klientorganisation där ditt anpassade autentiseringstillägg är registrerat går du vidare till 5.1 Med hjälp av steget OpenID Connect-identitetsprovider .

5.1 Lägg till en identitetsprovider i din Azure-funktion

  1. Logga in på Azure Portal.

  2. Navigera och välj den funktionsapp som du publicerade tidigare.

  3. Välj Autentisering i menyn till vänster.

  4. Välj Lägg till identitetsprovider.

  5. Välj Microsoft som identitetsprovider.

  6. Välj Kund som klienttyp.

  7. Under Appregistrering anger du client_id den api-appregistrering för Azure Functions-autentiseringshändelser som du skapade tidigare när du registrerade den anpassade anspråksprovidern.

  8. För utfärdarens URL anger du följande URL https://{domainName}.ciamlogin.com/{tenant_id}/v2.0, där

    • {domainName} är domännamnet för din externa klientorganisation.
    • {tenantId} är klientorganisations-ID för din externa klientorganisation. Ditt anpassade autentiseringstillägg bör registreras här.
  9. Under Oautentiserade begäranden väljer du HTTP 401 Obehörig som identitetsprovider.

  10. Avmarkera alternativet Tokenlagring .

  11. Välj Lägg till för att lägga till autentisering i din Azure-funktion.

    Skärmbild som visar hur du lägger till autentisering i funktionsappen i en extern klientorganisation.

5.2 Använda OpenID Connect-identitetsprovider

Om du har konfigurerat steg 5: Skydda din Azure-funktion hoppar du över det här steget. Om Azure-funktionen annars finns i en annan klientorganisation än klientorganisationen där ditt anpassade autentiseringstillägg är registrerat följer du dessa steg för att skydda din funktion:

  1. Logga in på Azure Portal, navigera och välj sedan den funktionsapp som du tidigare publicerade.

  2. Välj Autentisering i menyn till vänster.

  3. Välj Lägg till identitetsprovider.

  4. Välj OpenID Connect som identitetsprovider.

  5. Ange ett namn, till exempel Contoso Microsoft Entra-ID.

  6. Under posten Metadata anger du följande URL till dokument-URL:en. Ersätt med ditt Klient-ID för {tenantId} Microsoft Entra.

    https://login.microsoftonline.com/{tenantId}/v2.0/.well-known/openid-configuration
    
  7. Under Appregistrering anger du program-ID (klient-ID) för api-appregistreringen för Azure Functions-autentiseringshändelser som du skapade tidigare.

  8. I administrationscentret för Microsoft Entra:

    1. Välj api-appregistreringen för Azure Functions-autentiseringshändelser som du skapade tidigare.
    2. Välj Certifikat och hemligheter>Klienthemligheter>Ny klienthemlighet.
    3. Lägg till en beskrivning av klienthemligheten.
    4. Välj en förfallotid för hemligheten eller ange en anpassad livslängd.
    5. Välj Lägg till.
    6. Registrera hemlighetens värde för användning i klientprogramkoden. Det här hemliga värdet visas aldrig igen när du har lämnat den här sidan.
  9. Gå tillbaka till Azure-funktionen under Appregistreringen och ange klienthemligheten.

  10. Avmarkera alternativet Tokenlagring .

  11. Välj Lägg till för att lägga till OpenID Connect-identitetsprovidern.

Steg 6: Testa programmet

Följ dessa steg för att testa ditt anpassade autentiseringstillägg:

  1. Öppna en ny privat webbläsare och gå till följande URL:

    https://<domainName>.ciamlogin.com/<tenant_id>/oauth2/v2.0/authorize?client_id=<client_id>&response_type=code+id_token&redirect_uri=https://jwt.ms&scope=openid&state=12345&nonce=12345
    
    • Ersätt <domainName> med ditt externa klientnamn och ersätt <tenant-id> med ditt externa klientorganisations-ID.
    • Ersätt <client_id> med ID:t för programmet som du lade till i användarflödet.
  2. När du har loggat in visas din avkodade token på https://jwt.ms.

Nästa steg