Freigeben über


Einrichtung der externen Google-Anmeldung in ASP.NET Core

Von Valeriy Novytskyy, Rick Anderson und Sharaf Abacery

In diesem Lernprogramm erfahren Sie, wie Sie benutzern ermöglichen, sich mit ihrem Google-Konto mit dem ASP.NET Core-Projekt anzumelden, das auf der vorherigen Seite erstellt wurde.

Erstellen der Google OAuth 2.0-Client-ID und des geheimen Schlüssels

  • Befolgen Sie die Anleitung in zur Integration von Google Sign-In in Ihre Web-App (Google-Dokumentation)

  • Wechseln Sie zu Google API & Services.

  • Zuerst muss ein Projekt vorhanden sein, möglicherweise müssen Sie eins erstellen. Sobald ein Projekt ausgewählt ist, öffnen Sie das Dashboard .

  • Im OAuth-Zustimmungsbildschirm des Dashboards:

    • Wählen Sie Benutzertyp – Extern und dann ERSTELLEN aus.
    • Geben Sie im Dialogfeld App-Informationen einen App-Namen für die App an, eine E-Mail für den Benutzersupportund Kontaktinformationen des Entwicklers.
    • Durchlaufen Sie den Schritt Bereiche.
    • Durchlaufen Sie den Schritt Testbenutzer*innen.
    • Überprüfen Sie den OAuth-Zustimmungsbildschirm und kehren Sie zurück zum Dashboard der App .
  • Wählen Sie im Anwendungsdashboard auf der Registerkarte Anmeldeinformationen die Optionen ANMELDEINFORMATIONEN ERSTELLEN>OAuth-Client-ID aus.

  • Wählen Sie den Anwendungstyp>Webanwendungaus und wählen Sie einen Namen.

  • Wählen Sie im Abschnitt Autorisierte Umleitungs-URIs die Option URI HINZUFÜGEN aus, um den Umleitungs-URI festzulegen. Beispielumleitungs-URI: https://localhost:{PORT}/signin-google, wobei der {PORT} Platzhalter der Port der App ist.

  • Wählen Sie die Schaltfläche ERSTELLEN aus.

  • Speichern Sie die Client-ID und das Client-Geheimnis zur Verwendung in der App-Konfiguration.

  • Bei der Bereitstellung der Website können Sie einen der folgenden Schritte ausführen:

    • Aktualisieren Sie den Umleitungs-URI der App in der Google-Konsole auf den bereitgestellten Umleitungs-URI der App.
    • Erstellen Sie für die Produktions-App mit dem zugehörigen Produktionsumleitungs-URI eine neue Google-API-Registrierung in der Google-Konsole.

Speichern der Google-Client-ID und des geheimen Schlüssels

Speichern Sie vertrauliche Einstellungen wie die Google-Client-ID und geheime Werte mit Secret Manager. Führen Sie für dieses Beispiel die folgenden Schritte aus:

  1. Initialisieren Sie das Projekt für den geheimen Speicher gemäß den Anweisungen unter Aktivieren des geheimen Speichers.

  2. Speichern Sie die vertraulichen Einstellungen im lokalen geheimen Speicher mit den geheimen Schlüsseln Authentication:Google:ClientId und Authentication:Google:ClientSecret:

    dotnet user-secrets set "Authentication:Google:ClientId" "<client-id>"
    dotnet user-secrets set "Authentication:Google:ClientSecret" "<client-secret>"
    

Das Trennzeichen : funktioniert nicht mit hierarchischen Schlüsseln der Umgebungsvariablen auf allen Plattformen. Beispielsweise wird das Trennzeichen : von Bash nicht unterstützt. Der doppelte Unterstrich, __, ist:

  • Unterstützt von allen Plattformen.
  • Automatisch durch einen Doppelpunkt :, ersetzt.

Sie können Ihre API-Anmeldeinformationen und -verwendung in der API-Konsoleverwalten.

Konfigurieren der Google-Authentifizierung

