Nastavení externího přihlášení k účtu Microsoft pomocí ASP.NET CoreMicrosoft Account external login setup with ASP.NET Core

Podle Valeriy Novytskyy a Rick AndersonBy Valeriy Novytskyy and Rick Anderson

V této ukázce se dozvíte, jak uživatelům povolit, aby se k účet Microsoft přihlásili pomocí projektu ASP.NET Core 2,2 vytvořeného na předchozí stránce.This sample shows you how to enable users to sign in with their Microsoft account using the ASP.NET Core 2.2 project created on the previous page.

Vytvoření aplikace na portálu Microsoftu pro vývojářeCreate the app in Microsoft Developer Portal

Pokud nemáte účet Microsoft, vyberte vytvořit.If you don't have a Microsoft account, select Create one. Po přihlášení budete přesměrováni na stránku Registrace aplikací :After signing in you are redirected to the App registrations page:

  • Vybrat novou registraciSelect New registration
  • Zadejte název.Enter a Name.
  • Vyberte možnost pro podporované typy účtů.Select an option for Supported account types.
  • V části identifikátor URI přesměrovánízadejte adresu URL pro /signin-microsoft vývoj s připojením.Under Redirect URI, enter your development URL with /signin-microsoft appended. Například, https://localhost:44389/signin-microsoft.For example, https://localhost:44389/signin-microsoft. Schéma ověřování společnosti Microsoft nakonfigurované později v této ukázce bude automaticky zpracovávat požadavky /signin-microsoft na trase za účelem implementace toku OAuth.The Microsoft authentication scheme configured later in this sample will automatically handle requests at /signin-microsoft route to implement the OAuth flow.
  • Vybrat registraciSelect Register

Vytvořit tajný klíč klientaCreate client secret

  • V levém podokně vyberte certifikáty & tajnýchkódů.In the left pane, select Certificates & secrets.

  • V části tajné klíče klientavyberte nový tajný klíč klienta .Under Client secrets, select New client secret

    • Přidejte popis pro tajný klíč klienta.Add a description for the client secret.
    • Vyberte tlačítko Přidat .Select the Add button.
  • V části tajné klíče klientaZkopírujte hodnotu tajného klíče klienta.Under Client secrets, copy the value of the client secret.

Poznámka

Segment /signin-microsoft identifikátoru URI je nastaven jako výchozí zpětné volání poskytovatele ověřování společnosti Microsoft.The URI segment /signin-microsoft is set as the default callback of the Microsoft authentication provider. Výchozí identifikátor URI zpětného volání můžete změnit během konfigurace middleware ověřování od společnosti Microsoft prostřednictvím zděděné vlastnosti RemoteAuthenticationOptions. CallbackPath třídy MicrosoftAccountOptions .You can change the default callback URI while configuring the Microsoft authentication middleware via the inherited RemoteAuthenticationOptions.CallbackPath property of the MicrosoftAccountOptions class.

Uložení ID klienta Microsoft a tajného kódu klientaStore the Microsoft client ID and client secret

Spuštěním následujících příkazů bezpečně uložte ClientId a ClientSecret použijte správce tajných klíčů:Run the following commands to securely store ClientId and ClientSecret using Secret Manager:

dotnet user-secrets set Authentication:Microsoft:ClientId <Client-Id>
dotnet user-secrets set Authentication:Microsoft:ClientSecret <Client-Secret>

Pomocí správce tajnýchkódů ClientId propojte citlivá nastavení, jako je Microsoft, a ClientSecret konfiguraci vaší aplikace.Link sensitive settings like Microsoft ClientId and ClientSecret to your application configuration using the Secret Manager. Pro účely této ukázky pojmenujte tokeny Authentication:Microsoft:ClientId a. Authentication:Microsoft:ClientSecretFor the purposes of this sample, name the tokens Authentication:Microsoft:ClientId and Authentication:Microsoft:ClientSecret.

