Dela via


Googles externa inloggningskonfiguration i ASP.NET Core

Av Valeriy Novytskyy, Rick Anderson och Sharaf Abacery

Den här handledningen visar hur du möjliggör för användare att logga in i sitt Google-konto med hjälp av det ASP.NET Core-projekt som skapades på föregående sida.

Skapa Google OAuth 2.0-klient-ID och hemlighet

  • Följ riktlinjerna i Integrera Google Sign-In i din webbapp (Google-dokumentation)

  • Gå till Google API & Services.

  • Ett -projekt måste existera först. Du kan behöva skapa ett. När ett projekt har valts går du in på Instrumentpanelen.

  • På skärmen Oauth-medgivandeInstrumentpanel:

    • Välj användartyp – extern och SKAPA.
    • I dialogrutan Appinformation anger du ett appnamn för appen, e-post för användarsupportoch utvecklarkontaktinformation.
    • Stega igenom steget Scopes.
    • Gå igenom steg för testanvändare.
    • Granska OAuth-medgivandeskärmen och gå tillbaka till appens översikt .
  • På fliken Autentiseringsuppgifter på programinstrumentpanelen väljer du SKAPA AUTENTISERINGSUPPGIFTER>OAuth-klient-ID.

  • Välj Programtyp>webbprogram, välj ett namn.

  • I avsnittet Auktoriserade omdirigerings-URI:er väljer du LÄGG till URI- för att ange omdirigerings-URI:n. Exempel på omdirigerings-URI: https://localhost:{PORT}/signin-google, där platshållaren {PORT} är appens port.

  • Välj knappen SKAPA.

  • Spara klient-ID och klienthemlighet för användning i appens konfiguration.

  • När du distribuerar webbplatsen, gör antingen följande:

    • Uppdatera appens omdirigerings-URI i Google Console till appens distribuerade omdirigerings-URI.
    • Skapa en ny Google API-registrering i Google Console för produktionsappen med dess omdirigerings-URI för produktion.

Lagra Googles klient-ID och hemlighet

Lagra känsliga inställningar som Google-klient-ID och hemliga värden med Secret Manager. Använd följande steg för det här exemplet:

  1. Initiera projektet för hemlig lagring enligt anvisningarna i Aktivera hemlig lagring.

  2. Lagra de känsliga inställningarna i det lokala hemlighetslagret med de hemliga nycklarna Authentication:Google:ClientId och Authentication:Google:ClientSecret:

    dotnet user-secrets set "Authentication:Google:ClientId" "<client-id>"
    dotnet user-secrets set "Authentication:Google:ClientSecret" "<client-secret>"
    

Den : avgränsaren fungerar inte med hierarkiska nycklar för miljövariabler på alla plattformar. Till exempel stöds inte :-avgränsaren av Bash. Det dubbla understrecket, __, är:

  • Stöds av alla plattformar.
  • Ersätts automatiskt av ett kolon, :.

Du kan hantera dina API-autentiseringsuppgifter och användning i API-konsolen.

Konfigurera Google-autentisering

Anropet till AddIdentity konfigurerar standardschemainställningarna. Överlagringen AddAuthentication(IServiceCollection, String) ställer in egenskapen DefaultScheme. Med AddAuthentication(IServiceCollection, Action<AuthenticationOptions>) överlagring kan du konfigurera autentiseringsalternativ, som kan användas för att konfigurera standardautentiseringsscheman för olika syften. Efterföljande anrop till AddAuthentication åsidosätter tidigare konfigurerade egenskaper för AuthenticationOptions.

AuthenticationBuilder tilläggsmetoder som registrerar en autentiseringshanterare kan bara anropas en gång per autentiseringsschema. Det finns överlagringar som gör det möjligt att konfigurera schemaegenskaper, schemanamn och visningsnamn.

Logga in med Google

  • Hämta en länk till biblioteket på google developer library-länken för att få åtkomst till biblioteket.
  • Gå sedan till Google Developer Button Generation
  • Konfigurera din kontrollant så att den matchar data-login_uri="{HostName}/{ControllerName}/{actionName}" attrbute eftersom den vidarebefordrar dig till länken efter att inloggningen har slutförts.
  • Skapa en kontrollant och åtgärd som tar ett argument string credential, som returneras av Google när inloggningsprocessen har slutförts.
  • Kontrollera credential med hjälp av följande kodrad: GoogleJsonWebSignature.Payload payload = await GoogleJsonWebSignature.ValidateAsync(credential);
  • Då hämtas den tillgängliga informationen om den inloggade användaren, som sedan kan lagras i en databas.

Ändra standard-URI:n för återanrop

URI-segmentet /signin-google anges som standardåteranrop för Google-autentiseringsprovidern. Du kan ändra standardanrops-URI:n när du konfigurerar Mellanprogrammet för Google-autentisering via den ärvda egenskapen RemoteAuthenticationOptions.CallbackPath för klassen GoogleOptions.

Felsökning

  • Om inloggningen inte fungerar och du inte får några fel växlar du till utvecklingsläge för att göra problemet enklare att felsöka.
  • Om Identity inte har konfigurerats genom att anropa services.AddIdentity i ConfigureServicesoch du försöker autentisera resulterar det i ArgumentException: Alternativet 'SignInScheme' måste anges. Projektmallen som används i den här självstudien säkerställer att Identity är konfigurerad.
  • Om platsdatabasen inte har skapats genom att tillämpa den första migreringen får du En databasåtgärd misslyckades när begäran bearbetades fel. Välj Använd migreringar för att skapa databasen och uppdatera sidan för att fortsätta förbi felet.
  • HTTP 500-fel efter att begäran har autentiserats av OAuth 2.0-providern, till exempel Google: Se det här GitHub-problemet.
  • Så här implementerar du extern autentisering med Google for React och andra SPA-appar: Se det här GitHub-problemet.

Nästa steg

  • Den här artikeln visade hur du kan autentisera med Google. Du kan följa en liknande metod för att autentisera med andra leverantörer som anges på föregående sida.
  • När du har publicerat appen till Azure återställer du ClientSecret i Google API-konsolen.
  • Ange Authentication:Google:ClientId och Authentication:Google:ClientSecret som programinställningar i Azure-portalen. Konfigurationssystemet är konfigurerat för att läsa nycklar från miljövariabler.