Condividi tramite


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

Di Valeriy Novytskyy, Rick Anderson e Sharaf Abacery

Questa esercitazione illustra come consentire agli utenti di accedere con il proprio account Google usando il progetto ASP.NET Core creato nella pagina precedente .

Creare l'ID client e il segreto di Google OAuth 2.0

  • Seguire le indicazioni riportate in Integrazione di Google Sign-In nell'app Web (documentazione di Google)

  • Passare a API Google & Services.

  • Un Project deve esistere per primo, potrebbe essere necessario crearne uno. Dopo aver selezionato un progetto, accedi al Dashboard.

  • Nella schermata di consenso OAuth del Dashboard :

    • Selezionare Tipo di utente - esterno e CREATE.
    • Nella finestra di dialogo informazioni sull'app di specificare un nome dell'app per l'app, messaggio di posta elettronica di supporto utentee informazioni di contatto per gli sviluppatori.
    • Procedere con il passaggio Sugli ambiti di .
    • Passare attraverso il passaggio Fase di test degli utenti.
    • Esaminare la schermata di consenso OAuth e tornare all'app Dashboard.
  • Nella scheda credenziali del dashboard dell'applicazione, selezionare CREATE CREDENTIALS>ID client OAuth.

  • Selezionare Tipo di applicazione>'applicazione Web, scegliere un nome .

  • Nella sezione URI di reindirizzamento autorizzati, selezionare AGGIUNGI URI per impostare l'URI di reindirizzamento. Esempio di URI di reindirizzamento: https://localhost:{PORT}/signin-google, dove il segnaposto {PORT} è la porta dell'app.

  • Selezionare il pulsante CREA.

  • Salvare il ID client e segreto client da usare nella configurazione dell'app.

  • Quando si distribuisce il sito, scegliere una delle opzioni seguenti:

    • Aggiornare l'URI di reindirizzamento dell'app nel Google Console all'URI di reindirizzamento distribuito dell'app.
    • Creare una nuova registrazione api Google nel Google Console 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 in Abilitare l'archiviazione privata.

  2. Archiviare le impostazioni riservate nell'archivio segreto locale con le chiavi segrete Authentication:Google:ClientId e Authentication:Google:ClientSecret:

    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, :.

È possibile gestire le credenziali dell'API e l'utilizzo nella console API .

Configurare l'autenticazione di Google

La chiamata a AddIdentity configura le impostazioni predefinite dello schema. 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

  • Ottenere un collegamento alla libreria all'indirizzo collegamento alla libreria per sviluppatori google per ottenere il collegamento della libreria.
  • Passare quindi a pulsante google developer genration
  • Configura il controller in modo che corrisponda all'attributo data-login_uri="{HostName}/{ControllerName}/{actionName}" perché, dopo l'accesso riuscito, sarai reindirizzato a tale collegamento.
  • Creare un controller e un metodo che accetta un argomento string credential, che viene restituito da Google al termine del processo di accesso.
  • Verificare il credential usando la riga di codice seguente: GoogleJsonWebSignature.Payload payload = await GoogleJsonWebSignature.ValidateAsync(credential);
  • Verranno recuperate le informazioni disponibili sull'utente connesso, che potrebbe quindi essere archiviato in un database.

Modificare l'URI di callback predefinito

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 google tramite la proprietà RemoteAuthenticationOptions.CallbackPath ereditata della classe GoogleOptions.

Risoluzione dei problemi

  • Se l'accesso non funziona e non si ricevono errori, passare alla modalità di sviluppo per semplificare il debug del problema.
  • Se Identity non è configurato chiamando services.AddIdentity in ConfigureServices, il tentativo di autenticare genera un'eccezione di tipo ArgumentException: l'opzione 'SignInScheme' deve essere fornita. Il modello di progetto usato in questa esercitazione garantisce che Identity sia configurato.
  • Se il database del sito non è stato creato applicando la migrazione iniziale, si ottiene Un'operazione di database non è riuscita durante l'elaborazione della richiesta errore. Selezionare Applica Migrazioni per creare il database, quindi aggiorna la pagina per continuare oltre l'errore.
  • Errore HTTP 500 dopo aver autenticato correttamente la richiesta dal provider OAuth 2.0, come ad esempio Google: vedere questo problema di GitHuballa sezione .
  • Come implementare l'autenticazione esterna con Google per React e altre app SPA: consulta questo problema di GitHub.

Passaggi successivi

  • Questo articolo ha illustrato come eseguire l'autenticazione con Google. È possibile seguire un approccio simile per l'autenticazione con altri provider elencati nella pagina precedente .
  • Dopo aver pubblicato l'app in Azure, reimpostare il ClientSecret in Google API Console.
  • Impostare Authentication:Google:ClientId e Authentication:Google:ClientSecret come impostazioni dell'applicazione nel portale di Azure. Il sistema di configurazione è configurato per leggere le chiavi dalle variabili di ambiente.