Nastavení externího přihlášení Google v ASP.NET Core

Valeriy Novytskyy a Rick Anderson

V tomto kurzu se dozvíte, jak uživatelům povolit přihlášení pomocí svého účtu Google pomocí projektu ASP.NET Core vytvořeného na předchozí stránce.

Vytvoření ID a tajného klíče klienta Google OAuth 2.0

  • Postupujte podle pokynů v integraci Google Sign-In do webové aplikace (dokumentace Google).

  • Přejděte ke službám Google API&.

  • Projekt musí nejprve existovat, možná ho budete muset vytvořit. Po výběru projektu zadejte řídicí panel.

  • Na obrazovce souhlasu Oauthřídicího panelu:

    • Vyberte typ uživatele – externí a CREATE.
    • V dialogovém okně Informace o aplikaci zadejte název aplikace , e-mail podpory uživatelů a kontaktní údaje pro vývojáře.
    • Projděte si krok s obory .
    • Projděte si krok testovacích uživatelů .
    • Zkontrolujte obrazovku souhlasu OAuth a vraťte se na řídicí panel aplikace.
  • Na kartě Přihlašovací údaje na řídicím panelu aplikace vyberte ID klienta CREATE CREDENTIALS>OAuth.

  • VyberteWebovou aplikacitypu> Aplikace a zvolte název.

  • V části Identifikátory URI pro autorizované přesměrování vyberte ADD URI a nastavte identifikátor URI přesměrování. Příklad identifikátoru URI přesměrování: https://localhost:{PORT}/signin-google, kde {PORT} zástupný symbol je port aplikace.

  • Vyberte tlačítko CREATE .

  • Uložte ID klienta a tajný klíč klienta pro použití v konfiguraci aplikace.

  • Při nasazování lokality:

    • Aktualizujte identifikátor URI přesměrování aplikace v konzole Google Console na identifikátor URI přesměrování nasazeného aplikace.
    • Vytvořte novou registraci rozhraní Google API v konzole Google Console pro produkční aplikaci s identifikátorem URI pro přesměrování produkčního prostředí.

Uložení ID klienta Google a tajného kódu

Microsoft.AspNetCore.Authentication.Google Přidejte balíček NuGet do aplikace.

Uložte citlivá nastavení, jako je ID klienta Google a hodnoty tajných kódů, pomocí Správce tajných kódů. Pro tuto ukázku použijte následující kroky:

  1. Inicializace projektu pro úložiště tajných kódů podle pokynů v části Povolit úložiště tajných kódů.

  2. Uložte citlivá nastavení do místního úložiště tajných kódů s tajnými klíči Authentication:Google:ClientId a Authentication:Google:ClientSecret:

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

Oddělovač : nefunguje s hierarchickými klíči proměnných prostředí na všech platformách. __, dvojité podtržítko je:

  • Podporované všemi platformami. Oddělovač například :Bash nepodporuje, ale __ je.
  • Automaticky nahrazeno znakem :

Přihlašovací údaje a využití rozhraní API můžete spravovat v konzole rozhraní API.

Konfigurace ověřování Google

Přidejte službu Ověřování do :Startup.ConfigureServices

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<ApplicationDbContext>(options =>
        options.UseSqlServer(
            Configuration.GetConnectionString("DefaultConnection")));
    services.AddDefaultIdentity<IdentityUser>(options =>
        options.SignIn.RequireConfirmedAccount = true)
            .AddEntityFrameworkStores<ApplicationDbContext>();
    services.AddRazorPages();

    services.AddAuthentication()
        .AddGoogle(options =>
        {
            IConfigurationSection googleAuthNSection =
                Configuration.GetSection("Authentication:Google");

            options.ClientId = googleAuthNSection["ClientId"];
            options.ClientSecret = googleAuthNSection["ClientSecret"];
        });
}

Přidejte službu Ověřování do :Program

var builder = WebApplication.CreateBuilder(args);
var services = builder.Services;
var configuration = builder.Configuration;

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

