Nastavení externího přihlášení k účtu Microsoft pomocí ASP.NET Core

Autoři: Valerij Novytskyj a Rick Anderson

Tato ukázka ukazuje, jak uživatelům povolit přihlášení pomocí svého pracovního, školního nebo osobního účtu Microsoft pomocí projektu ASP.NET Core 6.0 vytvořeného na předchozí stránce.

Vytvoření aplikace na portálu Microsoft Developer Portal

Pokud účet Microsoft nemáte, vyberte Vytvořit. Po přihlášení budete přesměrováni na stránku Registrace aplikací:

  • Výběr možnosti Nová registrace
  • Zadejte Název.
  • Vyberte možnost pro podporované typy účtů.
    • Balíček MicrosoftAccount podporuje registrace aplikací vytvořené pomocí možností "Účty v libovolném adresáři organizace" nebo "Účty v libovolném adresáři organizace a účtech Microsoft" ve výchozím nastavení.
    • Pokud chcete použít další možnosti, nastavte a členy používané k inicializaci ověřování účtu Microsoft na adresy URL zobrazené na stránce Koncové body registrace aplikace po jejím vytvoření (k dispozici kliknutím na koncové body na stránce Přehled).MicrosoftAccountOptionsTokenEndpointAuthorizationEndpoint
  • V části Identifikátor URI přesměrování zadejte adresu URL pro vývoj s připojeným kódem /signin-microsoft . Například https://localhost:5001/signin-microsoft. Schéma ověřování Microsoftu nakonfigurované později v této ukázce automaticky zpracuje požadavky na /signin-microsoft trasu pro implementaci toku OAuth.
  • Výběr možnosti 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 /signin-microsoft identifikátoru URI je nastavený jako výchozí zpětné volání zprostředkovatele ověřování Microsoftu. Výchozí identifikátor URI zpětného volání můžete změnit při konfiguraci middlewaru ověřování Microsoftu prostřednictvím zděděné RemoteAuthenticationOptions.CallbackPath vlastnosti MicrosoftAccountOptions třídy.

Uložení ID a tajného klíče klienta Microsoftu

Uložte citlivá nastavení, jako je ID aplikace Microsoftu (klienta), které najdete na stránce Přehled registrace aplikace a tajného klíče klienta, které jste vytvořili na stránce Certifikáty a tajné kódy pomocí Správce tajných kódů. Pro tuto ukázku použijte následující kroky:

  1. Inicializuje projekt 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í v místním úložišti tajných kódů pomocí tajných klíčů Authentication:Microsoft:ClientId a Authentication: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ých prostředí na všech platformách. Dvojité podtržítko (__) se:

  • Podporuje všemi platformami. Například Bash nepodporuje oddělovač :, ale oddělovač __ ano.
  • Automaticky nahrazeno dvojtečkou (:).

Konfigurace ověřování účtu Microsoft

Přidejte ověřovací službu do Program:

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

services.AddAuthentication().AddMicrosoftAccount(microsoftOptions =>
    {
        microsoftOptions.ClientId = configuration["Authentication:Microsoft:ClientId"];
        microsoftOptions.ClientSecret = configuration["Authentication:Microsoft:ClientSecret"];
    });

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. Další 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í, mohou být volána pouze 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ý název.

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

Přihlášení pomocí účtu Microsoft

  • Spusťte aplikaci a vyberte Přihlásit se. Zobrazí se možnost přihlášení pomocí Microsoftu.
  • Vyberte, že se chcete přihlásit pomocí Microsoftu. Budete přesměrováni do Microsoftu pro ověřování. Po přihlášení pomocí účtu Microsoft se zobrazí výzva, abyste aplikaci umožnili přístup k vašim informacím:
  • Vyberte Ano. Budete přesměrováni zpět na web, kde můžete nastavit svůj e-mail.

Teď jste přihlášení pomocí svých přihlašovacích údajů Microsoftu.

Několik 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 => { ... });

Předávání informací o požadavcích 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í, mohou se některé z původních informací o požadavku předávat do aplikace v hlavičce požadavku. Tyto informace obvykle zahrnují zabezpečené schéma požadavků (https), hostitele a IP adresu klienta. Aplikace tyto hlavičky požadavků nenačítají automaticky, aby zjistily a využily informace o původním požadavku.

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

Pomocí middlewaru Forwarded Headers zpřístupníte aplikaci informace o původním požadavku 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í.

Řešení problému

  • Pokud vás poskytovatel úč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 parametrem # (hashtag) v identifikátoru URI.

    I když se zdá, že chybová zpráva značí problém s ověřováním Microsoftu, nejčastější příčinou je, že identifikátor URI vaší aplikace neodpovídá žádnému z identifikátorů URI přesměrování zadaných pro webovou platformu.

  • Pokud Identity není nakonfigurované voláním services.AddIdentityConfigureServices, při pokusu o ověření dojde k argumentuException: Je nutné zadat možnost SignInScheme. Šablona projektu použitá v této ukázce zajistí, že se to provede.

  • 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. Klepnutím na Použít migrace vytvoříte databázi a aktualizujete ji, abyste mohli pokračovat po chybě.

