Nastavení externího přihlášení Google v ASP.NET Core
Předěly Novytskyy a Rick Anderson
V tomto kurzu se ukáže, jak uživatelům povolit přihlášení pomocí účtu Google pomocí projektu ASP.NET Core 3.0 vytvořeného na předchozí stránce.
Vytvoření projektu konzoly Rozhraní API Google a ID klienta
- Přidejte do aplikace balíček NuGet Microsoft.AspNetCore.Authentication.Google.
- Postupujte podle pokynů v tématu Integrace google Sign-In do webové aplikace (dokumentace Google).
- Na stránce Credentials (Přihlašovací údaje) konzoly Googlevyberte CREATE CREDENTIALS OAuth client ID (VYTVOŘIT PŘIHLAŠOVACÍ ÚDAJE ID klienta > OAuth).
- V dialogovém okně Typ aplikace vyberte Webová aplikace. Zadejte Název aplikace.
- V části Autorizované identifikátory URI 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 zástupný symbol je port{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 na nasazený identifikátor URI přesměrování aplikace.
- V konzole Google Console vytvořte novou registraci rozhraní Google API pro produkční aplikaci s identifikátorem URI pro přesměrování produkce.
Uložení ID a tajného klíče klienta Google
Ukládejte citlivá nastavení, jako je ID klienta Google a hodnoty tajných klíčů, pomocí Secret Manageru. Pro tuto ukázku použijte následující postup:
Podle pokynů v tématu Povolení úložiště tajných klíče inicializejte projekt pro úložiště tajných klíčů.
Ukládejte citlivá nastavení do místního úložiště tajných klíčů pomocí tajných klíčů a
Authentication:Google:ClientIdAuthentication: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é prostředí na všech platformách. __, je dvojité podtržítko:
- Podporováno všemi platformami. Například
:oddělovač není podporován bash, ale__je. - Automaticky nahrazeno
:
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 Google 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"];
});
}
Volání AddIdentity nakonfiguruje výchozí nastavení schématu. Přetížení AddAuthentication (String) nastaví vlastnost DefaultScheme . Přetížení AddAuthentication (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í AddAuthentication přepsat dříve nakonfigurované vlastnosti AuthenticationOptions .
Metody rozšíření AuthenticationBuilder , které registrují obslužnou rutinu ověřování, se můžou volat jenom jednou pro každé schéma ověřování. Existují přetížení, která umožňují konfigurovat vlastnosti schématu, název schématu a zobrazované jméno.
Přihlášení pomocí Googlu
- Spusťte aplikaci a klikněte na Log in (Přihlásit se). Zobrazí se možnost přihlášení pomocí Googlu.
- Klikněte na tlačítko Google, které se přesměruje na Google k ověření.
- Po zadání přihlašovacích údajů Google budete přesměrováni zpět na web.
Dopředné informace o žádosti pomocí proxy serveru nebo nástroje pro vyrovnávání zatížení
Pokud je aplikace nasazená za proxy server nebo nástrojem pro vyrovnávání zatížení, můžou se některé původní informace žádosti přeslat do aplikace v hlavičkách žádostí. Tyto informace obvykle zahrnují schéma zabezpečeného požadavku ( https ), hostitele a IP adresu klienta. Aplikace nečtou tyto hlavičky požadavků automaticky ke zjištění a používání původních informací o požadavku.
Schéma se používá v generaci odkazů, které má vliv na tok ověřování s externími poskytovateli. Výsledkem ztráty zabezpečeného schématu ( https ) je, že aplikace generuje nesprávné adresy URL nezabezpečeného přesměrování.
Použijte middleware předaných hlaviček k zpřístupnění původních informací o požadavku aplikaci pro zpracování žádostí.
Další informace naleznete v tématu Konfigurace ASP.NET Core pro práci s proxy servery a nástroji pro vyrovnávání zatížení.
Zprostředkovatelé více ověřování
Když aplikace vyžaduje víc poskytovatelů, nařetězení rozšiřujících metod 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 GoogleOptions v referenčních informacích k rozhraní API. Můžete ji 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 URI /signin-google 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 ověřovacího middlewaru Google prostřednictvím zděděné RemoteAuthenticationOptions.CallbackPath vlastnosti třídy GoogleOptions .
Řešení potíží
- Pokud přihlášení nefunguje a nezůstane vám žádné chyby, přepněte do vývojového režimu, aby se problém snadněji ladí.
- Pokud není nakonfigurovaná voláním v , musí být při pokusu o ověření výsledků ve výjimce ArgumentException k dispozici možnost Identity
services.AddIdentityConfigureServicesSignInScheme. Šablona projektu použitá v tomto kurzu zajistí, že to bude hotové. - Pokud se databáze lokality nevytyla pomocí počáteční migrace, zobrazí se při zpracování chyby požadavku 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 za chybou.
Další kroky
- Tento článek vám ukázal, jak se můžete ověřit u Googlu. Podobným způsobem můžete provést ověření u jiných zprostředkovatelů uvedených na předchozí stránce.
- Po publikování aplikace do Azure resetujte v
ClientSecretkonzole google API. - Nastavte
Authentication:Google:ClientIdAuthentication:Google:ClientSecreta jako nastavení aplikace v Azure Portal. Systém konfigurace je nastavený tak, aby načítal klíče z proměnných prostředí.