Share via


Creare un'estensione di autenticazione personalizzata per l'avvio e l'invio di eventi della raccolta di attributi (anteprima)

Si applica a: Microsoft Entra per ID esterno configurazioni dei clienti

Questo articolo descrive come estendere l'esperienza di iscrizione utente in Microsoft Entra per ID esterno per i clienti. Nei flussi utente di iscrizione dei clienti, i listener di eventi possono essere usati per estendere il processo di raccolta degli attributi prima della raccolta di attributi e al momento dell'invio di attributi:

  • L'evento OnAttributeCollectionStart si verifica all'inizio del passaggio della raccolta di attributi prima del rendering della pagina della raccolta di attributi. È possibile aggiungere azioni come il precompilato dei valori e visualizzare un errore di blocco.

    Suggerimento

    Da provare subito

    Per provare questa funzionalità, passare alla demo di Woodgrove Groceries e avviare il caso d'uso "Prepopulate sign-up attributes".

  • L'evento OnAttributeCollectionSubmit si verifica dopo che l'utente immette e invia gli attributi. È possibile aggiungere azioni come la convalida o la modifica delle voci dell'utente.

    Suggerimento

    Da provare subito

    Per provare questa funzionalità, passare alla demo di Woodgrove Groceries e avviare il caso d'uso "Convalidare gli attributi di iscrizione" oppure il caso d'uso "Impedisci a un utente di continuare il processo di iscrizione".

Oltre a creare un'estensione di autenticazione personalizzata per la raccolta di attributi, è necessario creare un'API REST che definisce le azioni del flusso di lavoro da eseguire per ogni evento. È possibile usare qualsiasi linguaggio di programmazione, framework e ambiente di hosting per creare e ospitare l'API REST. Questo articolo illustra un modo rapido per iniziare a usare una funzione di Azure C#. Con Funzioni di Azure, si esegue il codice in un ambiente serverless senza dover prima creare una macchina virtuale (VM) o pubblicare un'applicazione Web.

Prerequisiti

Passaggio 1: Creare un'API REST per le estensioni di autenticazione personalizzate (app per le funzioni di Azure)

Suggerimento

I passaggi descritti in questo articolo possono variare leggermente in base al portale da cui si inizia.

In questo passaggio viene creata un'API della funzione trigger HTTP usando Funzioni di Azure. L'API della funzione è l'origine della logica di business per i flussi utente. Dopo aver creato la funzione trigger, è possibile configurarla per uno degli eventi seguenti:

  1. Accedere al portale di Azure con l'account amministratore.

  2. Nel menu del portale di Azure o dalla pagina Home selezionare Crea una risorsa.

  3. Cercare e selezionare App per le funzioni e selezionare Crea.

  4. Nella pagina Informazioni di base usare le impostazioni dell'app per le funzioni specificate nella tabella seguente:

    Impostazione Valore suggerito Descrizione
    Abbonamento Sottoscrizione in uso Sottoscrizione in cui verrà creata la nuova app per le funzioni.
    Gruppo di risorse myResourceGroup Selezionare e esistente un gruppo di risorse o assegnare un nome al nuovo gruppo di risorse in cui si creerà l'app per le funzioni.
    Nome dell'app per le funzioni Nome globalmente univoco Nome che identifica la nuova app per le funzioni. I caratteri validi sono a-z (senza distinzione tra maiuscole e minuscole), 0-9 e -.
    Pubblicazione Codice Opzione per la pubblicazione di file di codice o di un contenitore Docker. Per questa esercitazione selezionare Codice.
    Stack di runtime .NET Il linguaggio di programmazione preferito. Per questa esercitazione selezionare .NET.
    Versione 6 (LTS) in-process Versione del runtime .NET. In-process indica che è possibile creare e modificare funzioni nel portale, consigliato per questa guida
    Area Area preferita Selezionare un'area vicina o vicina ad altri servizi a cui le funzioni possono accedere.
    Sistema operativo Windows Il sistema operativo è pre-selezionato in base alla selezione dello stack di runtime.
    Tipo di piano Consumo (serverless) Piano di hosting che definisce come vengono allocate le risorse all'app per le funzioni.
  5. Selezionare Rivedi e crea per esaminare le selezioni di configurazione dell'app e quindi selezionare Crea. La distribuzione richiede alcuni minuti.

  6. Dopo la distribuzione, selezionare Vai alla risorsa per visualizzare la nuova app per le funzioni.