Der Aufruf von AddIdentity konfiguriert die Standardschemaeinstellungen. Die AddAuthentication(IServiceCollection, String)-Überladung legt die DefaultScheme-Eigenschaft fest. Die AddAuthentication(IServiceCollection, Action<AuthenticationOptions>)-Überladung ermöglicht das Konfigurieren von Authentifizierungsoptionen, die zum Einrichten von Standardauthentifizierungsschemas für verschiedene Zwecke verwendet werden können. Nachfolgende Aufrufe von AddAuthentication überschreiben die zuvor konfigurierten AuthenticationOptions-Eigenschaften.

AuthenticationBuilder Erweiterungsmethoden, die einen Authentifizierungshandler registrieren, können nur einmal pro Authentifizierungsschema aufgerufen werden. Überladungen sind vorhanden, die das Konfigurieren der Schemaeigenschaften, des Schemanamens und des Anzeigenamens ermöglichen.

Mit Google anmelden

  • Einen Link zur Bibliothek erhalten Sie unter Google Developer Library.
  • Wechseln Sie dann zu Google Developer Button Generation.
  • Richten Sie ihren Controller so ein, dass es dem attribut data-login_uri="{HostName}/{ControllerName}/{actionName}" entspricht, da er Sie nach einer erfolgreichen Anmeldung an diesen Link weiterleitt.
  • Erstellen Sie einen Controller und eine Aktion, die ein Argument string credentialverwendet, das von Google nach Abschluss des Anmeldevorgangs zurückgegeben wird.
  • Überprüfen Sie die credential mithilfe der folgenden Codezeile: GoogleJsonWebSignature.Payload payload = await GoogleJsonWebSignature.ValidateAsync(credential);
  • Dadurch werden die verfügbaren Informationen zum angemeldeten Benutzer abgerufen, die dann in einer Datenbank gespeichert werden können.

Ändern des Standardrückruf-URI

Das URI-Segment /signin-google wird als Standardrückruf des Google-Authentifizierungsanbieters festgelegt. Sie können den Standardrückruf-URI ändern, indem Sie die Google-Authentifizierungsmiddleware über die geerbte RemoteAuthenticationOptions.CallbackPath-Eigenschaft der GoogleOptions-Klasse konfigurieren.

Fehlerbehebung

  • Wenn die Anmeldung nicht funktioniert und Sie keine Fehler erhalten, wechseln Sie zum Entwicklungsmodus, um das Problem einfacher zu debuggen.
  • Wenn nicht durch den Aufruf von in konfiguriert ist, resultiert der Versuch zu authentifizieren in einer ArgumentException: Die Option „SignInScheme“ muss angegeben werden. Die in diesem Lernprogramm verwendete Projektvorlage stellt sicher, dass Identity konfiguriert ist.
  • Wenn die Standortdatenbank nicht erstellt wurde, indem die ursprüngliche Migration angewendet wird, erhalten Sie den Fehler Ein Datenbankvorgang schlug beim Verarbeiten der Anforderung fehl. Wählen Sie Migrationen anwenden aus, um die Datenbank zu erstellen, und aktualisieren Sie die Ansicht, um nach dem Fehler fortzufahren.
  • HTTP 500-Fehler nach der erfolgreichen Authentifizierung der Anforderung durch den OAuth 2.0-Anbieter wie Google: Siehe dieses GitHub-Problem.
  • So implementieren Sie die externe Authentifizierung mit Google für React und andere SPA-Apps: Siehe dieses GitHub-Problem.

Nächste Schritte

  • In diesem Artikel wurde gezeigt, wie Sie sich bei Google authentifizieren können. Sie können einem ähnlichen Ansatz folgen, um sich bei anderen Anbietern zu authentifizieren, die auf der vorherigen Seiteaufgeführt sind.
  • Nachdem Sie die App in Azure veröffentlicht haben, setzen Sie die ClientSecret in der Google-API-Konsole zurück.
  • Legen Sie die Authentication:Google:ClientId und Authentication:Google:ClientSecret als Anwendungseinstellungen im Azure-Portal fest. Das Konfigurationssystem ist für das Lesen von Schlüsseln aus Umgebungsvariablen eingerichtet.