Volání pro AddIdentity konfiguraci výchozího nastavení schématu. Přetížení AddAuthentication(IServiceCollection, String) nastaví DefaultScheme vlastnost. Přetížení AddAuthentication(IServiceCollection, Action<AuthenticationOptions>) umožňuje konfigurovat možnosti ověřování, které lze použít k nastavení výchozích schémat ověřování pro různé účely. Následná volání k AddAuthentication přepsání dříve nakonfigurovaných AuthenticationOptions vlastností

AuthenticationBuilder metody rozšíření, které registrují obslužnou rutinu ověřování, se můžou volat pouze jednou na schéma ověřování. Přetížení existují, které umožňují konfigurovat vlastnosti schématu, název schématu a zobrazovaný název.

Přihlášení pomocí Googlu

  • Spusťte aplikaci a vyberte Přihlásit se. Zobrazí se možnost přihlášení pomocí Googlu.
  • Vyberte tlačítko Google , které přesměruje na Google pro ověření.
  • Po zadání přihlašovacích údajů Google se přesměrujete zpět na web.

Předávání informací o žádostech pomocí proxy serveru nebo nástroje pro vyrovnávání zatížení

Pokud je aplikace nasazená za proxy serverem nebo nástrojem pro vyrovnávání zatížení, některé z původních informací o požadavku se můžou do aplikace předat v hlavičce požadavků. Tyto informace obvykle zahrnují schéma zabezpečených požadavků (https), hostitele a IP adresu klienta. Aplikace tyto hlavičky požadavků automaticky nepřečtou, aby zjistily a používaly původní informace o žádosti.

Schéma se používá v generování propojení, které ovlivňuje tok ověřování s externími poskytovateli. Ztráta zabezpečeného schématu (https) způsobí, že aplikace generuje nesprávné nezabezpečené adresy URL přesměrování.

Pomocí middlewaru Forwarded Headers zpřístupníte původním informacím o požadavku aplikaci pro zpracování požadavků.

Další informace najdete v tématu Konfigurace ASP.NET Core pro práci s proxy servery a nástroji pro vyrovnávání zatížení.

Více zprostředkovatelů ověřování

Pokud aplikace vyžaduje více poskytovatelů, zřetězte metody rozšíření poskytovatele za AddAuthentication:

services.AddAuthentication()
    .AddMicrosoftAccount(microsoftOptions => { ... })
    .AddGoogle(googleOptions => { ... })
    .AddTwitter(twitterOptions => { ... })
    .AddFacebook(facebookOptions => { ... });

Další informace o možnostech konfigurace podporovaných ověřováním Google najdete v GoogleOptions referenčních informacích k rozhraní API . Můžete ho použít k vyžádání různých informací o uživateli.

Změna výchozího identifikátoru URI zpětného volání

Segment /signin-google identifikátoru URI je nastavený jako výchozí zpětné volání zprostředkovatele ověřování Google. Výchozí identifikátor URI zpětného volání můžete změnit při konfiguraci middlewaru ověřování Google prostřednictvím zděděné RemoteAuthenticationOptions.CallbackPath vlastnosti GoogleOptions třídy.

Řešení potíží

  • Pokud přihlášení nefunguje a vy se nezobrazují žádné chyby, přepněte do vývojového režimu, aby se problém snadněji ladil.
  • Pokud Identity není nakonfigurované voláním services.AddIdentityConfigureServices, pokus o ověření výsledků v ArgumentException: Je nutné zadat možnost SignInScheme. Šablona projektu použitá v tomto kurzu zajišťuje Identity konfiguraci.
  • Pokud se databáze lokality nevytvořila použitím počáteční migrace, při zpracování chyby požadavku se zobrazí operace databáze, která selhala . Výběrem možnosti Použít migrace vytvořte databázi a aktualizujte stránku, abyste mohli pokračovat po chybě.

Další kroky

  • Tento článek ukázal, jak se můžete ověřit pomocí Googlu. Můžete postupovat podle podobného přístupu k ověřování u jiných poskytovatelů uvedených na předchozí stránce.
  • Jakmile aplikaci publikujete do Azure, resetujte ClientSecret ji v konzole Google API Console.
  • Authentication:Google:ClientId Nastavte nastavení aplikace a Authentication:Google:ClientSecret jako v Azure Portal. Konfigurační systém je nastavený tak, aby četl klíče z proměnných prostředí.