Condividi tramite


Configurazione dell'account di accesso esterno di Google in ASP.NET Core

Di Valeriy Novytskyy, Rick Anderson e Sharaf Abacery

Questa guida illustra come abilitare l'accesso degli utenti con account Google utilizzando un progetto di esempio ASP.NET Core creato in Uso di provider di accesso esterni con Identity in ASP.NET Core. Seguire le indicazioni ufficiali di Google in Accedi con Google for Web: Configurare per creare un ID client dell'API Google.

Creare l'app in Google

  • Passare alla pagina Google API & Services della piattaforma Google Cloud.
  • Se non esiste alcun progetto, creare un nuovo progetto selezionando il pulsante Crea progetto . Per selezionare un progetto diverso da un progetto esistente caricato, selezionare il pulsante del progetto caricato nell'angolo in alto a sinistra dell'interfaccia utente, seguito dal progetto. Per aggiungere un nuovo progetto, selezionare il pulsante del progetto caricato nell'angolo superiore sinistro dell'interfaccia utente, seguito dal pulsante Nuovo progetto .
  • Quando si crea un nuovo progetto:
    • Immettere il nome del progetto.
    • Facoltativamente, selezionare un'organizzazione per il progetto.
    • Selezionare il pulsante Crea.

Dopo aver creato il progetto, viene caricata la pagina Dashboard del progetto, in cui è possibile configurare il progetto.

Aprire la scheda Credenziali per creare il client OAuth.

Il prerequisito per la creazione delle credenziali consiste nel configurare la schermata di consenso OAuth. Se il consenso non è configurato, viene richiesto di configurare la schermata di consenso.

  • Selezionare Configura schermata di consenso o selezionare la schermata di consenso OAuth nella barra laterale.
  • Nella schermata di consenso OAuth selezionare Inizia.
  • Impostare il nome dell'app e il messaggio di posta elettronica di supporto utente.
  • Impostare il tipo di gruppo di destinatari su Esterno.
  • Aggiungere le informazioni di contatto immettendo un indirizzo di posta elettronica di contatto.
  • Accettare le condizioni.
  • Fare clic su Crea.

Creare le credenziali client per l'app aprendo la voce di menu Client della barra laterale:

  • Selezionare il pulsante Crea client .
  • Selezionare Applicazione Web come Tipo di applicazione.
  • Immettere un nome per il client.
  • Aggiungere un URI di reindirizzamento autorizzato. Per i test locali, usare l'indirizzo https://localhost:{PORT}/signin-googlepredefinito , dove il {PORT} segnaposto è la porta dell'app.
  • Selezionare il pulsante Crea per creare il client.
  • Salvare l'ID client e il segreto client, che vengono usati più avanti nella configurazione dell'app ASP.NET.

Annotazioni

Il segmento URI /signin-google viene impostato come callback predefinito del provider di autenticazione Google. È possibile modificare l'URI di callback predefinito durante la configurazione del middleware di autenticazione di Google tramite la proprietà ereditata RemoteAuthenticationOptions.CallbackPath della GoogleOptions classe .

Quando si distribuisce l'app, è possibile:

  • Aggiornare l'URI di reindirizzamento dell'app nel Google Console all'URI di reindirizzamento distribuito dell'app.
  • Creare una nuova registrazione API Google nella Console Google per l'app di produzione con il relativo URI di reindirizzamento di produzione.

Archiviare l'ID client Google e il segreto

Archiviare impostazioni riservate, ad esempio l'ID client Google e i valori dei segreti, con Secret Manager. Per questo esempio, seguire questa procedura:

  1. Inizializzare il progetto per l'archiviazione privata in base alle istruzioni riportate in Archiviazione sicura dei segreti dell'app in fase di sviluppo in ASP.NET Core.

  2. Archiviare le impostazioni sensibili nell'archivio segreto locale con le chiavi segrete Authentication:Google:ClientId (valore: {CLIENT ID}) e Authentication:Google:ClientSecret (valore: {CLIENT SECRET}).

    dotnet user-secrets set "Authentication:Google:ClientId" "{CLIENT ID}"
    dotnet user-secrets set "Authentication:Google:ClientSecret" "{CLIENT SECRET}"
    