Když pracujete s hierarchickými klíči v proměnných prostředí, oddělovač dvojtečky (:) nemusí fungovat na všech platformách (například bash).When working with hierarchical keys in environment variables, a colon separator (:) may not work on all platforms (for example, Bash). Dvojité podtržítko (__) je podporováno všemi platformami a je automaticky nahrazeno dvojtečkou.A double underscore (__) is supported by all platforms and is automatically replaced by a colon.

Konfigurace ověřování účtu MicrosoftConfigure Microsoft Account Authentication

Přidejte službu účtu Microsoft do Startup.ConfigureServices:Add the Microsoft Account service to Startup.ConfigureServices:

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<ApplicationDbContext>(options =>
        options.UseSqlite(
            Configuration.GetConnectionString("DefaultConnection")));
    services.AddDefaultIdentity<IdentityUser>()
        .AddDefaultUI(UIFramework.Bootstrap4)
        .AddEntityFrameworkStores<ApplicationDbContext>();

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

    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}

Volání AddDefaultIdentity nakonfiguruje výchozí nastavení schéma.The call to AddDefaultIdentity configures the default scheme settings. AddAuthentication(String) přetížení sad DefaultScheme vlastnost.The AddAuthentication(String) overload sets the DefaultScheme property. AddAuthentication (akce<AuthenticationOptions>) přetížení umožňuje konfigurovat možnosti ověřování, které je možné použít k nastavení výchozí schémata ověřování pro různé účely.The AddAuthentication(Action<AuthenticationOptions>) overload allows configuring authentication options, which can be used to set up default authentication schemes for different purposes. Následující volání AddAuthentication přepsání, které jste dříve nakonfigurovali AuthenticationOptions vlastnosti.Subsequent calls to AddAuthentication override previously configured AuthenticationOptions properties.

AuthenticationBuilder rozšiřující metody, které se zaregistrovat obslužnou rutinu ověřování může být volána pouze jednou za schéma ověřování.AuthenticationBuilder extension methods that register an authentication handler may only be called once per authentication scheme. Existují přetížení, které umožňují konfiguraci vlastností schéma, název schématu a zobrazovaný název.Overloads exist that allow configuring the scheme properties, scheme name, and display name.

Více poskytovatelů ověřováníMultiple authentication providers

Pokud aplikace vyžaduje několik zprostředkovatelů, zřetězení rozšiřující metody zprostředkovatele za AddAuthentication:When the app requires multiple providers, chain the provider extension methods behind AddAuthentication:

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

Další informace o možnostech Konfigurace podporovaných ověřováním účtů Microsoft najdete v referenčních informacích k rozhraní MicrosoftAccountOptions API.See the MicrosoftAccountOptions API reference for more information on configuration options supported by Microsoft Account authentication. To umožňuje požádat o jiné informace o uživateli.This can be used to request different information about the user.

Účet Přihlásit se účtem MicrosoftSign in with Microsoft Account

Spusťte rozhraní a klikněte na Přihlásit se.Run the and click Log in. Zobrazí se možnost přihlásit se s Microsoftem.An option to sign in with Microsoft appears. Když kliknete na Microsoft, budete přesměrováni na Microsoft pro ověřování.When you click on Microsoft, you are redirected to Microsoft for authentication. Po přihlášení pomocí účtu Microsoft (Pokud ještě není přihlášený) se zobrazí výzva, abyste aplikaci dali přístup k vašim informacím:After signing in with your Microsoft Account (if not already signed in) you will be prompted to let the app access your info:

Klepněte na Ano a budete přesměrováni zpět na web, kde můžete nastavit e-mail.Tap Yes and you will be redirected back to the web site where you can set your email.

Nyní jste přihlášeni pomocí přihlašovacích údajů Microsoftu:You are now logged in using your Microsoft credentials:

Vpřed žádost o informace o proxy serveru nebo nástroj pro vyrovnávání zatíženíForward request information with a proxy or load balancer

