Udostępnij za pośrednictwem


Konfiguracja logowania zewnętrznego Google w usłudze ASP.NET Core

Przez Valeriy Novytskyy, Rick Anderson i Sharaf Abacery

W tym samouczku pokazano, jak włączyć logowanie użytkowników przy użyciu kont Google, korzystając z przykładowego projektu ASP.NET Core utworzonego w ramach Using external login providers with Identity in ASP.NET Core (Korzystanie z zewnętrznych dostawców logowania w programie ASP.NET Core). Postępuj zgodnie z oficjalnymi wskazówkami firmy Google w temacie logowanie się za pomocą usługi Google dla sieci Web: konfigurowanie, aby utworzyć identyfikator klienta interfejsu API Google.

Tworzenie aplikacji w usłudze Google

  • Przejdź do strony Google API & Services platformy Google Cloud.
  • Jeśli żaden projekt nie istnieje, utwórz nowy projekt, wybierając przycisk Utwórz projekt . Aby wybrać inny projekt niż istniejący projekt, który zostanie załadowany, wybierz przycisk załadowanego projektu w lewym górnym rogu interfejsu użytkownika, a następnie projekt. Aby dodać nowy projekt, wybierz przycisk załadowanego projektu w lewym górnym rogu interfejsu użytkownika, a następnie przycisk Nowy projekt .
  • Podczas tworzenia nowego projektu:
    • Wprowadź nazwę projektu.
    • Opcjonalnie wybierz organizację dla projektu.
    • Wybierz przycisk Create.

Po utworzeniu projektu zostanie załadowana strona Pulpit nawigacyjny projektu, na której można skonfigurować projekt.

Otwórz kartę Poświadczenia , aby utworzyć klienta OAuth.

Warunkiem wstępnym utworzenia poświadczeń jest skonfigurowanie ekranu zgody OAuth. Jeśli zgoda nie jest skonfigurowana, zostanie wyświetlony monit o skonfigurowanie ekranu zgody.

  • Wybierz pozycję Konfiguruj ekran zgody lub wybierz ekran zgody OAuth na pasku bocznym.
  • Na ekranie zgody OAuth wybierz pozycję Rozpocznij.
  • Ustaw nazwę aplikacji i adres e-mail pomocy technicznej dla użytkowników.
  • Ustaw typ odbiorców na Zewnętrzny.
  • Dodaj informacje kontaktowe , wprowadzając kontaktowy adres e-mail.
  • Zaakceptuj warunki.
  • Wybierz Utwórz.

Utwórz poświadczenia klienta dla aplikacji, otwierając element menu paska bocznego Klienci :

  • Wybierz przycisk Utwórz klienta .
  • Wybierz pozycję Aplikacja internetowa jako typ aplikacji.
  • Wprowadź nazwę klienta.
  • Dodaj autoryzowany przekierowujący URI. W przypadku testowania lokalnego użyj domyślnego adresu https://localhost:{PORT}/signin-google, w którym symbol zastępczy {PORT} to port aplikacji.
  • Wybierz przycisk Utwórz , aby utworzyć klienta.
  • Zapisz identyfikator klienta i klucz tajny klienta, który będzie używany w dalszej części konfiguracji aplikacji ASP.NET.

Uwaga / Notatka

Segment identyfikatora URI /signin-google jest ustawiony jako domyślne wywołanie zwrotne dostawcy uwierzytelniania Google. Można zmienić domyślny identyfikator URI wywołania zwrotnego podczas konfigurowania middleware Google do uwierzytelniania za pomocą odziedziczonej właściwości RemoteAuthenticationOptions.CallbackPath klasy GoogleOptions.

Podczas wdrażania aplikacji należy wybrać jedną z następujących opcji:

  • Zaktualizuj identyfikator URI przekierowania aplikacji w konsoli Google na wdrożony identyfikator URI przekierowania aplikacji.
  • Utwórz nową rejestrację API Google w konsoli Google dla aplikacji produkcyjnej z jej produkcyjnym identyfikatorem URI przekierowania.

Przechowaj identyfikator klienta Google i tajny klucz

