Nutzer mit externen Identitäten authentifizieren
In dieser Kurzanleitung erfahren Sie, wie Sie eine Anwendung mithilfe von Identity-Aware Proxy (IAP) und externen Identitäten schützen. Durch die Kombination von IAP und Identity Platform können Sie Nutzer neben dem Google-Konto auch über eine Vielzahl von Identitätsanbietern wie OAuth, SAML und OIDC authentifizieren.
Im Rahmen dieser Kurzanleitung schützen Sie eine App Engine-Anwendung mithilfe der Facebook-Authentifizierung.
Hinweis
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Ausführen der Kurzanleitung benötigen:
- Projektersteller (
roles/resourcemanager.projectCreator) - App Engine-Administrator(
roles/appengine.appAdmin) - Firebase Authentication-Betrachter (
roles/firebaseauth.viewer) - IAP-Richtlinienadministrator (
roles/iap.admin) - Compute-Betrachter (
roles/compute.viewer) - Identity Platform-Administrator (
roles/identityplatform.admin)
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Wählen Sie in der Google Cloud Console auf der Seite für die Projektauswahl ein Google Cloud -Projekt aus oder erstellen Sie eines.
Rollen, die zum Auswählen oder Erstellen eines Projekts erforderlich sind
- Projekt auswählen: Für die Auswahl eines Projekts ist keine bestimmte IAM-Rolle erforderlich. Sie können jedes Projekt auswählen, für das Ihnen eine Rolle zugewiesen wurde.
-
Projekt erstellen: Zum Erstellen eines Projekts benötigen Sie die Rolle „Projektersteller“ (
roles/resourcemanager.projectCreator), die die Berechtigungresourcemanager.projects.createenthält. Weitere Informationen zum Zuweisen von Rollen
Prüfen Sie, ob für Ihr Google Cloud Projekt die Abrechnung aktiviert ist.
Installieren Sie die Google Cloud CLI. Initialisieren Sie die Google Cloud CLI nach der Installation mit dem folgenden Befehl:
gcloud initWenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
Initialisieren Sie App Engine für Ihr Projekt:
gcloud app create --project=project-id
Installieren Sie eine aktuelle Version von Node.js.
Installieren Sie das Firebase-Befehlszeilentool:
npm install -g firebase-tools
APIs aktivieren
Aktivieren Sie zuerst Identity Platform:
Rufen Sie in derGoogle Cloud Console die Seite Identity Platform Marketplace auf.
Klicken Sie auf Identity Platform aktivieren. In der Google Cloud Console wird dann die Seite „Identity Platform“ angezeigt.
Aktivieren Sie anschließend IAP:
Rufen Sie in der Google Cloud Console die Seite IAP auf.
Wählen Sie das Projekt aus, das Sie auch für Identity Platform verwendet haben. Die Verwendung unterschiedlicher Projekte wird nicht unterstützt.
Klicken Sie auf API aktivieren.
Beispielcode herunterladen und bereitstellen
Der Code für diese Kurzanleitung besteht aus zwei Komponenten: einer Clientanwendung und einer Authentifizierungsanwendung.
Die Clientanwendung ist durch IAP geschützt. Wenn sie eine Anfrage von einem nicht authentifizierten Nutzer erhält, leitet sie die Anfrage an die Authentifizierungsanwendung weiter, damit die Identität des Nutzers überprüft wird. Meldet sich der Nutzer erfolgreich an, antwortet die Authentifizierungsanwendung mit einem JSON-Webtoken (JWT). Zu Demonstrationszwecken wird das JWT von der Clientanwendung angezeigt.
Laden Sie zuerst den Code herunter und stellen Sie die Clientanwendung bereit:
Laden Sie den Beispielcode herunter:
git clone https://github.com/GoogleCloudPlatform/iap-gcip-web-toolkit.git
Wechseln Sie in das Verzeichnis der Clientanwendung:
cd iap-gcip-web-toolkit/sample/appInstallieren Sie die Abhängigkeiten:
npm installStellen Sie die Clientanwendung in App Engine bereit:
npm run deployDie Clientanwendung wird unter folgender URL gestartet:
https://[PROJECT-ID].appspot.com
Stellen Sie als Nächstes die Authentifizierungsanwendung bereit:
Wechseln Sie in das Verzeichnis für die Authentifizierungsanwendung:
cd ../authui-firebaseuiInstallieren Sie die Abhängigkeiten:
npm install export NODE_OPTIONS=--openssl-legacy-providerKonfigurieren Sie die Authentifizierungsanwendung für die Verwendung von Firebase Hosting. Geben Sie die Google CloudProjekt-ID des Google Cloud Projekts an, das IAP-Käufe geschützte Client-App enthält:
firebase use project-id
Stellen Sie die Anwendung bereit:
npm run deployDie Authentifizierungsanwendung wird unter folgender URL gestartet:
https://[PROJECT-ID].firebaseapp.com
Sie haben jetzt die Client- und Authentifizierungsanwendungen bereitgestellt. Im nächsten Schritt konfigurieren Sie Identity Platform und IAP.
Identity Platform einrichten
IAP verwendet Identity Platform zum Authentifizieren externer Identitäten. In dieser Kurzanleitung wird als Beispiel Facebook verwendet. Identity Platform unterstützt aber eine Vielzahl von Identitätsanbietern.
Eine Facebook-Anwendung erstellen
Zum Authentifizieren von Nutzern mit Facebook benötigen Sie eine App-ID und ein App-Secret.
Melden Sie sich bei Meta for Developers an. Wenn Sie noch kein Facebook-Konto haben, müssen Sie ein solches Konto erstellen.
Rufen Sie die Seite Meine Apps von Facebook auf.
Klicken Sie auf Anwendung erstellen.
Wählen Sie im Menü auf der linken Seite Einstellungen > Allgemein aus.
Geben Sie in das Feld URL der Datenerklärung eine gültige URL ein. Wenn Sie die Anwendung später für die Produktion bereitstellen, können Sie die URL entsprechend aktualisieren, damit sie auf Ihre Datenschutzerklärung verweist.
Notieren Sie sich Ihre App-ID und Ihr App-Secret. Sie benötigen diese Informationen im nächsten Abschnitt.
Facebook als Identitätsanbieter hinzufügen
Konfigurieren Sie Identity Platform für die Authentifizierung mit Facebook:
Rufen Sie in der Google Cloud Console die Seite Identitätsanbieter auf.
Klicken Sie auf Anbieter hinzufügen.
Wählen Sie aus der Liste der Anbieter Facebook aus.
Geben Sie die App-ID und das App-Secret ein, die Sie im vorherigen Abschnitt abgerufen haben.