Nastavení externího přihlášení k účtu Microsoft s ASP.NET Core
Předěly Novytskyy a Rick Anderson
Tato ukázka ukazuje, jak uživatelům umožnit přihlášení pomocí pracovního, školního nebo osobního účet Microsoft pomocí projektu ASP.NET Core 3.0 vytvořeného na předchozí stránce.
Vytvoření aplikace na Microsoft Developer Portal
- Přidejte do projektu balíček NuGet Microsoft.AspNetCore.Authentication.MicrosoftAccount.
- Přejděte na stránku Azure Portal – Registrace aplikací a vytvořte nebo se přihlaste k účet Microsoft:
Pokud účet nemáte, účet Microsoft Vytvořit. Po přihlášení budete přesměrováni na Registrace aplikací stránky:
- Vyberte Nová registrace.
- Zadejte Název.
- V seznamu Podporované typy účtů vyberte možnost.
- Balíček ve výchozím nastavení podporuje registrace aplikací vytvořené pomocí možností Účty v libovolném organizačním adresáři nebo Účty v libovolném organizačním adresáři
MicrosoftAccounta účtech Microsoft. - Pokud chcete použít další možnosti, nastavte a členy skupiny použité k inicializaci ověřování účtu Microsoft na adresy URL zobrazené na stránce Koncové body registrace aplikace po vytvoření (dostupné po kliknutí na Koncové body na
AuthorizationEndpointTokenEndpointstránceMicrosoftAccountOptionsPřehled).
- Balíček ve výchozím nastavení podporuje registrace aplikací vytvořené pomocí možností Účty v libovolném organizačním adresáři nebo Účty v libovolném organizačním adresáři
- V části Redirect URI (Identifikátor URI pro přesměrování) zadejte adresu URL pro vývoj s
/signin-microsoftpřipojeným textem . Například,https://localhost:5001/signin-microsoft. Schéma ověřování Microsoftu nakonfigurované dále v této ukázce bude automaticky zpracovávat požadavky na trase za/signin-microsoftúčelem implementace toku OAuth. - Vyberte Zaregistrovat.
Vytvoření tajného klíče klienta
V levém podokně vyberte Certifikáty a & tajné kódy.
V části Tajné kódy klienta vyberte Nový tajný klíč klienta.
- Přidejte popis tajného klíče klienta.
- Vyberte tlačítko Přidat.
V části Tajné kódy klienta zkopírujte hodnotu tajného klíče klienta.
Segment URI je /signin-microsoft nastavený jako výchozí zpětné volání zprostředkovatele ověřování Microsoftu. Při konfiguraci ověřovacího middlewaru Microsoftu 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 MicrosoftAccountOptions.
Uložení ID a tajného klíče klienta Microsoftu
Ukládejte citlivá nastavení, jako je ID aplikace Microsoftu (klienta), které najdete na stránce Přehled v části Registrace aplikace a Tajný kód klienta, které jste vytvořili na stránce Certifikáty & tajných kódů pomocí nástroje Secret Manager. 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:Microsoft:ClientIdAuthentication:Microsoft:ClientSecret:dotnet user-secrets set "Authentication:Microsoft:ClientId" "<client-id>" dotnet user-secrets set "Authentication:Microsoft: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
:
Konfigurace ověřování pomocí účtu Microsoft
Přidejte službu microsoft account service 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().AddMicrosoftAccount(microsoftOptions =>
{
microsoftOptions.ClientId = Configuration["Authentication:Microsoft:ClientId"];
microsoftOptions.ClientSecret = Configuration["Authentication:Microsoft:ClientSecret"];
});
}
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.
Další informace o možnostech konfigurace podporovaných ověřováním účtu Microsoft najdete v referenčních informacích k rozhraní API MicrosoftAccountOptions. Můžete ji použít k vyžádání různých informací o uživateli.
Přihlásit se účtem Microsoft účet
Spusťte aplikaci a klikněte na Log in (Přihlásit se). Zobrazí se možnost přihlášení pomocí Microsoftu. Když kliknete na Microsoft, budete přesměrováni na Microsoft k ověření. Po přihlášení pomocí účtu Microsoft se zobrazí výzva, abyste aplikaci umožní přístup k vašim informacím:
Klepněte na Ano a 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ů Microsoftu:
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 => { ... });
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í.
Řešení potíží
Pokud vás zprostředkovatel účtu Microsoft přesměruje na přihlašovací chybovou stránku, poznamenejte si název chyby a parametry řetězce dotazu popisu přímo za
#(hashtag) v identifikátoru URI.Přestože se zdá, že chybová zpráva indikuje problém s ověřováním Microsoftu, nejčastější příčinou je, že identifikátor URI vaší aplikace se shoduje s žádným z identifikátorů URI přesměrování zadaných pro webovou platformu.
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.AddIdentityConfigureServicesSignInScheme. Šablona projektu použitá v této ukázce zajistí, že se to udělá.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 u Microsoftu. 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 vytvořte nové tajné kódy klienta na Microsoft Developer Portal.
Nastavte
Authentication:Microsoft:ClientIdAuthentication:Microsoft:ClientSecreta jako nastavení aplikace v Azure Portal. Systém konfigurace je nastavený tak, aby načítal klíče z proměnných prostředí.