Delen via


Verificatie van externe providers in ASP.NET Core Identity

Door Valeriy Novytskyy en Rick Anderson

Deze zelfstudie laat zien hoe u een ASP.NET Core-app bouwt waarmee gebruikers zich kunnen aanmelden met behulp van OAuth 2.0 met referenties van externe verificatieproviders.

Facebook-, Twitter-, Googleen Microsoft-providers worden behandeld in de volgende secties en gebruiken we het startersproject dat in dit artikel is gemaakt. Andere providers zijn beschikbaar in pakketten van derden, zoals OpenIddict-, AspNet.Security.OAuth.Providers en AspNet.Security.OpenId.Providers.

Gebruikers in staat stellen zich aan te melden met hun bestaande inloggegevens.

  • Is handig voor de gebruikers.
  • Verschuift veel van de complexiteit van het beheer van het aanmeldingsproces naar een derde partij.

Een nieuw ASP.NET kernproject maken

  • Selecteer de sjabloon ASP.NET Core Web App. Selecteer OK-.
  • Selecteer afzonderlijke accountsin het verificatietype invoer.

Migraties toepassen

  • Voer de app uit en selecteer de koppeling Registreren.
  • Voer het e-mailadres en wachtwoord voor het nieuwe account in en selecteer registreren.
  • Volg de instructies om migraties toe te passen.

Verzoekinformatie doorsturen met een proxy of een load balancer

Als de app wordt geïmplementeerd achter een proxyserver of load balancer, worden sommige van de oorspronkelijke aanvraaggegevens mogelijk doorgestuurd naar de app in aanvraagheaders. Deze informatie omvat meestal het beveiligde aanvraagschema (https), host- en client-IP-adres. Apps lezen deze aanvraagheaders niet automatisch om de oorspronkelijke aanvraaggegevens te detecteren en te gebruiken.

Het schema wordt gebruikt bij het genereren van koppelingen die van invloed is op de verificatiestroom met externe providers. Het verlies van het beveiligde schema (https) resulteert in het genereren van onjuiste, onveilige omleidings-URL's.

Gebruik Forwarded Headers Middleware om de oorspronkelijke aanvraaggegevens beschikbaar te maken voor de app voor aanvraagverwerking.

Zie ASP.NET Core configureren voor gebruik met proxyservers en load balancersvoor meer informatie.

SecretManager gebruiken om tokens op te slaan die zijn toegewezen door aanmeldingsproviders

Providers voor sociale aanmelding wijzen toepassings-id en application secret tokens toe tijdens het registratieproces. De exacte tokennamen variëren per provider. Deze tokens vertegenwoordigen de referenties die uw app gebruikt voor toegang tot hun API. De tokens vormen de 'gebruikersgeheimen' die kunnen worden gekoppeld aan uw app-configuratie met behulp van Secret Manager-. Gebruikersgeheimen zijn een veiliger alternatief voor het opslaan van de tokens in een configuratiebestand, zoals appsettings.json.

Belangrijk

Secret Manager is alleen bedoeld voor ontwikkelingsdoeleinden. U kunt Azure-test- en productiegeheimen opslaan en beveiligen met de Azure Key Vault-configuratieprovider.

Volg de stappen in Veilige opslag van app-geheimen voor ontwikkeling in ASP.NET Core rubriek om tokens op te slaan die zijn toegewezen door elke aanmeldingsprovider die hieronder worden genoemd.

Aanmeldingsproviders instellen die zijn vereist voor uw toepassing

Gebruik de volgende onderwerpen om uw toepassing te configureren voor het gebruik van de respectieve providers:

Meerdere verificatieproviders

Wanneer voor de app meerdere providers zijn vereist, koppelt u de provideruitbreidingsmethoden van AddAuthentication:

using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using WebApplication16.Data;

var builder = WebApplication.CreateBuilder(args);
var config = builder.Configuration;

var connectionString = config.GetConnectionString("DefaultConnection");
builder.Services.AddDbContext<ApplicationDbContext>(options =>
    options.UseSqlServer(connectionString));
builder.Services.AddDatabaseDeveloperPageExceptionFilter();

builder.Services.AddDefaultIdentity<IdentityUser>(options =>
                                 options.SignIn.RequireConfirmedAccount = true)
    .AddEntityFrameworkStores<ApplicationDbContext>();
builder.Services.AddRazorPages();
builder.Services.AddControllersWithViews();

builder.Services.AddAuthentication()
   .AddGoogle(options =>
   {
       IConfigurationSection googleAuthNSection =
       config.GetSection("Authentication:Google");
       options.ClientId = googleAuthNSection["ClientId"];
       options.ClientSecret = googleAuthNSection["ClientSecret"];
   })
   .AddFacebook(options =>
   {
       IConfigurationSection FBAuthNSection =
       config.GetSection("Authentication:FB");
       options.ClientId = FBAuthNSection["ClientId"];
       options.ClientSecret = FBAuthNSection["ClientSecret"];
   })
   .AddMicrosoftAccount(microsoftOptions =>
   {
       microsoftOptions.ClientId = config["Authentication:Microsoft:ClientId"];
       microsoftOptions.ClientSecret = config["Authentication:Microsoft:ClientSecret"];
   })
   .AddTwitter(twitterOptions =>
   {
       twitterOptions.ConsumerKey = config["Authentication:Twitter:ConsumerAPIKey"];
       twitterOptions.ConsumerSecret = config["Authentication:Twitter:ConsumerSecret"];
       twitterOptions.RetrieveUserDetails = true;
   });

var app = builder.Build();

if (app.Environment.IsDevelopment())
{
    app.UseMigrationsEndPoint();
}
else
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthentication();
app.UseAuthorization();

app.MapRazorPages();
app.MapDefaultControllerRoute();

app.Run();

Wachtwoord optioneel instellen

Wanneer u zich registreert bij een externe aanmeldingsprovider, hebt u geen wachtwoord geregistreerd bij de app. Dit verlost je van het maken en onthouden van een wachtwoord voor de site, maar het maakt je ook afhankelijk van de externe loginprovider. Als de externe aanmeldingsprovider niet beschikbaar is, kunt u zich niet aanmelden bij de website.

Als u een wachtwoord wilt maken en u wilt aanmelden met uw e-mail die u tijdens het aanmeldingsproces hebt ingesteld bij externe providers:

  • Selecteer de e-mailalias Hello <> koppeling in de rechterbovenhoek om naar de weergave beheren te gaan.

-webtoepassingsweergave beheren

  • Selecteer Aanmaken

uw wachtwoordpagina instellen

  • Stel een geldig wachtwoord in en u kunt dit gebruiken om u aan te melden met uw e-mail.

Aanvullende informatie