Dela via


Extern providerautentisering i ASP.NET Core Identity

Av Valeriy Novytskyy och Rick Anderson

Den här artikeln beskriver hur du skapar en ASP.NET Core-app som gör det möjligt för användare att logga in med OAuth 2.0 med autentiseringsuppgifter från externa autentiseringsprovidrar.

Facebook, Twitter, Googleoch Microsoft providers beskrivs i följande avsnitt och använder startprojektet som skapats i den här artikeln. Andra leverantörer är tillgängliga i tredjepartspaket som OpenIddict, AspNet.Security.OAuth.Providers och AspNet.Security.OpenId.Providers.

Att göra det möjligt för användare att logga in med sina befintliga autentiseringsuppgifter är praktiskt för användarna och flyttar många av komplexiteterna med att hantera inloggningsprocessen till en tredje part.

Skapa ett nytt ASP.NET Core-projekt

  • Välj mallen ASP.NET Core Web App. Välj OK.
  • I autentiseringstypens fält väljer du enskilda konton.

Utför migrationer

  • Kör appen och välj länken Registrera.
  • Ange e-post och lösenord för det nya kontot och välj sedan Registrera.
  • Följ anvisningarna för att tillämpa migreringar.

Vidarebefordra begärans information genom en proxy eller lastbalanserare

Om appen distribueras bakom en proxyserver eller lastbalanserare kan en del av den ursprungliga begärandeinformationen vidarebefordras till appen i begärandehuvuden. Den här informationen omfattar vanligtvis schemat för säker begäran (https), värd och klientens IP-adress. Appar läser inte automatiskt dessa begärandehuvuden för att identifiera och använda den ursprungliga begärandeinformationen.

Schemat används i länkgenerering som påverkar autentiseringsflödet med externa leverantörer. Förlorar man det säkra protokollet (https) resulterar det i att appen genererar felaktiga osäkra omdirigerings-URL:er.

Använd Middleware för vidarebefordrade rubriker för att göra den ursprungliga begärandeinformationen tillgänglig för appen för hantering av begäran.

Mer information finns i Konfigurera ASP.NET Core att fungera med proxyservrar och lastbalanserare.

Använda Secret Manager för att lagra token som tilldelats av inloggningsprovidrar

Leverantörer av sociala inloggningar tilldelar program-ID och programhemlighetstoken under registreringsprocessen. De exakta tokennamnen varierar beroende på provider. Dessa token representerar de autentiseringsuppgifter som appen använder för att komma åt providerns API. Token utgör användarhemligheter som kan länkas till din appkonfiguration med hjälp av Secret Manager. Användarhemligheter är ett säkrare alternativ till att lagra token i en konfigurationsfil, till exempel appsettings.json.

Viktig

Secret Manager är endast avsett för lokal utveckling och testning. Skydda mellanlagrings- och produktionshemligheter med Azure Key Vault-konfigurationsprovidern, som också kan användas för lokal utveckling och testning om du föredrar att inte använda Secret Manager lokalt.

Information om hur du lagrar de token som tilldelats av varje inloggningsprovider finns i Säker lagring av apphemligheter under utveckling i ASP.NET Core.

Konfigurera inloggningsprovidrar

Använd följande artiklar för att konfigurera inloggningsprovidrar och appen:

Flera autentiseringsprovidrar

När appen kräver flera leverantörer, kopplar du samman leverantörernas tilläggsmetoder på AddAuthentication:

builder.Services.AddAuthentication()
    .AddGoogle(options =>
    {
        // Google configuration options
    })
    .AddFacebook(options =>
    {
        // Facebook configuration options
    })
    .AddMicrosoftAccount(options =>
    {
        // Microsoft Account configuration options
    })
    .AddTwitter(options =>
    {
        // Twitter configuration options
    });

Detaljerad konfigurationsvägledning för varje provider finns i deras respektive artiklar.

Du kan också ange ett lösenord

När du registrerar dig hos en extern inloggningsprovider har du inget lösenord registrerat med appen. Detta gör att du inte kan skapa och komma ihåg ett lösenord för webbplatsen, men det gör dig också helt beroende av den externa inloggningsprovidern för webbplatsåtkomst. Om den externa inloggningsprovidern inte är tillgänglig kan du inte logga in på appen.

Så här skapar du ett lösenord och loggar in med din e-post som du angav under inloggningsprocessen med externa leverantörer:

  • Välj länken Hello <e-postalias> i det övre högra hörnet för att navigera till Hantera-vyn:

Webbapplikation Hantera vyer

  • Välj Skapa:

Ange lösenordssidan

  • Ange ett giltigt lösenord så kan du använda den här autentiseringsuppgiften för att logga in med din e-postadress.

Ytterligare information