1.1 Creare funzioni trigger HTTP

Dopo aver creato l'app per le funzioni di Azure, è possibile creare funzioni trigger HTTP per le azioni che si desidera richiamare con una richiesta HTTP. Ai trigger HTTP viene fatto riferimento e chiamato dall'estensione di autenticazione personalizzata Microsoft Entra.

  1. Nella pagina Panoramica dell'app per le funzioni selezionare il riquadro Funzioni e selezionare Crea funzione in Crea in portale di Azure.
  2. Nella finestra Crea funzione lasciare la proprietà Ambiente di sviluppo come Sviluppo nel portale. In Modello selezionare Trigger HTTP.
  3. In Dettagli modello immettere CustomAuthenticationExtensionsAPI per la proprietà Nuova funzione.
  4. Per Livello di autorizzazione selezionare Funzione.
  5. Seleziona Crea.

1.2 Configurare il trigger HTTP per OnAttributeCollectionStart

  1. Scegliere Codice e test dal menu.
  2. Selezionare la scheda seguente per lo scenario che si vuole implementare: Continua, Blocca o SetPrefillValues. Sostituire il codice con i frammenti di codice forniti.
  3. Dopo aver sostituito il codice, dal menu in alto selezionare Recupera URL funzione e copiare l'URL. Questo URL viene usato nel passaggio 2: Creare e registrare un'estensione di autenticazione personalizzata per l'URL di destinazione.

Usare questo trigger HTTP per consentire all'utente di continuare con il flusso di iscrizione se non sono necessarie altre azioni.

#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 Configurare il trigger HTTP per OnAttributeCollectionSubmit

  1. Scegliere Codice e test dal menu.
  2. Selezionare la scheda seguente per lo scenario che si vuole implementare: Continua, Blocca, Modifica valori o Errore di convalida. Sostituire il codice con i frammenti di codice forniti.
  3. Dopo aver sostituito il codice, dal menu in alto selezionare Recupera URL funzione e copiare l'URL. Questo URL viene usato nel passaggio 2: Creare e registrare un'estensione di autenticazione personalizzata per l'URL di destinazione.

Usare questo trigger HTTP per consentire all'utente di continuare con il flusso di iscrizione se non sono necessarie altre azioni.

#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; }
}

Passaggio 2: Creare e registrare un'estensione di autenticazione personalizzata

In questo passaggio si registra un'estensione di autenticazione personalizzata usata da Microsoft Entra ID per chiamare la funzione di Azure. L'estensione di autenticazione personalizzata contiene informazioni sull'endpoint dell'API REST, la raccolta di attributi avvia e invia azioni analizzate dall'API REST e come eseguire l'autenticazione all'API REST.

  1. Accedere all'interfaccia di amministrazione di Microsoft Entra come almeno un'applicazione Amministrazione istrator e l'autenticazione Amministrazione istrator.

  2. Passare a Identità>esterne - Estensioni> di autenticazione personalizzate.

  3. Selezionare Crea un'estensione personalizzata.

  4. In Informazioni di base selezionare l'evento AttributeCollectionStart o l'evento AttributeCollectionSubmit e quindi selezionare Avanti. Assicurarsi che corrisponda alla configurazione nel passaggio precedente.

  5. In Configurazione endpoint immettere le proprietà seguenti:

    • Nome : nome per l'estensione di autenticazione personalizzata. Ad esempio, On Attribute Collection Event.For example, On Attribute Collection Event.
    • URL di destinazione: dell'URL {Function_Url} della funzione di Azure.
    • Descrizione : una descrizione per le estensioni di autenticazione personalizzate.
  6. Selezionare Avanti.

  7. In Autenticazione API selezionare l'opzione Crea nuova registrazione app per creare una registrazione dell'app che rappresenta l'app per le funzioni.

  8. Assegnare all'app un nome, ad esempio Funzioni di Azure'API degli eventi di autenticazione.

  9. Selezionare Avanti.

  10. Selezionare Crea, che crea l'estensione di autenticazione personalizzata e la registrazione dell'applicazione associata.