Il separatore : non funziona con le chiavi gerarchica delle variabili di ambiente in tutte le piattaforme. Ad esempio, il separatore di : non è supportato da Bash. Il doppio carattere di sottolineatura, __, è:

  • Supportato da tutte le piattaforme.
  • Sostituito automaticamente da due punti, :.

Gestire le credenziali e l'utilizzo dell'API nella console API.

Configurare l'autenticazione di Google

Aggiungere il servizio di autenticazione al Program file:

services.AddAuthentication().AddGoogle(googleOptions =>
{
    googleOptions.ClientId = configuration["Authentication:Google:ClientId"];
    googleOptions.ClientSecret = configuration["Authentication:Google:ClientSecret"];
});

Aggiungere il servizio di autenticazione a Startup.ConfigureServices:

services.AddAuthentication().AddGoogle(googleOptions =>
{
    googleOptions.ClientId = configuration["Authentication:Google:ClientId"];
    googleOptions.ClientSecret = configuration["Authentication:Google:ClientSecret"];
});

L'overload AddAuthentication(IServiceCollection, String) imposta la proprietà DefaultScheme. L'overload AddAuthentication(IServiceCollection, Action<AuthenticationOptions>) consente di configurare le opzioni di autenticazione, che possono essere usate per configurare schemi di autenticazione predefiniti per scopi diversi. Le chiamate successive a AddAuthentication sostituiscono le proprietà AuthenticationOptions configurate in precedenza.

AuthenticationBuilder metodi di estensione che registrano un gestore di autenticazione possono essere chiamati una sola volta per ogni schema di autenticazione. Esistono sovraccarichi che consentono di configurare le proprietà dello schema, il nome dello schema e il nome visualizzato.

Accedere con Google

  • Avvia l'applicazione e seleziona Accedi.
  • In Usa un altro servizio per accedere selezionare Google.
  • Il browser viene reindirizzato a Google per l'autenticazione.
  • Selezionare l'account Google per accedere o immettere le credenziali di Google.
  • Se si tratta della prima volta che si accede, viene visualizzato un prompt per consentire all'app di accedere alle informazioni sull'account Google.
  • Il browser viene reindirizzato all'app, dove è possibile impostare il messaggio di posta elettronica.

L'utente è ora connesso usando le credenziali di Google.

Risoluzione dei problemi

  • Se l'accesso non funziona senza ricevere errori, passare alla modalità di sviluppo per semplificare il debug dell'app e della registrazione di Google.
  • Se il database del sito non è stato creato applicando la migrazione iniziale, si verifica l'errore seguente: un'operazione di database non è riuscita durante l'elaborazione della richiesta. Selezionare Applica migrazioni per creare il database e aggiornare la pagina per continuare oltre l'errore.
  • Per informazioni su un errore HTTP 500 dopo aver autenticato correttamente la richiesta da parte del provider OAuth 2.0, ad esempio Google, e su come implementare l'autenticazione esterna con Google per le app React e altre app SPA, vedere Middleware not handling 'signin-google' route after successful authentication in Asp.Net Core Web Api External Login Authentication (dotnet/AspNetCore.Docs #14169).

Passaggi successivi

  • Questo articolo illustra l'autenticazione con Google. Per informazioni sull'autenticazione con altri provider esterni, vedere Uso di provider di accesso esterni con Identity in ASP.NET Core.
  • Dopo aver distribuito l'app in Azure, reimpostare il ClientSecret nella console API di Google.
  • Impostare Authentication:Google:ClientId e Authentication:Google:ClientSecret come impostazioni dell'app nel portale di Azure. Il sistema di configurazione è configurato per leggere le chiavi dalle variabili di ambiente.