Creare un'estensione di autenticazione personalizzata per l'avvio e l'invio di eventi della raccolta di attributi (anteprima)
Si applica a: Tenant delle risorse Tenant esterni (altre informazioni)
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 la precompilazione dei valori e visualizzare un errore bloccante.
Suggerimento
Per provare questa funzionalità, passare alla demo di Woodgrove Groceries e avviare il caso d'uso “”Prepopola attributi di iscrizione.
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
Per provare questa funzionalità, passare alla demo di Woodgrove Groceries e avviare il caso d'uso "Convalida attributi di iscrizione" o il caso d'uso "Blocca la possibilità all’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 le Funzioni di Azure si esegue il codice in un ambiente serverless senza dover prima creare una macchina virtuale (VM) o pubblicare un'applicazione Web.
- Per usare i servizi di Azure, tra cui Funzioni di Azure, è necessaria una sottoscrizione di Azure. Se non si ha già un account Azure, è possibile iscriversi a una versione di prova gratuita oppure usare i vantaggi della Sottoscrizione di Visual Studio quando si crea un account.
- Un flusso utente di iscrizione e di accesso.
Passaggio 1: Creare un'API REST per le estensioni di autenticazione personalizzate (app per le funzioni di Azure)
Suggerimento
La procedura descritta in questo articolo può variare leggermente in base al portale di partenza.
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:
Accedere al portale di Azure con un account amministratore.
Nel menu del portale di Azure o dalla pagina Home selezionare Crea una risorsa.
Cercare e selezionare App per le funzioni e selezionare Crea.
Nella pagina Informazioni di base usare le impostazioni dell'app per le funzioni specificate nella tabella seguente:
Impostazione Valore suggerito Descrizione Sottoscrizione Sottoscrizione in uso La sottoscrizione in cui verrà creata questa nuova app per le funzioni. Gruppo di risorse myResourceGroup Selezionare un gruppo risorse esistente, o un nome per un nuovo gruppo di risorse in cui verrà creata 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 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 a sé o vicina ad altri servizi a cui le funzioni possono accedere. Sistema operativo Windows Viene preselezionato automaticamente il sistema operativo 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. Selezionare Rivedi e crea per esaminare le selezioni di configurazione dell’app e quindi selezionare Crea. La distribuzione richiede alcuni minuti.
Una volta distribuito, selezionare Vai alla risorsa per visualizzare la nuova app per le funzioni.
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.
- Nella pagina Panoramica dell'app per le funzioni selezionare il riquadro Funzioni e selezionare Crea funzione in Crea in portale di Azure.
- Nella finestra Crea funzione lasciare la proprietà Ambiente di sviluppo come Sviluppo nel portale. In Modello selezionare Trigger HTTP.
- In Dettagli modello immettere CustomAuthenticationExtensionsAPI per la proprietà Nuova funzione.
- Per il Livello di autorizzazione, selezionare Funzione.
- Seleziona Crea.
- Dal menu, selezionare Codice e test.
- Selezionare la scheda seguente per lo scenario che si vuole implementare: Continua, Blocca o SetPrefillValues. Sostituire il codice con i frammenti di codice forniti.
- 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; }
}
- Dal menu, selezionare Codice e test.
- 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.
- 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; }
}
In questo passaggio, registrare un'estensione per l'autenticazione personalizzata usata da Microsoft Entra per ID per chiamare la funzione di Azure. L'estensione per l'autenticazione personalizzata contiene informazioni sull'endpoint dell'API REST, sulle azioni di avvio e invio della raccolta di attributi analizzata dall'API REST e su come eseguire l'autenticazione con l'API REST.
Accedere all'Interfaccia di amministrazione di Microsoft Entra almeno come Amministratore dell’applicazione e Amministratore dei criteri di autenticazione.
Passare a Identità>Identità esterne>Estensioni dell’autenticazione personalizzate.
Selezionare Crea un'estensione personalizzata.
In Informazioni di base selezionare l'evento AttributeCollectionStart o l'evento AttributeCollectionSubmit e quindi selezionare Avanti. Assicurarsi che corrisponda alla configurazione nel passaggio precedente.
In Configurazione endpoint immettere le proprietà seguenti:
- Nome: un nome per l'estensione di autenticazione personalizzata. Ad esempio, Evento insieme di attributi.
- URL di destinazione:
{Function_Url}
dell'URL di Funzioni di Azure. - Descrizione: descrizione delle estensioni per l'autenticazione personalizzate.
Selezionare Avanti.
In Autenticazione API selezionare l'opzione Crea nuova registrazione app per creare una registrazione dell'app che rappresenta l'app per le funzioni.
Assegnare all'app un nome, ad esempio API degli eventi di autenticazione di Funzioni di Azure.
Selezionare Avanti.
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.
- Passare a Identità>Identità esterne>Estensioni di autenticazione personalizzate (anteprima) .
- Selezionare l'estensione di autenticazione personalizzata dall'elenco.
- 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'autorizzazioneReceive custom authentication extension HTTP requests
. Selezionare Accetto.
Ora è possibile associare l'estensione per l'autenticazione personalizzata a uno o più flussi utente.
Nota
Se si desidera creare un nuovo flusso utente, seguire la procedura Creare un flusso utente di iscrizione e accesso per i clienti.
Accedere all'Interfaccia di amministrazione di Microsoft Entra almeno come Amministratore dell’applicazione e Amministratore dei criteri di autenticazione
Se si ha accesso a più tenant, usare l'icona Impostazioni nel menu in alto per passare al tenant esterno.
Passare a Identità>Identità esterne>Flussi utente.
Selezionare il flusso utente dall'elenco.
Selezionare Estensioni di autenticazione personalizzate.
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 l'icona della 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.
Assicurarsi che le applicazioni elencate accanto a entrambi i passaggi della raccolta di attributi siano corrette.
Seleziona l'icona Salva.
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).
Eseguire questi passaggi per registrare l'applicazione Web jwt.ms:
- Accedere all'Interfaccia di amministrazione di Microsoft Entra almeno come amministratore applicazione.
- Passare a Identità>Applicazioni>Registrazioni applicazioni.
- Seleziona Nuova registrazione.
- Immettere un nome per l'applicazione. Ad esempio, Applicazione di test personale.
- In Tipi di account supportati selezionare Account solo in questa directory organizzativa.
- Nell'elenco a discesa Seleziona una piattaforma in URI di reindirizzamento, selezionare Web e quindi immettere
https://jwt.ms
nella casella di testo dell'URL. - Selezionare Registra per completare la registrazione dell'app.
Copiare l'ID applicazione (client) dalla pagina Panoramica di registrazione dell'app. L'ID app viene definito come <client_id>
nei passaggi successivi. In Microsoft Graph vi si fa riferimento tramite la proprietà appId.
L'applicazione di test jwt.ms usa il flusso implicito. Abilitare il flusso implicito nella registrazione dell'applicazione test personale con i seguenti passaggi.
Importante
Microsoft consiglia di usare il flusso di autenticazione più sicuro disponibile. Il flusso di autenticazione usato per i test in questa procedura richiede un livello di attendibilità molto elevato nell'applicazione e comporta rischi che non sono presenti in altri flussi. Questo approccio non deve essere usato per autenticare gli utenti nelle app di produzione (altre informazioni).
- In Gestisci selezionare Autenticazione.
- In Concessione implicita e flussi ibridi selezionare la casella di controllo token ID (usati per i flussi impliciti e ibridi).
- Seleziona Salva.
L'estensione di autenticazione personalizzata di Microsoft Entra usa il flusso da server a server per ottenere un token di accesso inviato nell'intestazione Authorization
HTTP 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 di integrazione dell'autenticazione di Microsoft Entra, in modo da convalidare i token in ingresso con la registrazione dell'applicazione API degli eventi di autenticazione di 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 al passaggio 5.1 Utilizzo del provider di identità OpenID Connect.
Accedere al portale di Azure.
Passare e selezionare l'app per le funzioni pubblicata in precedenza.
Selezionare Autenticazione dal menu a sinistra.
Selezionare Aggiungi provider di identità.
Selezionare Microsoft come provider di identità.
Selezionare Cliente come tipo di tenant.
In Registrazione app immettere
client_id
della registrazione app API degli eventi di autenticazione di Funzioni di Azure creata in precedenza con la registrazione del provider di attestazioni personalizzate.Per l'URL autorità dell'emittente immettere l'URL
https://{domainName}.ciamlogin.com/{tenant_id}/v2.0
seguente, 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.
In Richieste non autenticate selezionare HTTP 401 Non autorizzato come provider di identità.
Deselezionare l'opzione Archivio token.
Selezionare Aggiungi per aggiungere l'autenticazione alla funzione di Azure.
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:
Accedere al portale di Azure, poi passare e selezionare l'app per le funzioni pubblicata in precedenza.
Selezionare Autenticazione dal menu a sinistra.
Selezionare Aggiungi provider di identità.
Selezionare OpenID Connect come provider di identità.
Specificare un nome, ad esempio Microsoft Entra ID Contoso.
Nella voce metadati immettere l'URL seguente per l'URL del documento. Sostituire
{tenantId}
con l'ID tenant di Microsoft Entra.https://login.microsoftonline.com/{tenantId}/v2.0/.well-known/openid-configuration
In Registrazione app immettere l'ID applicazione (ID client) della registrazione app API degli eventi di autenticazione di Funzioni di Azure creata in precedenza.
Nell'interfaccia di amministrazione di Microsoft Entra:
- Selezionare la registrazione app API degli eventi di autenticazione di Funzioni di Azure creata in precedenza.
- Selezionare Certificati e segreti>Segreti client>Nuovo segreto client.
- Aggiungere una descrizione per il segreto client.
- Selezionare una scadenza per il segreto o specificare una durata personalizzata.
- Selezionare Aggiungi.
- 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.
Tornare alla funzione di Azure e, in Registrazione app, immettere il segreto client.
Deselezionare l'opzione Archivio token.
Selezionare Aggiungi per aggiungere il provider di identità OpenID Connect.
Per testare l'estensione di autenticazione personalizzata, seguire questa procedura:
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.
- Sostituire
Dopo l'accesso, verrà visualizzato il token decodificato all'indirizzo
https://jwt.ms
.