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

Předěly Novytskyy a Rick Anderson

Tento kurz s příklady kódu ukazuje, jak uživatelům umožnit přihlášení pomocí facebookového účtu pomocí ukázkového projektu ASP.NET Core 3.0 vytvořeného na předchozí stránce. Začneme vytvořením ID facebookové aplikace pomocí oficiálního postupu.

Vytvoření aplikace na Facebooku

  • Přidejte do projektu balíček NuGet Microsoft.AspNetCore.Authentication.Facebook.

  • Přejděte na stránku aplikace Vývojáři na Facebooku a přihlaste se. Pokud ještě nemáte facebookový účet, vytvořte si ho pomocí odkazu Zaregistrovat se na Facebooku na přihlašovací stránce. Jakmile budete mít účet na Facebooku, postupujte podle pokynů a zaregistrujte se jako vývojář Facebooku.

  • V nabídce Moje aplikace vyberte Vytvořit aplikaci a vytvořte nové ID aplikace.

    Portál Facebook pro vývojáře otevřený v Microsoft Edge

  • Vyplňte formulář a klepněte na tlačítko Create App ID (Vytvořit ID aplikace).

    Vytvoření nového formuláře ID aplikace

  • Na nové kartě Aplikace vyberte Přidat produkt. Na kartě Přihlášení k Facebooku klikněte na Nastavit.

    Stránka Instalace produktu

  • Spustí se průvodce rychlým startem s první stránkou Zvolit platformu. Teď průvodce obejdete kliknutím na odkaz Přihlášení Nastavení facebooku v nabídce vlevo vlevo níž:

    Přeskočit rychlé zprovoznění

  • Zobrazí se stránka klienta OAuth Nastavení:

    Klientská stránka Nastavení OAuth

  • Do pole Valid OAuth Redirect URIs (Platné identifikátory URI pro přesměrování OAuth) zadejte identifikátor URI pro vývoj s příponou /signin-facebook (například https://localhost:44320/signin-facebook ). Ověřování přes Facebook nakonfigurované dále v tomto kurzu bude automaticky zpracovávat požadavky na trase /signin-facebook pro implementaci toku OAuth.

Poznámka

Identifikátor URI /signin-facebook je nastavený jako výchozí zpětné volání zprostředkovatele ověřování Facebooku. Při konfiguraci ověřovacího middlewaru Facebooku můžete změnit výchozí identifikátor URI zpětného volání prostřednictvím zděděné vlastnosti RemoteAuthenticationOptions.CallbackPath třídy FacebookOptions.

  • Klikněte na Save Changes (Uložit změny).

  • V Nastavení > navigačním panelu klikněte na odkaz Základní.

    Na této stránce si poznamenejte své a App ID App Secret . Obě tyto položky přidáte do ASP.NET Core aplikace v další části:

  • Při nasazování webu je potřeba znovu otevřít stránku pro nastavení přihlášení k Facebooku a zaregistrovat nový veřejný identifikátor URI.

Uložení ID a tajného klíče facebookové aplikace

Pomocí nástroje Secret Manager můžete ukládat citlivá nastavení, jako je ID aplikace Facebook a tajné hodnoty. Pro tuto ukázku použijte následující postup:

  1. Podle pokynů v tématu Povolení úložiště tajných klíče inicializejte projekt pro úložiště tajných klíčů.

  2. Ukládejte citlivá nastavení do místního úložiště tajných klíčů pomocí tajných klíčů a Authentication:Facebook:AppId Authentication:Facebook:AppSecret :

    dotnet user-secrets set "Authentication:Facebook:AppId" "<app-id>"
    dotnet user-secrets set "Authentication:Facebook:AppSecret" "<app-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 :

Konfigurace ověřování přes Facebook

Do metody v souboru ConfigureServices Startup.cs přidejte službu Facebook:

services.AddAuthentication().AddFacebook(facebookOptions =>
{
    facebookOptions.AppId = Configuration["Authentication:Facebook:AppId"];
    facebookOptions.AppSecret = Configuration["Authentication:Facebook:AppSecret"];
});

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í Facebooku

  • Spusťte aplikaci a vyberte Log in (Přihlásit se).
  • V části Použít jinou službu pro přihlášení vyberte Facebook.
  • Budete přesměrováni na Facebook k ověření.
  • Zadejte své přihlašovací údaje pro Facebook.
  • Budete přesměrováni zpět na web, kde můžete nastavit e-mail.

Teď jste přihlášení pomocí svých přihlašovacích údajů pro Facebook:

React zrušit autorizaci externího přihlašování

AccessDeniedPath může poskytnout cestu přesměrování k uživatelskému agentovi, když uživatel neschválí požadovanou žádost o autorizaci.

Následující kód nastaví na AccessDeniedPath "/AccessDeniedPathInfo" :

services.AddAuthentication().AddFacebook(options =>
{
    options.AppId = Configuration["Authentication:Facebook:AppId"];
    options.AppSecret = Configuration["Authentication:Facebook:AppSecret"];
    options.AccessDeniedPath = "/AccessDeniedPathInfo";
});

Doporučujeme, aby AccessDeniedPath stránka obsahovala následující informace:

  • Vzdálené ověřování bylo zrušeno.
  • Tato aplikace vyžaduje ověření.
  • Pokud se chcete přihlásit znovu, vyberte odkaz Přihlásit se.

Test AccessDeniedPath

  • Přejděte na facebook.com
  • Pokud jste přihlášení, musíte se odhlásit.
  • Spusťte aplikaci a vyberte Přihlášení přes Facebook.
  • Vyberte Teď ne. Budete přesměrováni na zadanou AccessDeniedPath stránku.

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 Facebooku najdete v referenčních informacích k rozhraní API FacebookOptions. Možnosti konfigurace lze použít k:

  • Požádejte o různé informace o uživateli.
  • Přidejte argumenty řetězce dotazu pro přizpůsobení přihlašovacího prostředí.

Řešení potíží

  • ASP.NET Core 2.x: Pokud není nakonfigurovaná voláním v , pokus o ověření bude mít za následek výjimku ArgumentException: Musí být k dispozici možnost Identity services.AddIdentity ConfigureServices SignInScheme. Š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. Klepnutím na Použít migrace vytvořte databázi a aktualizujte ji, abyste mohli pokračovat za chybou.

Další kroky

  • Tento článek vám ukázal, jak se můžete ověřit přes Facebook. 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í webu do webové aplikace Azure byste měli resetovat na portálu pro vývojáře AppSecret Facebooku.

  • Nastavte Authentication:Facebook:AppId Authentication:Facebook:AppSecret a jako nastavení aplikace v Azure Portal. Systém konfigurace je nastavený tak, aby načítal klíče z proměnných prostředí.