Przechowuj ustawienia poufne, takie jak identyfikator klienta Google i tajne wartości, za pomocą menedżera tajemnic. W tym przykładzie wykonaj następujące kroki:

  1. Zainicjuj projekt przechowywania tajnych danych zgodnie z instrukcjami zawartymi w Bezpieczne przechowywanie tajnych danych aplikacji przy użyciu ASP.NET Core.

  2. Zapisz ustawienia poufne w lokalnym magazynie sekretów z kluczami tajnymi Authentication:Google:ClientId (wartość: {CLIENT ID} symbol zastępczy) i Authentication:Google:ClientSecret (wartość: {CLIENT SECRET} symbol zastępczy):

    dotnet user-secrets set "Authentication:Google:ClientId" "{CLIENT ID}"
    dotnet user-secrets set "Authentication:Google:ClientSecret" "{CLIENT SECRET}"
    

Separator : nie działa z kluczami hierarchicznymi zmiennych środowiskowych na wszystkich platformach. Na przykład separator : nie jest obsługiwany przez Bash. Podwójne podkreślenie, __, to:

  • Obsługiwane przez wszystkie platformy.
  • Automatycznie zastąpione dwukropkiem :.

Zarządzaj poświadczeniami i używaniem interfejsu API w Konsoli API.

Konfigurowanie uwierzytelniania google

Dodaj usługę uwierzytelniania do Program pliku:

services.AddAuthentication().AddGoogle(googleOptions =>
{
    googleOptions.ClientId = configuration["Authentication:Google:ClientId"];
    googleOptions.ClientSecret = configuration["Authentication:Google:ClientSecret"];
});

Dodaj usługę uwierzytelniania do :Startup.ConfigureServices

services.AddAuthentication().AddGoogle(googleOptions =>
{
    googleOptions.ClientId = configuration["Authentication:Google:ClientId"];
    googleOptions.ClientSecret = configuration["Authentication:Google:ClientSecret"];
});

Przeciążenie AddAuthentication(IServiceCollection, String) ustawia właściwość DefaultScheme. Przeciążenie AddAuthentication(IServiceCollection, Action<AuthenticationOptions>) umożliwia skonfigurowanie opcji uwierzytelniania, które mogą służyć do konfigurowania domyślnych schematów uwierzytelniania w różnych celach. Kolejne wywołania AddAuthentication przesłaniają wcześniej skonfigurowane właściwości AuthenticationOptions.

AuthenticationBuilder metody rozszerzeń, które rejestrują procedurę obsługi uwierzytelniania, mogą być wywoływane tylko raz dla danego schematu uwierzytelniania. Istnieją przeciążenia, które umożliwiają konfigurowanie właściwości schematu, nazwy schematu i nazwy wyświetlanej.

Logowanie się przy użyciu usługi Google

  • Uruchom aplikację i wybierz pozycję Zaloguj się.
  • Wybierz Google pod Użyj innej usługi do zalogowania.
  • Przeglądarka jest przekierowywana do firmy Google na potrzeby uwierzytelniania.
  • Wybierz konto Google, aby się zalogować lub wprowadzić poświadczenia Google.
  • Jeśli jest to pierwszy raz podczas logowania, zostanie wyświetlony monit o zezwolenie aplikacji na dostęp do informacji o koncie Google.
  • Przeglądarka jest przekierowywana z powrotem do aplikacji, gdzie można ustawić wiadomość e-mail.

Użytkownik jest teraz zalogowany przy użyciu poświadczeń Google.

Rozwiązywanie problemów

Następne kroki

  • W tym artykule przedstawiono uwierzytelnianie w usłudze Google. Aby uzyskać informacje na temat uwierzytelniania przy użyciu innych zewnętrznych dostawców, zobacz Identity.
  • Po wdrożeniu aplikacji na platformie Azure zresetuj element ClientSecret w konsoli interfejsu API Google.
  • Ustaw Authentication:Google:ClientId i Authentication:Google:ClientSecret jako ustawienia aplikacji w portalu Azure. System konfiguracji jest skonfigurowany do odczytu kluczy ze zmiennych środowiskowych.

Dodatkowe zasoby

Wielu dostawców uwierzytelniania