Dopo aver creato l'estensione di autenticazione personalizzata, concedere il consenso dell'applicazione all'app registrata, che consente all'estensione di autenticazione personalizzata di eseguire l'autenticazione all'API.

  1. Passare a Identità>esterne - Estensioni>di autenticazione personalizzate (anteprima) .
  2. Selezionare l'estensione di autenticazione personalizzata dall'elenco.
  3. Nella scheda Panoramica selezionare il pulsante Concedi autorizzazione per concedere il consenso amministratore all'app registrata. L'estensione di autenticazione personalizzata usa client_credentials per eseguire l'autenticazione all'app per le funzioni di Azure usando l'autorizzazione Receive custom authentication extension HTTP requests . Selezionare Accetto.

Passaggio 3: Aggiungere l'estensione di autenticazione personalizzata a un flusso utente

È ora possibile associare l'estensione di autenticazione personalizzata a uno o più flussi utente.

Nota

Se è necessario creare un flusso utente, seguire la procedura descritta in Creare un flusso utente di iscrizione e accesso per i clienti.

3.1 Aggiungere l'estensione di autenticazione personalizzata a un flusso utente esistente

  1. Accedere all'interfaccia di amministrazione di Microsoft Entra come almeno un'applicazione Amministrazione istrator e l'autenticazione Amministrazione istrator

  2. Se si ha accesso a più tenant, usare l'icona Impostazioni nel menu in alto per passare al tenant esterno.

  3. Passare a Identità>esterne Flussi> utente.

  4. Selezionare il flusso utente dall'elenco.

  5. Selezionare Estensioni di autenticazione personalizzate.

  6. Nella pagina Estensioni per l'autenticazione personalizzata è possibile associare l'estensione di autenticazione personalizzata a due passaggi diversi nel flusso utente:

    • Prima di raccogliere informazioni dall'utente è associato all'evento OnAttributeCollectionStart . Selezionare la matita di modifica. Verranno visualizzate solo le estensioni personalizzate configurate per l'evento OnAttributeCollectionStart . Selezionare l'applicazione configurata per l'evento di avvio della raccolta di attributi e quindi scegliere Seleziona.
    • Quando un utente invia le informazioni è associato all'evento OnAttributeCollectionSubmit . verranno visualizzate solo le estensioni personalizzate configurate per l'evento OnAttributeCollectionSubmit . Selezionare l'applicazione configurata per l'evento di invio della raccolta di attributi e quindi scegliere Seleziona.
  7. Assicurarsi che le applicazioni elencate accanto a entrambi i passaggi della raccolta di attributi siano corrette.

  8. Seleziona l'icona Salva.

Passaggio 4: Testare l'applicazione

Per ottenere un token e testare l'estensione di autenticazione personalizzata, è possibile usare l'app https://jwt.ms . Si tratta di un'applicazione Web di proprietà di Microsoft che visualizza il contenuto decodificato di un token (il contenuto del token non lascia mai il browser).

Seguire questa procedura per registrare l'applicazione Web jwt.ms :

4.1 Registrare l'applicazione Web jwt.ms

  1. Accedere all'interfaccia di amministrazione di Microsoft Entra come almeno un'applicazione Amministrazione istrator.
  2. Passare a Registrazioni delle applicazioni>di identità>.
  3. Seleziona Nuova registrazione.
  4. Immettere un nome per l'applicazione. Ad esempio, Applicazione test personale.
  5. In Tipi di account supportati selezionare Account solo in questa directory organizzativa.
  6. Nell'elenco a discesa Selezionare una piattaforma in URI di reindirizzamento selezionare Web e quindi immettere https://jwt.ms nella casella di testo URL.
  7. Selezionare Registra per completare la registrazione dell'app.

4.2 Ottenere l'ID applicazione

Nella registrazione dell'app, in Panoramica copiare l'ID applicazione (client). L'ID app viene definito come <client_id> nei passaggi successivi. In Microsoft Graph viene fatto riferimento alla proprietà appId .

4.3 Abilitare il flusso implicito

L'applicazione di test jwt.ms usa il flusso implicito. Abilitare il flusso implicito nella registrazione dell'applicazione Test personale:

  1. In Gestisci selezionare Autenticazione.
  2. In Concessione implicita e flussi ibridi selezionare la casella di controllo Token ID (usati per i flussi impliciti e ibridi).
  3. Seleziona Salva.

Passaggio 5: Proteggere la funzione di Azure

L'estensione di autenticazione personalizzata di Microsoft Entra usa il flusso del server per ottenere un token di accesso inviato nell'intestazione HTTP Authorization alla funzione di Azure. Quando si pubblica la funzione in Azure, in particolare in un ambiente di produzione, è necessario convalidare il token inviato nell'intestazione dell'autorizzazione.

