Sdílet prostřednictvím


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

Od Valeriy Novytskyy a Rick Anderson

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

Vytvoření aplikace v Centru pro správu Microsoft Entra

Vytvoření tajného klíče klienta

Vygenerování tajného klíče klienta v Centru pro správu Microsoft Entra pomocí postupu v Registrace aplikace na platformě Microsoft Identity Platform: Přidání přihlašovacích údajů.

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

Uložte citlivá nastavení, jako je ID (klient) aplikace Microsoft a tajný klíč klienta vytvořené v předchozím kroku pomocí Secret Manageru . Pro tuto ukázku použijte následující kroky:

  1. Inicializujte projekt pro tajné úložiště podle pokynů v Povolení tajného úložiště.

  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. <client-id> je uvedeno v okně Registrace aplikací Azure pod ID aplikace (klient). <client-secret> je uveden v části Certifikáty & tajemství jako hodnota, nikoli jako ID tajemství.

    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. Například Bash nepodporuje oddělovač :. Dvojitá podtržítka __je:

  • Podporováno všemi platformami.
  • Automaticky nahrazeno dvojtečkou, :.

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

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

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

Přetížení AddAuthentication(IServiceCollection, String) nastaví 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 ověřovacích schémat pro různé účely. Následná volání AddAuthentication přepíší dříve nakonfigurované vlastnosti AuthenticationOptions.

AuthenticationBuilder rozšiřující metody, které registrují obslužnou rutinu ověřování, lze volat 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 rozhraní MicrosoftAccountOptions 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.
  • Výběrem možnosti přihlásit se pomocí Microsoftu přejděte k 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 a přejděte zpět na web, kde chcete nastavit e-mail.

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

Více zprostředkovatelů ověřování

Pokud aplikace vyžaduje více poskytovatelů, propojte metody rozšíření zprostředkovatele za AddAuthentication.

services.AddAuthentication()
    .AddMicrosoftAccount(microsoftOptions => { ... })
    .AddGoogle(googleOptions => { ... })
    .AddTwitter(twitterOptions => { ... })
    .AddFacebook(facebookOptions => { ... });

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

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

Pomocí middlewaru Forwarded Headers zpřístupňujte původní informace žádosti aplikaci 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émů

  • Pokud poskytovatel účtu Microsoft přesměruje na stránku s chybou při přihlášení, poznamenejte si název chyby a parametry dotazu popisu přímo za # (hashtag) v 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 pro přesměrování určených pro platformu Web.

  • Pokud Identity není nakonfigurované voláním services.AddIdentity v ConfigureServices, při pokusu o ověření dojde k ArgumentException: 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, dojde k chybě – při zpracování požadavku selhala operace databáze. Klepnutím na Použít migrace vytvořte databázi a aktualizujte ji, abyste mohli pokračovat po chybě.

Další kroky

  • Tento článek ukázal, jak se ověřit v Microsoftu. Použijte podobný přístup k ověření u jiných poskytovatelů uvedených na předchozí stránce .
  • Po publikování webu do webové aplikace Azure vytvořte nové tajné kódy klienta v Centru pro správu Microsoft Entra.
  • Nastavte Authentication:Microsoft:ClientId a Authentication:Microsoft:ClientSecret jako nastavení aplikace v Centru pro správu Microsoft Entra. 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 předchozí stránce.

Vytvoření aplikace v Centru pro správu Microsoft Entra

Vytvoření tajného klíče klienta

Vygenerování tajného klíče klienta v Centru pro správu Microsoft Entra pomocí postupu v Registrace aplikace na platformě Microsoft Identity Platform: Přidání přihlašovacích údajů.

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

Uložte citlivá nastavení, jako je ID aplikace Microsoft (klient) a klientský tajný klíč , které jste vytvořili v předchozím kroku pomocí správce tajemství . Pro tuto ukázku použijte následující kroky:

  1. Inicializujte projekt pro tajné úložiště podle pokynů v Povolení tajného úložiště.

  2. Uložte citlivá nastavení v místním úložišti tajných kódů s tajnými klíči 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. Například oddělovač : není podporován v Bash. Dvojité podtržítko, __, je:

  • Podporováno všemi platformami.
  • Automaticky nahrazen 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í vlastnost DefaultScheme. Přetížení AddAuthentication(IServiceCollection, Action<AuthenticationOptions>) umožňuje nastavit možnosti ověřování, které lze použít k nastavení výchozích autentizačních schémat pro různé účely. Volání na AddAuthentication následně přepíší dříve nakonfigurované vlastnosti AuthenticationOptions.

AuthenticationBuilder Metody rozšíření, které registrují obsluhu pro ověřování, mohou být volány 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 rozhraní MicrosoftAccountOptions 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 Microsoft a přejděte 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.

Více 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 žádostech 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í, můžou se některé původní informace o požadavku předávat do aplikace v hlavičce požadavku. Tyto informace obvykle zahrnují schéma zabezpečených požadavků (https), hostitele a IP adresu klienta. Aplikace tyto hlavičky požadavků automaticky nepřečtou, aby zjistily a používaly původní informace o požadavku.

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

Pomocí middlewaru Forwarded Headers zpřístupňujte původní informace žádosti aplikaci 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émů

  • Pokud vás poskytovatel účtu Microsoft přesměruje na přihlašovací chybovou stránku, poznamenejte si parametry řetězce dotazu s názvem chyby a popisem přímo za # (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 pro přesměrování určených pro platformu Web.

  • Pokud Identity není nakonfigurované voláním services.AddIdentity v ConfigureServices, při pokusu o ověření dojde k ArgumentException: 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í požadavku dojde k selhání operace databáze. Klepnutím na Použít migrace vytvořte databázi a aktualizujte 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.
  • Po publikování webu do webové aplikace Azure vytvořte nové tajné kódy klienta v Centru pro správu Microsoft Entra.
  • Nastavte Authentication:Microsoft:ClientId a Authentication:Microsoft:ClientSecret jako nastavení aplikace v Centru pro správu Microsoft Entra. Konfigurační systém je nastavený tak, aby načítal klíče z proměnných prostředí.