Condividi tramite


Autenticazione del provider esterno in ASP.NET Core Identity

Da Valeriy Novytskyy e Rick Anderson

Questo articolo illustra come creare un'app ASP.NET Core che consente agli utenti di accedere usando OAuth 2.0 con le credenziali dei provider di autenticazione esterni.

Nelle sezioni seguenti vengono descritti i provider Facebook, Twitter, Google e Microsoft, usando il progetto iniziale creato in questo articolo. Altri provider sono disponibili in pacchetti di terze parti, ad esempio OpenIddict, AspNet.Security.OAuth.Providers e AspNet.Security.OpenId.Providers.

Consentire agli utenti di accedere con le credenziali esistenti è utile per gli utenti e sposta molte delle complessità della gestione del processo di accesso in una terza parte.

Creare un nuovo progetto ASP.NET Core

  • Selezionare il modello App Web ASP.NET Core. Seleziona OK.
  • Nel campo di immissione Tipo di autenticazione, selezionare Account individuali.

Applicare le migrazioni

  • Eseguire l'app e selezionare il collegamento Registra.
  • Immettere l'indirizzo di posta elettronica e la password per il nuovo account, quindi selezionare Registra.
  • Segui le istruzioni per applicare le migrazioni.

Inoltrare le informazioni della richiesta tramite un proxy o un bilanciatore di carico

Se l'app viene distribuita dietro un server proxy o un servizio di bilanciamento del carico, alcune delle informazioni della richiesta originale possono essere inoltrate all'app nelle intestazioni della richiesta. Queste informazioni includono in genere lo schema della richiesta sicura (https), l'host e l'indirizzo IP del client. Le applicazioni non leggono automaticamente queste intestazioni della richiesta per individuare e usare le informazioni della richiesta originale.

Lo schema viene usato nella generazione di collegamenti che influisce sul flusso di autenticazione con provider esterni. La perdita dello schema sicuro (https) fa sì che l'app generi URL di reindirizzamento non sicuri e non corretti.

Utilizzare il middleware delle intestazioni inoltrate per rendere disponibili le informazioni della richiesta originale all'applicazione per l'elaborazione delle richieste.

Per altre informazioni, vedere Configurare ASP.NET Core per l'utilizzo di server proxy e servizi di bilanciamento del carico.

Usare Secret Manager per archiviare i token assegnati dai provider di accesso

I provider di accesso ai social assegnano i token ID applicazione e Segreto dell'applicazione durante il processo di registrazione. La denominazione esatta dei token varia a seconda del provider. Questi token rappresentano le credenziali usate dall'app per accedere all'API del provider. I token costituiscono segreti utente che possono essere collegati alla configurazione dell'app con l'aiuto di Secret Manager. I segreti utente rappresentano un'alternativa più sicura all'archiviazione dei token in un file di configurazione, ad esempio appsettings.json.

Importante

Secret Manager è solo per lo sviluppo e il test locali. Proteggere i segreti di staging e di produzione con il provider di configurazione di Azure Key Vault, che può essere utilizzato anche per lo sviluppo e il test locali se si preferisce non usare il Secret Manager in locale.

Per indicazioni sull'archiviazione dei token assegnati da ogni provider di accesso, vedere Archiviazione sicura dei segreti dell'app in fase di sviluppo in ASP.NET Core.

Configurare i provider di autenticazione

Usare gli articoli seguenti per configurare i provider di accesso e l'app:

Molteplici provider di autenticazione

Quando l'app richiede più provider, concatenare i metodi di estensione del provider in AddAuthentication:

builder.Services.AddAuthentication()
    .AddGoogle(options =>
    {
        // Google configuration options
    })
    .AddFacebook(options =>
    {
        // Facebook configuration options
    })
    .AddMicrosoftAccount(options =>
    {
        // Microsoft Account configuration options
    })
    .AddTwitter(options =>
    {
        // Twitter configuration options
    });

Per indicazioni dettagliate sulla configurazione su ogni provider, vedere i rispettivi articoli.

Facoltativamente, impostare una password

Quando ci si registra con un provider di accesso esterno, non si dispone di una password registrata con l'app. Ciò consente di ridurre la creazione e la memorizzazione di una password per il sito, ma rende anche completamente dipendente dal provider di accesso esterno per l'accesso al sito. Se il provider di accesso esterno non è disponibile, non sarà possibile accedere all'app.

Per creare una password e accedere usando il messaggio di posta elettronica impostato durante il processo di accesso con provider esterni:

  • Selezionare il collegamento Alias< di posta elettronica Hello > nell'angolo superiore destro per passare alla visualizzazione Gestisci:

Vista Gestione dell'applicazione Web

  • Selezionare Crea:

Pagina per impostare la password

  • Impostare una password valida ed è possibile usare questa credenziale per accedere con l'indirizzo di posta elettronica.

Informazioni aggiuntive