Nastavení externího přihlášení Google v ASP.NET Core
Valeriy Novytskyy, Rick Anderson a Sharaf Abacery
V tomto kurzu se dozvíte, jak uživatelům umožnit přihlášení pomocí svého účtu Google pomocí projektu ASP.NET Core vytvořeného na předchozí stránce.
Vytvoření ID klienta a tajného klíče Google OAuth 2.0
Postupujte podle pokynů v Integrace přihlášení Google do vaší webové aplikace (dokumentace Google)
Přejděte na google API & Services.
Nejprve musí existovat projekt, možná ho budete muset vytvořit. Po výběru projektu zadejte Dashboard.
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ů akontaktní informace pro vývojáře . - Projděte krokem Scopes.
- Postupujte krokem Test uživatelů.
- Zkontrolujte obrazovku souhlasu
OAuth a vraťte se do řídicího paneluaplikace.
Na kartě Přihlašovací údaje řídicího panelu aplikace vyberte VYTVOŘIT PŘIHLAŠOVACÍ ÚDAJE>ID klienta OAuth.
Vyberte typ aplikace>Webová aplikace, zvolte název.
V části Autorizované URI přesměrování vyberte PŘIDAT URI pro nastavení přesměrovacího URI. Příklad identifikátoru URI přesměrování:
https://localhost:{PORT}/signin-google
, kde zástupný symbol{PORT}
představuje port aplikace.Vyberte tlačítko CREATE.
Uložte ID klienta
a tajný klíč klienta pro použití v konfiguraci aplikace.Při nasazování webu si můžete vybrat:
- Aktualizujte identifikátor URI přesměrování aplikace v Google Console na identifikátor URI přesměrování nasazené aplikace.
- Vytvořte novou registraci Google API v konzoli Google Console pro produkční aplikaci s produkčním přesměrovacím URI.
Uložení ID klienta Google a tajného klíče
Uložte citlivá nastavení, jako je ID klienta Google a hodnoty tajných kódů, pomocí
Inicializujte projekt pro tajné úložiště podle pokynů v Aktivace tajného úložiště.
Uložte citlivá nastavení v místním úložišti tajných kódů s tajnými klíči
Authentication:Google:ClientId
aAuthentication: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. Například oddělovač :
není podporován v Bash. Dvojitá podtržítka __
je:
- Podporováno všemi platformami.
- Automaticky nahrazeno dvojtečkou,
:
.
Své přihlašovací údaje a použití rozhraní API můžete spravovat v konzoli rozhraní API .
Konfigurace ověřování Google
- Přidejte do aplikace balíček
Google.Apis.Auth.AspNetCore3
NuGet. - Přidejte ověřovací službu do
program.cs
: - Sledujte
Add Authentication for asp.net app
Volání AddIdentity konfiguruje výchozí nastavení schématu. Přetížení AddAuthentication(IServiceCollection, String) nastavuje vlastnost DefaultScheme. 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í AddAuthentication
přebíjejí předtím nakonfigurované vlastnosti AuthenticationOptions.
Rozšiřující metody AuthenticationBuilder, které registrují obslužnou rutinu pro ověřování, lze volat pouze jednou pro každé ověřovací schéma. Existují přetížení, která umožňují konfigurovat vlastnosti schématu, název schématu a zobrazovaný název.
Přihlášení pomocí Googlu
- Odkaz na knihovnu získáte na Google Developer Library .
- Pak přejděte na Google Developer Button Generation.
- Nastavte kontroler tak, aby odpovídal atributu
data-login_uri="{HostName}/{ControllerName}/{actionName}"
, protože vás po úspěšném přihlášení přesměruje na tento odkaz. - Vytvořte kontroler a akci, která přijímá jeden argument
string credential
, který vrátí Google po dokončení procesu přihlášení. - Pomocí následujícího řádku kódu ověřte
credential
:GoogleJsonWebSignature.Payload payload = await GoogleJsonWebSignature.ValidateAsync(credential);
- Tím se načtou dostupné informace o přihlášeném uživateli, který by pak mohl být uložen v databázi.
Změna výchozího URI zpětného volání
Segment identifikátoru URI /signin-google
je nastavený jako výchozí zpětné volání zprostředkovatele ověřování Google. Výchozí zpětný identifikátor URI můžete změnit při konfiguraci ověřovacího prostředí Google pomocí zděděné vlastnosti RemoteAuthenticationOptions.CallbackPath ze třídy GoogleOptions.
Řešení problémů
- Pokud přihlášení nefunguje a nezobrazují se žádné chyby, přepněte do vývojového režimu, aby se problém snadněji odstranil.
- Pokud Identity není nakonfigurován voláním
services.AddIdentity
vConfigureServices
, výsledkem pokusu o ověření je ArgumentException: Musí být specifikována možnost 'SignInScheme'. Šablona projektu použitá v tomto kurzu zajišťuje konfiguraci Identity. - Pokud nebyla databáze lokality vytvořena použitím počáteční migrace, dojde k selhání operace databáze při zpracování požadavku. Vyberte Použít migrace k vytvoření databáze a aktualizujte stránku, abyste mohli pokračovat po odstranění chyby.
- Chyba HTTP 500 po úspěšném ověření požadavku poskytovatelem OAuth 2.0, jako je Google: viz tento problém na GitHubu (,).
- Jak implementovat externí ověřování pomocí Google for React a dalších aplikací SPA: Viz tento problém na GitHubu.
Další kroky
- Tento článek vám ukázal, jak se můžete ověřit pomocí Googlu. Podobný přístup můžete použít k ověření u jiných poskytovatelů uvedených na předchozí stránce.
- Po publikování aplikace do Azure resetujte
ClientSecret
v konzole Google API Console. - Na webu Azure Portal nastavte
Authentication:Google:ClientId
aAuthentication:Google:ClientSecret
jako nastavení aplikace. Konfigurační systém je nastavený tak, aby načítal klíče z proměnných prostředí.