Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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:
Zainicjuj projekt przechowywania tajnych danych zgodnie z instrukcjami zawartymi w Bezpieczne przechowywanie tajnych danych aplikacji przy użyciu ASP.NET Core.
Zapisz ustawienia poufne w lokalnym magazynie sekretów z kluczami tajnymi
Authentication:Google:ClientId
(wartość:{CLIENT ID}
symbol zastępczy) iAuthentication: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
- Jeśli logowanie nie działa bez otrzymywania żadnych błędów, przełącz się do trybu programowania, aby ułatwić debugowanie aplikacji i rejestracji Google.
- Jeśli baza danych witryny nie została utworzona poprzez zastosowanie migracji początkowej, pojawi się następujący błąd: Operacja bazy danych nie powiodła się podczas przetwarzania żądania. Wybierz pozycję Zastosuj migracje, aby utworzyć bazę danych, a następnie odśwież stronę, by kontynuować pomimo błędu.
- Aby uzyskać informacje o błędzie HTTP 500 po pomyślnym uwierzytelnieniu żądania przez dostawcę OAuth 2.0, takiego jak Google, oraz jak zaimplementować zewnętrzne uwierzytelnianie z Google dla Reacta i innych aplikacji typu SPA, zobacz Oprogramowanie pośredniczące nie obsługuje ścieżki "signin-google" po pomyślnym uwierzytelnieniu w Asp.Net Core Web Api External Login Authentication (
dotnet/AspNetCore.Docs
#14169).
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
iAuthentication:Google:ClientSecret
jako ustawienia aplikacji w portalu Azure. System konfiguracji jest skonfigurowany do odczytu kluczy ze zmiennych środowiskowych.