Auf dieser Seite wird beschrieben, wie Sie das Frontend Ihrer App in Cloud Marketplace einbinden, damit Ihre Kunden reibungslos vom Cloud Marketplace zu Ihrem Produkt wechseln können.
Sie müssen eine Anmelde-URL angeben, über die Nutzerkonten erstellt werden, die dann in Ihrer Webkonsole verwaltet werden. Außerdem müssen Sie eine URL angeben, über die sich Nutzer anmelden können. Optional können Sie die Einmalanmeldung (SSO) einbinden.
Frontend Ihrer Anwendung mit Producer Portal einbinden
Für den Zugriff auf alle Informationen benötigen Sie das Frontend Ihrer Anwendung Cloud Marketplace von einem Standort aus nutzen können, Bereich Frontend-Integration des Producer Portal.
Der Link zu Producer Portal lautet:
https://console.cloud.google.com/producer-portal?project=YOUR_PROJECT_ID
So greifen Sie auf den Abschnitt Front-End-Integration zu:
Klicken Sie in der Produktliste auf den Namen des Produkts.
Wechseln Sie auf der Seite Übersicht des Produkts zum Abschnitt Technische Einbindung und klicken Sie auf Frontend-Einbindung.
Registrierungs-URL hinzufügen
Wenn Nutzer Ihr Produkt im Cloud Marketplace kaufen, müssen Sie für sie ein Konto mit Ihrem Produkt erstellen. Dazu müssen Sie eine Anmeldeseite erstellen, um die Konten von Nutzern in Ihrem System einzurichten und zu genehmigen. Sie können die Seite als Registrierungsseite einrichten, auf der Nutzer sich für ein Konto in Ihrem System anmelden müssen, oder als Seite, auf der Konten automatisch genehmigt werden.
Nachdem Sie die Anmeldeseite erstellt haben, fügen Sie sie im Producer Portal hinzu:
Klicken Sie in der Produktliste auf den Namen des Produkts.
Wechseln Sie auf der Seite Übersicht des Produkts zum Abschnitt Technische Einbindung und klicken Sie auf Frontend-Einbindung.
Geben Sie die URL Ihrer Anmeldeseite in das Feld Registrierungs-URL ein.
Anmeldeinformationen des Nutzers überprüfen
Wenn ein Nutzer noch kein Konto in Ihrem System hat, muss er im Cloud Marketplace auf die Schaltfläche Über YOUR_COMPANY_NAME
registrieren klicken. Wenn der Nutzer auf die Schaltfläche klickt, sendet Google Cloud eine HTTP POST
-Anfrage an Ihre Anmeldeseite mit einem JSON-Web-Token (JWT) im Parameter x-gcp-marketplace-token
. Das JWT enthält die Beschaffungskonto-ID des Nutzers, die ihn als Google Cloud-Nutzer identifiziert, und eine verschleierte ID, die seine Google-Konto-ID darstellt. Sie müssen sowohl die
Beschaffungskonto-ID und die verschleierte ID, um das Google-Konto des Nutzers zu verknüpfen
mit seinem Konto in Ihrem System verknüpfen.
Nach der JWT-Bestätigung muss auf der Registrierungsseite eine Kontogenehmigungsanfrage an die Partner Procurement API gesendet werden, wie unter Back-End-Integrationsschritte beschrieben.
Detaillierte Informationen zur JWT-Nutzlast und dazu, wie sie überprüft werden kann, findest du unter Überprüfe das JWT unten.
Wenn Sie mit JWTs noch nicht vertraut sind, lesen Sie die JWT-Einführung.
Anmelde-URL hinzufügen
Sie müssen die URL für die Anmeldeseite Ihrer App angeben.
So geben Sie die URL für die Anmeldeseite Ihrer App im Producer Portal ein:
Klicken Sie in der Produktliste auf den Namen des Produkts.
Gehen Sie auf der Übersichtsseite Ihres Produkts zum technischen integration und klicken Sie auf Frontend-Integration.
Geben Sie in das Feld Login URL (Anmelde-URL) die URL der Anmeldeseite Ihrer App ein.
Optional: Einmalanmeldung (SSO) für Ihre Kunden aktivieren
So aktivieren Sie die Einmalanmeldung (SSO) im Producer Portal:
Klicken Sie in der Produktliste auf den Namen des Produkts.
Gehen Sie auf der Übersichtsseite Ihres Produkts zum technischen integration und klicken Sie auf Frontend-Integration.
Wählen Sie unter Enable SSO login? (SSO-Anmeldung aktivieren?) die Option Ja aus.
Anmeldedaten für die SSO-Anmeldung Ihrer Kunden bestätigen
Wenn sich Kunden mit SSO in Ihrer Anwendung anmelden, sendet Google Cloud eine
HTTP POST
-Anfrage an die Anmeldeseite Ihrer App mit einem
JSON-Webtoken (JWT)
des JWT, das gesendet wird, wenn sich Nutzer zum ersten Mal für Ihre App registrieren.
Detaillierte Informationen zur JWT-Nutzlast und dazu, wie sie überprüft werden kann, findest du unter Überprüfe das JWT unten.
JWT überprüfen
Einige Prozesse, z. B. die Registrierung eines Neukunden oder die Anmeldung eines Kunden mit
SSO (engl. „HTTP POST
“-Anfrage mit einem
Möglicherweise benötigte JSON-Webtoken (JWT)
zu überprüfen.
In der folgenden Tabelle ist aufgeführt:
- Ereignisse, bei denen eine HTTP-Anfrage mit einem JWT gesendet wird.
- Der Typ der HTTP-Anfrage.
- Gibt an, ob das JWT verifiziert werden muss.
Ereignis | HTTP-Anfragetyp | JWT-Überprüfung erforderlich |
---|---|---|
Neuen Kunden registrieren |
POST |
Ja |
Kundenanmeldung, ohne SSO |
GET |
Nein |
Kundenanmeldung mit SSO |
POST |
Ja |
Die JWT-Nutzlast
Die JWT-Nutzlast hat folgendes Format:
Header
{ "alg": "RS256", "kid": "KEY_ID" }
Wobei:
alg
ist immerRS256
.kid
gibt die Schlüssel-ID an, die zum Sichern des JWT verwendet wurde. Verwenden Sie die Schlüssel-ID, um den Schlüssel vom JSON-Objekt im Attributiss
in der Nutzlast nachzuschlagen.
Nutzlast
{ "iss": "https://www.googleapis.com/robot/v1/metadata/x509/cloud-commerce-partner@system.gserviceaccount.com", "iat": CURRENT_TIME, "exp": CURRENT_TIME + 5 minutes, "aud": "PARTNER_DOMAIN_NAME", "sub": "PROCUREMENT_ACCOUNT_ID", "google": { "roles": [GCP_ROLE], "user_identity": USER_ID } }
Wobei:
sub
ist die Google-Konto-ID des Nutzers. Sie müssen diese ID verwenden, um das Google-Konto des Nutzers mit seinem Konto in Ihrem System zu verknüpfen.iss
gibt den Absender des JWT an. Die URL in der Anfrageiss
ist mit einem öffentlichen Schlüssel von Google verknüpft.exp
gibt an, wann das Token abläuft, und wird 5 Minuten nach dem Senden des Token festgelegt.aud
ist die Domain, in der Ihr Produkt gehostet wird, z. B.example.com
.roles
ist ein Array von Strings, die die Rollen des Nutzers darstellen. Es kann sich um Folgendes handeln:account_admin
, was darauf hinweist, dass der Nutzer ein Rechnungskontoadministrator (Bestelladministrator) des Rechnungskontos ist, das das Produkt gekauft hat, oderproject_editor
, was angibt, dass der Nutzer ein Bearbeiter (Berechtigung) ist Administrator), aber nicht als Abrechnungsadministrator des Projekts unter diesem Rechnungskonto.
user_identity
ist die verschleierte GAIA-ID des Nutzers, mit der Sie Folgendes tun können: Initiieren Sie OpenID Connect.
Nutzlast für mehrere Bestellungen desselben Produkts
Wenn Sie mehrere Bestellungen desselben Produkts aktiviert haben, enthält die Nutzlast ein zusätzliches orders
-Objekt. Dazu gehört die eindeutige Bestell-ID, die der Berechtigungs-ID für jede Bestellung entspricht. Achte darauf, dass die Anmeldeseite deiner App auf dieses neue orders
-Feld reagieren kann.
{ "iss": "https://www.googleapis.com/robot/v1/metadata/x509/cloud-commerce-partner@system.gserviceaccount.com", "iat": CURRENT_TIME, "exp": CURRENT_TIME + 5 minutes, "aud": "PARTNER_DOMAIN_NAME", "sub": "PROCUREMENT_ACCOUNT_ID", "google": { "roles": [GCP_ROLE], "user_identity": USER_ID, "orders": [ORDER_ID1, ORDER_ID2] } }
Wobei:
ORDER_ID
ist eine Liste eindeutiger Bestell-IDs für jede Berechtigungs-ID, die die verschiedenen Angebote für dasselbe Produkt angibt. Dieses Feld ist nur verfügbar, wenn mehrere Bestellungen desselben Produkts aktiviert sind.
Weitere Informationen zum Aktivieren mehrerer Bestellungen desselben Produkts finden Sie im Hilfeartikel Mehrere Bestellungen desselben Produkts aktivieren.
Nutzlast prüfen
Wenn Sie das JWT erhalten, müssen Sie überprüfen, ob
Prüfen Sie, ob die JWT-Signatur den öffentlichen Schlüssel von Google.
Prüfen Sie, ob die JWT nicht abgelaufen ist, indem Sie den Anspruch
exp
prüfen.Bestätigen Sie, dass die
aud
-Anforderung die richtige Domain für Ihr Produkt ist.Bestätigen Sie, dass die Anforderung
iss
https://www.googleapis.com/robot/v1/metadata/x509/cloud-commerce-partner@system.gserviceaccount.com
ist.Bestätigen Sie, dass
sub
nicht leer ist.
Google Log-in mit login_hint
initiieren
Wenn Sie möchten, dass Ihre Nutzer einen OAuth 2.0-Zustimmungsablauf für Ihre Website durchlaufen, können Sie die Identitätsinformationen aus der Nutzlast verwenden, um diesen Ablauf für das Google-Konto zu initialisieren, das sie vor der Weiterleitung für Google Cloud verwendet haben. Dazu geben Sie die im JWT bereitgestellte user_identity
als login_hint
an.
Weitere Informationen finden Sie in der
Google OAuth 2.0-Dokumentation
Nachdem der Nutzer den OAuth 2.0-Ablauf für Ihre Website abgeschlossen hat, sollten Sie prüfen, ob der OAuth-Ablauf auch tatsächlich vom erwarteten Nutzer ausgeführt wurde. Dazu verwenden Sie das OAuth 2.0-Zugriffstoken, um über die Google UserInfo API die grundlegenden Nutzerinformationen abzurufen. Dadurch wird eine ID zurückgegeben, die wahrscheinlich mit dem
Feld user_identity
aus dem JWT.
Dienstkonten für Ihre Kunden erstellen
Wenn Ihr Produkt ein Dienstkonto erfordert, können Sie mit einem Partnerentwickler zusammenarbeiten, um Folgendes zu tun:
- Dienstkonten für Ihre Kunden bereitstellen und
- Richten Sie eine Seite zur Verwaltung von Dienstkonten für Ihre Kunden ein, auf der sie den Dienstkonten die erforderlichen IAM-Rollen (Identity and Access Management) zuweisen können.
Sie müssen Ihren Kunden den Link zu dieser Dienstkontoseite zur Verfügung stellen. in der Regel über die Verwaltungskonsole Ihres Produkts.
Dienstkonten bereitstellen
Wenden Sie sich zum Bereitstellen der Dienstkonten an Ihren Partnerentwickler und geben Sie die folgenden Informationen an:
Dienstname: Dies ist eine eindeutige Produkt-ID, die Ihre Marke Produkt von anderen Produkten. Wir empfehlen, den Dienstnamen zu verwenden, erstellt, als Sie eingeführt.
Projekt-ID: Die ID des Projekts, in dem Sie die Dienstkonten erstellen, die auf die Ressourcen Ihrer Kunden zugreifen. Sie müssen alle Dienstkonten, die Ihr Produkt verwendet, in einem einzigen Projekt erstellen.
IAM-Rollen und -Gründe: Die für die Dienstkonten erforderlichen IAM-Rollen und der Grund für die erforderliche Rolle. Diese Informationen werden Ihrem Kunden mitgeteilt und können sich darauf auswirken, ob Ihr Kunde Zugriff auf das Dienstkonto gewährt.
Wenn Ihr Kunde zu Ihrer Website zurückkehren soll, nachdem er Zugriff auf das Dienstkonto gewährt hat, senden Sie den Domainnamen Ihrer Konsole an Ihren Partnerentwickler. Sie können mehrere Domainnamen senden, einschließlich Subdomains, z. B. staging.example.com
.
Seite zur Dienstkontoverwaltung in die Produktkonsole einbinden
Der Partnerentwickler erstellt eine Seite zur Verwaltung von Dienstkonten, auf der Ihre Kunden Zugriff auf die Dienstkonten gewähren können. Anschließend verweisen Sie über die Konsole auf die Seite.
Wenn Ihr Partnerentwickler Ihnen mitgeteilt hat, dass die Seite für die Verwaltung des Dienstkontos bereit ist, fügen Sie der URL Parameter hinzu und verknüpfen Sie die Seite dann über Ihre Konsole mit der Seite.
Der URL müssen zwei Parameter hinzugefügt werden:
service-name
: Dies ist der Dienstname, den Sie Ihrem Partnerentwickler angegeben haben.service-account-email
: Dies ist die E-Mail-Adresse des Dienstkontos, das Sie für Ihren Kunden erstellt haben. Jeder Kunde hat ein eindeutiges Dienstkonto.
Das folgende Beispiel zeigt eine URL mit den erforderlichen Parametern:
https://console.cloud.google.com/marketplace-saas/service-account/service-name/service-account-email
Sie können je nach den Anforderungen Ihrer Kunden Anforderungen. Beispiel:
https://console.google.com/marketplace-saas/service-account/service-name/service-account-email;single=true;redirect=https%3A%2F%2Fexample.com
Die Parameter der URL geben an, dass für Ihr Produkt Zugriff auf ein einzelnes Google Cloud-Projekt zu erstellen und der Kunde zu Ihrer Konsole zurückkehren kann.
Liste der URL-Parameter
Im Folgenden finden Sie eine Liste der URL-Parameter, die Sie an den Dienst senden können. Seite für die Kontoverwaltung:
Parameter | Beschreibung |
---|---|
service-name | Das ist ein Pflichtfeld. Dies ist der Dienstname, den Sie Ihrem Partnerentwickler angegeben haben. |
service-account-email | Das ist ein Pflichtfeld. Dies ist die E-Mail-Adresse des Dienstkontos, das Sie für Ihren Kunden erstellt haben. |
single | Wenn "true" (wahr), bedeutet dies, dass Ihr Produkt Zugriff auf ein einzelnes Projekt benötigt. |
hints=project-id-1 | Legt das Projekt fest, auf das das Dienstkonto zugreifen soll. Verwenden Sie Kommas, um Projekte zu trennen. |
filter=role1 | Beschränkt die dem Dienstkonto zugewiesenen Rollen auf einen Teil der Rollen, die Sie Ihrem Partnerentwickler zugewiesen haben. Schließen Sie roles/ aus, wenn Sie den Filter verwenden. |
redirect | Bietet einen Link, über den der Kunde zu Ihrer Verwaltungskonsole zurückkehren kann. Der Domainname muss bei Ihrem Partnerentwickler registriert sein, um diesen Parameter verwenden zu können. |