Udostępnij przez


Uwierzytelnianie dostawcy zewnętrznego w usłudze ASP.NET Core Identity

Autorzy: Valeriy Novytskyy i Rick Anderson

W tym artykule wyjaśniono, jak utworzyć aplikację ASP.NET Core, która umożliwia użytkownikom logowanie się przy użyciu protokołu OAuth 2.0 przy użyciu poświadczeń od zewnętrznych dostawców uwierzytelniania.

Dostawcy usług Facebook, Twitter, Google i Microsoft są omówieni w kolejnych sekcjach, z użyciem projektu początkowego utworzonego w tym artykule. Inni dostawcy są dostępni w pakietach innych firm, takich jak OpenIddict, AspNet.Security.OAuth.Providers i AspNet.Security.OpenId.Providers.

Umożliwienie użytkownikom logowania się przy użyciu istniejących poświadczeń jest wygodne dla użytkowników i przesuwa wiele złożoności zarządzania procesem logowania do innej firmy.

Tworzenie nowego projektu platformy ASP.NET Core

  • Wybierz szablon aplikacji internetowej ASP.NET Core. Wybierz przycisk OK.
  • W polu Typ uwierzytelniania wybierz opcję Indywidualne konta.

Zastosuj migracje

  • Uruchom aplikację i wybierz link Zarejestruj się.
  • Wprowadź adres e-mail i hasło dla nowego konta, a następnie wybierz pozycję Zarejestruj się.
  • Postępuj zgodnie z instrukcjami, aby przeprowadzić migracje.

Przekazywanie dalej informacji o żądaniu za pomocą serwera proxy lub modułu równoważenia obciążenia

Jeśli aplikacja jest wdrażana za pomocą serwera proxy lub modułu równoważenia obciążenia, niektóre pierwotne informacje o żądaniu mogą być przekazane do aplikacji w nagłówkach żądania. Te informacje zazwyczaj obejmują bezpieczny schemat żądań (https), hosta i adres IP klienta. Aplikacje nie odczytują automatycznie tych nagłówków żądań, aby odnaleźć pierwotne informacje o żądaniu i z nich korzystać.

Schemat jest używany do generowania linków, które mają wpływ na przepływ uwierzytelniania przy użyciu zewnętrznych dostawców. W wyniku utraty bezpiecznego schematu (https) aplikacja generuje nieprawidłowe niezabezpieczone adresy URL przekierowania.

Użyj oprogramowania pośredniczącego do przekazywania nagłówków, aby udostępnić pierwotne informacje o żądaniu dostępne w aplikacji do przetwarzania żądania.

Aby uzyskać więcej informacji, zobacz Konfigurowanie platformy ASP.NET Core pod kątem pracy z serwerami proxy i modułami równoważenia obciążenia.

Użyj Menadżera sekretów do przechowywania tokenów przypisanych przez dostawców logowania

Dostawcy logowania społecznościowego przypisują tokeny identyfikatora aplikacji oraz tajnego klucza aplikacji podczas procesu rejestracji. Dokładne nazwy tokenów różnią się w zależności od dostawcy. Te tokeny reprezentują poświadczenia używane przez aplikację do uzyskiwania dostępu do interfejsu API dostawcy. Tokeny stanowią wpisy tajne użytkownika , które mogą być połączone z konfiguracją aplikacji za pomocą menedżera wpisów tajnych. Wpisy tajne użytkownika są bezpieczniejszą alternatywą dla przechowywania tokenów w pliku konfiguracji, na przykład appsettings.json.

Ważne

Program Secret Manager jest przeznaczony tylko do lokalnego programowania i testowania. Ochrona tajemnic etapowych i produkcyjnych za pomocą dostawcy konfiguracji usługi Azure Key Vault, który może być również używany do lokalnego rozwoju i testowania, jeśli preferujesz nie używać lokalnie programu Secret Manager.

Aby uzyskać wskazówki dotyczące przechowywania tokenów przypisanych przez każdego dostawcę logowania, zapoznaj się z Bezpieczne przechowywanie sekretów aplikacji w ASP.NET Core.

Konfigurowanie dostawców logowania

Skorzystaj z następujących artykułów, aby skonfigurować dostawców logowania i aplikację:

Wielu dostawców uwierzytelniania

Gdy aplikacja wymaga wielu dostawców, należy połączyć metody rozszerzenia dostawcy na 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
    });

Aby uzyskać szczegółowe wskazówki dotyczące konfiguracji dla każdego dostawcy, zobacz odpowiednie artykuły.

Opcjonalnie ustaw hasło

Podczas rejestrowania się za pomocą zewnętrznego dostawcy logowania nie masz hasła zarejestrowanego w aplikacji. Zapobiega to tworzeniu i zapamiętowaniu hasła dla witryny, ale także sprawia, że użytkownik jest całkowicie zależny od zewnętrznego dostawcy logowania na potrzeby dostępu do witryny. Jeśli zewnętrzny dostawca logowania jest niedostępny, nie będzie można zalogować się do aplikacji.

Aby utworzyć hasło i zalogować się przy użyciu poczty e-mail ustawionej podczas procesu logowania z zewnętrznymi dostawcami:

  • Wybierz link alias wiadomości e-mail <Hello> w prawym górnym rogu, aby przejść do widoku Zarządzaj:

Widok zarządzania w aplikacji internetowej

  • Wybierz pozycję Utwórz:

Strona ustawiania hasła

  • Ustaw prawidłowe hasło i możesz użyć tego poświadczenia, aby zalogować się przy użyciu adresu e-mail.

Dodatkowe informacje