Per proteggere la funzione di Azure, seguire questa procedura per integrare l'autenticazione di Microsoft Entra per convalidare i token in ingresso con la registrazione dell'applicazione API degli eventi di autenticazione Funzioni di Azure.

Nota

Se l'app per le funzioni di Azure è ospitata in un tenant di Azure diverso rispetto al tenant in cui è registrata l'estensione di autenticazione personalizzata, passare a 5.1 Usando OpenID Connessione passaggio del provider di identità.

5.1 Aggiungere un provider di identità alla funzione di Azure

  1. Accedere al portale di Azure.

  2. Esplorare e selezionare l'app per le funzioni pubblicata in precedenza.

  3. Selezionare Autenticazione nel menu a sinistra.

  4. Selezionare Aggiungi provider di identità.

  5. Selezionare Microsoft come provider di identità.

  6. Selezionare Customer (Cliente ) come tipo di tenant.

  7. In Registrazione app immettere la registrazione dell'app per le client_id API degli eventi di autenticazione Funzioni di Azure creata in precedenza durante la registrazione del provider di attestazioni personalizzate.

  8. Per URL autorità di certificazione immettere l'URL https://{domainName}.ciamlogin.com/{tenant_id}/v2.0seguente, dove

    • {domainName} è il nome di dominio del tenant esterno.
    • {tenantId} è l'ID tenant del tenant esterno. L'estensione di autenticazione personalizzata deve essere registrata qui.
  9. In Richieste non autenticate selezionare HTTP 401 Non autorizzato come provider di identità.

  10. Deselezionare l'opzione Archivio token.

  11. Selezionare Aggiungi per aggiungere l'autenticazione alla funzione di Azure.

    Screenshot che mostra come aggiungere l'autenticazione all'app per le funzioni in un tenant esterno.

5.2 Uso di OpenID Connessione provider di identità

Se è stato configurato il passaggio 5: Proteggere la funzione di Azure, ignorare questo passaggio. In caso contrario, se la funzione di Azure è ospitata in un tenant diverso rispetto al tenant in cui è registrata l'estensione di autenticazione personalizzata, seguire questa procedura per proteggere la funzione:

  1. Accedere al portale di Azure, quindi passare e selezionare l'app per le funzioni pubblicata in precedenza.

  2. Selezionare Autenticazione nel menu a sinistra.

  3. Selezionare Aggiungi provider di identità.

  4. Selezionare OpenID Connessione come provider di identità.

  5. Specificare un nome, ad esempio Contoso Microsoft Entra ID.

  6. Nella voce Metadati immettere l'URL seguente per l'URL del documento. Sostituire con l'ID {tenantId} tenant di Microsoft Entra.

    https://login.microsoftonline.com/{tenantId}/v2.0/.well-known/openid-configuration
    
  7. In Registrazione app immettere l'ID applicazione (ID client) della registrazione dell'app per le API degli eventi di autenticazione Funzioni di Azure creata in precedenza.

  8. Nell'interfaccia di amministrazione di Microsoft Entra:

    1. Selezionare la registrazione dell'app per le API degli eventi di autenticazione Funzioni di Azure creata in precedenza.
    2. Selezionare Certificati e segreti Segreti>>client Nuovo segreto client.
    3. Aggiungere una descrizione per il segreto client.
    4. Selezionare una scadenza per il segreto o specificare una durata personalizzata.
    5. Selezionare Aggiungi.
    6. Registrare il valore del segreto da usare nel codice dell'applicazione client. Questo valore del segreto non viene mai più visualizzato dopo aver lasciato questa pagina.
  9. Tornare alla funzione di Azure, nella registrazione dell'app, immettere il segreto client.

  10. Deselezionare l'opzione Archivio token.

  11. Selezionare Aggiungi per aggiungere il provider di identità OpenID Connessione.

Passaggio 6: Testare l'applicazione

Per testare l'estensione di autenticazione personalizzata, seguire questa procedura:

  1. Aprire un nuovo browser privato e passare all'URL seguente:

    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
    
    • Sostituire <domainName> con il nome del tenant esterno e sostituire <tenant-id> con l'ID tenant esterno.
    • Sostituire <client_id> con l'ID per l'applicazione aggiunta al flusso utente.
  2. Dopo l'accesso, verrà visualizzato il token decodificato all'indirizzo https://jwt.ms.

Passaggi successivi