Pokud je aplikace nasazena za proxy server nebo nástroje pro vyrovnávání zatížení, některé z původní informace o požadavku může být přeposílán aplikace v záhlaví požadavku.If the app is deployed behind a proxy server or load balancer, some of the original request information might be forwarded to the app in request headers. Tyto informace obvykle obsahuje schéma požadavku zabezpečení (https), hostitele a IP adresu klienta.This information usually includes the secure request scheme (https), host, and client IP address. Aplikace si automaticky tyto hlavičky žádosti mohli objevit a používat původní informace o žádostech.Apps don't automatically read these request headers to discover and use the original request information.

Schéma se používá při generování odkazů, které má vliv na tok ověřování u externích poskytovatelů.The scheme is used in link generation that affects the authentication flow with external providers. Zabezpečený režim ztráty (https) výsledkem generování adresy URL pro přesměrování nesprávné nezabezpečené aplikace.Losing the secure scheme (https) results in the app generating incorrect insecure redirect URLs.

Předané Middleware záhlaví využívat k zpřístupňování původní informace o požadavku do aplikace pro zpracování požadavku.Use Forwarded Headers Middleware to make the original request information available to the app for request processing.

Další informace naleznete v tématu Konfigurace ASP.NET Core pro práci se servery proxy a nástroji pro vyrovnávání zatížení.For more information, see Konfigurace ASP.NET Core pro práci se servery proxy a nástroji pro vyrovnávání zatížení.

Poradce při potížíchTroubleshooting

  • Pokud vám poskytovatel účtu Microsoft přesměruje na chybovou stránku pro přihlášení, poznamenejte si parametry řetězce chyby a popis v parametrech řetězce dotazu # přímo za (hashtag) v identifikátoru URI.If the Microsoft Account provider redirects you to a sign in error page, note the error title and description query string parameters directly following the # (hashtag) in the Uri.

    I když se chybová zpráva jeví jako problém s ověřováním Microsoftu, Nejběžnější příčinou je, že identifikátor URI vaší aplikace neodpovídá žádnému identifikátoru URI přesměrování , který je zadaný pro webovou platformu.Although the error message seems to indicate a problem with Microsoft authentication, the most common cause is your application Uri not matching any of the Redirect URIs specified for the Web platform.

  • Pokud identita není nakonfigurována voláním services.AddIdentity v ConfigureServices, výsledkem pokusu o ověření bude ArgumentException: Je nutné zadatmožnost SignInScheme.If Identity isn't configured by calling services.AddIdentity in ConfigureServices, attempting to authenticate will result in ArgumentException: The 'SignInScheme' option must be provided. Šablona projektu použitá v této ukázce zajišťuje, že je to hotové.The project template used in this sample ensures that this is done.

  • Pokud nebyl vytvořen použití počáteční migraci databáze lokality, se zobrazí databázová operace selhala při zpracování požadavku chyby.If the site database has not been created by applying the initial migration, you will get A database operation failed while processing the request error. Klepněte na migrace použít k vytvoření databáze a aktualizovat a pokračovat po chybě.Tap Apply Migrations to create the database and refresh to continue past the error.

Další postupNext steps

  • Tento článek ukazuje, jak se dá ověřit u Microsoftu.This article showed how you can authenticate with Microsoft. Můžete postupovat podle podobný přístup k ověření u jiných poskytovatelů na předchozí stránce.You can follow a similar approach to authenticate with other providers listed on the previous page.

  • Po publikování webu do webové aplikace Azure vytvořte nové tajné klíče klienta na portálu Microsoftu pro vývojáře.Once you publish your web site to Azure web app, create a new client secrets in the Microsoft Developer Portal.

  • Nastavte Authentication:Microsoft:ClientId a Authentication:Microsoft:ClientSecret jako nastavení aplikace na webu Azure Portal.Set the Authentication:Microsoft:ClientId and Authentication:Microsoft:ClientSecret as application settings in the Azure portal. Konfigurační systém je nastavený na klíče pro čtení z proměnných prostředí.The configuration system is set up to read keys from environment variables.