Google externe Anmeldung Setup in ASP.NET Core
Von Valeriy Novytskyy und Rick Anderson
In diesem Tutorial erfahren Sie, wie Sie Es Benutzern ermöglichen, sich mit ihrem Google-Konto mithilfe ASP.NET Core auf der vorherigen Seite erstellten Projekt anmelden.
Erstellen der Google OAuth 2.0-Client-ID und des Geheimnisses
Befolgen Sie die Anweisungen unter Integrieren von Google Sign-In in Ihre Web-App (Google-Dokumentation).
Wechseln Sie zu Google API & Services.
Ein Project muss zuerst vorhanden sein. Möglicherweise müssen Sie einen erstellen. Sobald ein Projekt ausgewählt ist, geben Sie das Dashboard ein.
Auf dem OAuth-Zustimmungsbildschirm des Dashboards:
- Wählen Sie Benutzertyp – Extern undCREATE aus.
- Geben Sie im Dialogfeld App-Informationen einen App-Namen für die App, eine E-Mail-Adresse für den Benutzersupport und Kontaktinformationen für Entwickler an.
- Gehen Sie den Schritt Bereiche schrittweise durch.
- Gehen Sie den Schritt Testbenutzer schrittweise durch.
- Überprüfen Sie den OAuth-Zustimmungsbildschirm , und wechseln Sie zurück zum Dashboard der App.
Wählen Sie auf der Registerkarte Anmeldeinformationen des Anwendungsdashboards CREATE CREDENTIALSOAuth client ID (ANMELDEINFORMATIONEN ERSTELLENOAuth-Client-ID>) aus.
Wählen Sie AnwendungstypWebanwendung>aus, und wählen Sie einen Namen aus.
Wählen Sie im Abschnitt Autorisierte Umleitungs-URIs die Option ADD URI aus , um den Umleitungs-URI festlegen. 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 den geheimen Clientgeheimnis für die Verwendung in der Konfiguration der App.
Beim Bereitstellen des Standorts:
- Aktualisieren Sie den Umleitungs-URI der App in der Google-Konsole auf den bereitgestellten Umleitungs-URI der App.
- Erstellen Sie eine neue Google-API-Registrierung in der Google-Konsole für die Produktions-App mit dem Umleitungs-URI für die Produktion.
Store der Google-Client-ID und des Geheimnisses
Fügen Sie der App das NuGet-Paket Microsoft.AspNetCore.Authentication.Google
hinzu.
Store sensible Einstellungen wie die Google-Client-ID und geheimniswerte mit Secret Manager. Führen Sie für dieses Beispiel die folgenden Schritte aus:
Initialisieren Sie das Projekt für die Speicherung geheimer Schlüssel wie unter Aktivieren des Geheimnisspeichers.
Store sie die sensiblen Einstellungen im lokalen Geheimnisspeicher mit den geheimen Schlüsseln und
Authentication:Google:ClientId
anAuthentication:Google:ClientSecret
:dotnet user-secrets set "Authentication:Google:ClientId" "<client-id>" dotnet user-secrets set "Authentication:Google:ClientSecret" "<client-secret>"
Das Trennzeichen :
funktioniert nicht auf allen Plattformen mit den hierarchischen Schlüsseln von Umgebungsvariablen. Der doppelte Unterstrich __
:
- wird auf allen Plattformen unterstützt. Das Trennzeichen
:
wird beispielsweise nicht von Bash unterstützt,__
hingegen schon. - automatisch durch
:
ersetzt.
Sie können Ihre API-Anmeldeinformationen und die Verwendung in der API-Konsole verwalten.
Konfigurieren von Google-Authentifizierung
Fügen Sie den Authentifizierungsdienst zu hinzu Startup.ConfigureServices
:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<IdentityUser>(options =>
options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>();
services.AddRazorPages();
services.AddAuthentication()
.AddGoogle(options =>
{
IConfigurationSection googleAuthNSection =
Configuration.GetSection("Authentication:Google");
options.ClientId = googleAuthNSection["ClientId"];
options.ClientSecret = googleAuthNSection["ClientSecret"];
});
}
Fügen Sie den Authentifizierungsdienst zu hinzu Program
:
var builder = WebApplication.CreateBuilder(args);
var services = builder.Services;
var configuration = builder.Configuration;
services.AddAuthentication().AddGoogle(googleOptions =>
{
googleOptions.ClientId = configuration["Authentication:Google:ClientId"];
googleOptions.ClientSecret = configuration["Authentication:Google:ClientSecret"];
});
Der Aufruf von AddIdentity konfiguriert die Standardschemaeinstellungen. Die - AddAuthentication(IServiceCollection, String) Überladung legt die -Eigenschaft DefaultScheme 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 zum Überschreiben AddAuthentication
zuvor konfigurierter AuthenticationOptions Eigenschaften.
AuthenticationBuilder Erweiterungsmethoden, die einen Authentifizierungshandler registrieren, können pro Authentifizierungsschema nur einmal aufgerufen werden. Überladungen sind vorhanden, die das Konfigurieren der Schemaeigenschaften, des Schemanamens und des Anzeigenamens ermöglichen.
Anmelden mit Google
- Führen Sie die App aus, und wählen Sie Anmelden aus. Eine Option zum Anmelden mit Google wird angezeigt.
- Wählen Sie die Schaltfläche Google aus, die zur Authentifizierung an Google umgeleitet wird.
- Nachdem Sie Ihre Google-Anmeldeinformationen eingegeben haben, werden Sie zurück zur Website weitergeleitet.
Weiterleiten von Anforderungsinformationen mit einem Proxy oder Lastenausgleich
Wenn die App hinter einem Proxyserver oder Lastenausgleich bereitgestellt wird, können einige der ursprünglichen Anforderungsinformationen im Anforderungsheader an die App weitergeleitet werden. Zu diesen Informationen gehören in der Regel das sichere Anforderungsschema (https
), den Host und die Client-IP-Adresse. Apps lesen diese Anforderungsheader nicht automatisch, um die ursprünglichen Anforderungsinformationen zu ermitteln und zu verwenden.
Das Schema wird bei der Linkgenerierung verwendet, die den Authentifizierungsflow bei externen Anbietern betrifft. Der Verlust des sicheren Schemas (https
) führt dazu, dass die App falsche unsichere Umleitungs-URLs generiert.
Verwenden Sie Middleware für weitergeleitete Header, um der App zur Anforderungsverarbeitung die Informationen der ursprünglichen Anforderung verfügbar zu machen.
Weitere Informationen finden Sie unter Konfigurieren von ASP.NET Core für die Arbeit mit Proxyservern und Lastenausgleichen.
Mehrere Authentifizierungsanbieter
Wenn die App mehrere Anbieter erfordert, verketten Sie die Anbietererweiterungsmethoden hinter AddAuthentication:
services.AddAuthentication()
.AddMicrosoftAccount(microsoftOptions => { ... })
.AddGoogle(googleOptions => { ... })
.AddTwitter(twitterOptions => { ... })
.AddFacebook(facebookOptions => { ... });
Weitere Informationen zu konfigurationsoptionen, die von der Google-Authentifizierung unterstützt werden, finden Sie in der GoogleOptions API-Referenz. Dies kann verwendet werden, um verschiedene Informationen über den Benutzer anzufordern.
Ändern des Standardrückruf-URI
Der URI-Segment /signin-google
als den standardrückruf des Google-Authentifizierungsanbieter festgelegt ist. Sie können den Standardrückruf-URI ändern, während Sie die Middleware für die Google-Authentifizierung über die geerbte RemoteAuthenticationOptions.CallbackPath Eigenschaft der -Klasse GoogleOptions konfigurieren.
Problembehandlung
- Wenn die Anmeldung nicht funktioniert und keine Fehler auftreten, wechseln Sie in den Entwicklungsmodus, um das Debuggen des Problems zu vereinfachen.
- Wenn Identity nicht durch Aufrufen
services.AddIdentity
von inConfigureServices
konfiguriert wird, führt der Versuch der Authentifizierung zu ArgumentException: Die Option "SignInScheme" muss angegeben werden. Die in diesem Tutorial verwendete Projektvorlage stellt sicher, Identity dass konfiguriert ist. - Wenn die Standortdatenbank nicht erstellt wurde, indem die ursprüngliche Migration anwenden, erhalten Sie Fehler bei ein Datenbankvorgang beim Verarbeiten der Anforderung Fehler. Wählen Sie Migrationen anwenden aus, um die Datenbank zu erstellen, und aktualisieren Sie die Seite, um nach dem Fehler fortzufahren.
Nächste Schritte
- In diesem Artikel wurde gezeigt, wie Sie mit Google authentifiziert werden können. Führen Sie einen ähnlichen Ansatz für die Authentifizierung mit anderen Anbietern aufgeführt, auf die Vorgängerseite.
- Nachdem Sie die App in Azure veröffentlicht haben, setzen Sie in der
ClientSecret
Google API Console zurück. - Legen Sie die
Authentication:Google:ClientId
undAuthentication:Google:ClientSecret
Anwendungseinstellungen im Azure-Portal. Das Konfigurationssystem ist zum Lesen von Schlüsseln aus Umgebungsvariablen eingerichtet.