Další kroky

  • Tento článek vám ukázal, jak se můžete ověřit v Microsoftu. Podobný přístup můžete použít k ověření u jiných poskytovatelů uvedených na předchozí stránce.
  • Jakmile web publikujete do webové aplikace Azure, vytvořte na portálu Microsoft Developer Portal nové tajné kódy klienta.
  • Na webu Azure Portal nastavte Authentication:Microsoft:ClientId a Authentication:Microsoft:ClientSecret jako nastavení aplikace. Konfigurační systém je nastavený tak, aby načítal klíče z proměnných prostředí.

Tato ukázka ukazuje, jak uživatelům povolit přihlášení pomocí svého pracovního, školního nebo osobního účtu Microsoft pomocí projektu ASP.NET Core 3.0 vytvořeného na předchozí stránce.

Vytvoření aplikace na portálu Microsoft Developer Portal

Pokud účet Microsoft nemáte, vyberte Vytvořit. Po přihlášení budete přesměrováni na stránku Registrace aplikací:

  • Výběr možnosti Nová registrace
  • Zadejte Název.
  • Vyberte možnost pro podporované typy účtů.
    • Balíček MicrosoftAccount podporuje registrace aplikací vytvořené pomocí možností "Účty v libovolném adresáři organizace" nebo "Účty v libovolném adresáři organizace a účtech Microsoft" ve výchozím nastavení.
    • Pokud chcete použít další možnosti, nastavte a členy používané k inicializaci ověřování účtu Microsoft na adresy URL zobrazené na stránce Koncové body registrace aplikace po jejím vytvoření (k dispozici kliknutím na koncové body na stránce Přehled).MicrosoftAccountOptionsTokenEndpointAuthorizationEndpoint
  • V části Identifikátor URI přesměrování zadejte adresu URL pro vývoj s připojeným kódem /signin-microsoft . Například https://localhost:5001/signin-microsoft. Schéma ověřování Microsoftu nakonfigurované později v této ukázce automaticky zpracuje požadavky na /signin-microsoft trasu pro implementaci toku OAuth.
  • Výběr možnosti 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 /signin-microsoft identifikátoru URI je nastavený jako výchozí zpětné volání zprostředkovatele ověřování Microsoftu. Výchozí identifikátor URI zpětného volání můžete změnit při konfiguraci middlewaru ověřování Microsoftu prostřednictvím zděděné RemoteAuthenticationOptions.CallbackPath vlastnosti MicrosoftAccountOptions třídy.

Uložení ID a tajného klíče klienta Microsoftu

Uložte citlivá nastavení, jako je ID aplikace Microsoftu (klienta), které najdete na stránce Přehled registrace aplikace a tajného klíče klienta, které jste vytvořili na stránce Certifikáty a tajné kódy pomocí Správce tajných kódů. Pro tuto ukázku použijte následující kroky:

  1. Inicializuje projekt 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í v místním úložišti tajných kódů pomocí tajných klíčů Authentication:Microsoft:ClientId a Authentication: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ých prostředí na všech platformách. Dvojité podtržítko (__) se:

  • Podporuje všemi platformami. Například Bash nepodporuje oddělovač :, ale oddělovač __ ano.
  • Automaticky nahrazeno dvojtečkou (:).

Konfigurace ověřování účtu Microsoft

Přidejte službu účtu Microsoft 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(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. Další 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í, mohou být volána pouze 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ý název.

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

Přihlášení pomocí účtu Microsoft

Spusťte aplikaci a vyberte Přihlásit se. Zobrazí se možnost přihlášení pomocí Microsoftu. Když vyberete 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žnili 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 svůj e-mail.

Teď jste přihlášení pomocí svých přihlašovacích údajů Microsoftu.

Několik 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 => { ... });

Předávání informací o požadavcích 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í, mohou se některé z původních informací o požadavku předávat do aplikace v hlavičce požadavku. Tyto informace obvykle zahrnují zabezpečené schéma požadavků (https), hostitele a IP adresu klienta. Aplikace tyto hlavičky požadavků nenačítají automaticky, aby zjistily a využily informace o původním požadavku.

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

Pomocí middlewaru Forwarded Headers zpřístupníte aplikaci informace o původním požadavku 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í.

Řešení problému

  • Pokud vás poskytovatel úč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 parametrem # (hashtag) v identifikátoru URI.

    I když se zdá, že chybová zpráva značí problém s ověřováním Microsoftu, nejčastější příčinou je, že identifikátor URI vaší aplikace neodpovídá žádnému z identifikátorů URI přesměrování zadaných pro webovou platformu.

  • Pokud Identity není nakonfigurované voláním services.AddIdentityConfigureServices, při pokusu o ověření dojde k argumentuException: Je nutné zadat možnost SignInScheme. Šablona projektu použitá v této ukázce zajistí, že se to provede.

  • 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. Klepnutím na Použít migrace vytvoříte databázi a aktualizujete ji, abyste mohli pokračovat po chybě.

Další kroky

  • Tento článek vám ukázal, jak se můžete ověřit v Microsoftu. Podobný přístup můžete použít k ověření u jiných poskytovatelů uvedených na předchozí stránce.
  • Jakmile web publikujete do webové aplikace Azure, vytvořte na portálu Microsoft Developer Portal nové tajné kódy klienta.
  • Na webu Azure Portal nastavte Authentication:Microsoft:ClientId a Authentication:Microsoft:ClientSecret jako nastavení aplikace. Konfigurační systém je nastavený tak, aby načítal klíče z proměnných prostředí.