Frontend Ihrer Anwendung einbinden

Auf dieser Seite wird beschrieben, wie Sie das Frontend Ihrer Anwendung in Cloud Marketplace einbinden, damit Ihre Kunden reibungslos von Cloud Marketplace zu Ihrem Produkt wechseln können.

Allgemein müssen Sie eine Registrierungs-URL angeben, um Nutzerkonten zu erstellen, 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 auch die Einmalanmeldung (SSO) einbinden.

Producer Portal verwenden, um das Frontend Ihrer Anwendung zu integrieren

Im Abschnitt Frontend-Integration des Producer Portal können Sie von einem Standort aus auf alle Informationen zugreifen, die Sie zur Einbindung des Frontends Ihrer Anwendung in Cloud Marketplace benötigen.

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:

  1. Klicken Sie in der Produktliste auf den Namen des Produkts.

  2. Rufen Sie auf der Seite Übersicht des Produkts den Abschnitt Technische Integration auf und klicken Sie auf Front-End-Integration.

Registrierungs-URL hinzufügen

Wenn Nutzer Ihr Produkt im Cloud Marketplace kaufen, müssen Sie für sie ein Konto bei Ihrem Produkt erstellen. Dazu müssen Sie eine Anmeldeseite erstellen, um Nutzerkonten 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 registrieren, oder als Seite, die Konten automatisch genehmigt.

Nachdem Sie die Anmeldeseite erstellt haben, fügen Sie sie im Producer Portal hinzu:

  1. Klicken Sie in der Produktliste auf den Namen des Produkts.

  2. Gehen Sie auf der Seite Übersicht des Produkts zum Abschnitt Technische Integration und klicken Sie auf Front-End-Integration.

  3. Geben Sie die URL Ihrer Anmeldeseite in das Feld Registrierungs-URL ein.

Anmeldeinformationen des Nutzers überprüfen

Wenn ein Nutzer in Ihrem System noch kein Konto eingerichtet hat, muss er auf die Schaltfläche Registrieren mit YOUR_COMPANY_NAME im Cloud Marketplace klicken. Wenn der Nutzer auf die Schaltfläche klickt, sendet Google Cloud eine HTTP POST-Anfrage mit einem JSON Web Token (JWT) im Parameter x-gcp-marketplace-token an Ihre Anmeldeseite. 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 als auch die verschleierte ID verwenden, um das Google-Konto des Nutzers mit seinem Konto in Ihrem System zu verknüpfen.

Nach der Bestätigung des JWT muss Ihre Anmeldeseite eine Kontogenehmigungsanfrage an die Partner Procurement API senden, wie in den Back-End-Integrationsschritten beschrieben.

Detaillierte Informationen zur JWT-Nutzlast und dazu, wie sie überprüft werden kann, findest du unten unter JWT überprüfen.

Wenn Sie zum ersten Mal mit JWTs arbeiten, lesen Sie die JWT-Einführung.

Log-in-URL hinzufügen

Sie müssen die URL für die Anmeldeseite Ihrer Anwendung angeben.

So geben Sie die URL für die Anmeldeseite Ihrer App im Producer Portal ein:

  1. Klicken Sie in der Produktliste auf den Namen des Produkts.

  2. Gehen Sie auf der Seite Übersicht des Produkts zum Abschnitt Technische Integration und klicken Sie auf Front-End-Integration.

  3. 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:

  1. Klicken Sie in der Produktliste auf den Namen des Produkts.

    1. Rufe auf der Seite Übersicht des Produkts den Abschnitt Technische Integration auf und klicke auf Front-End-Integration.

    2. Wählen Sie unter Enable SSO login? (SSO-Anmeldung aktivieren?) die Option Ja aus.

SSO-Anmeldedaten Ihrer Kunden bestätigen

Wenn sich Kunden mit SSO bei Ihrer App anmelden, sendet Google Cloud eine HTTP POST-Anfrage mit einem JSON-Webtoken (JWT) im selben Format wie das JWT an die Anmeldeseite der App, das gesendet wird, wenn Nutzer sich zum ersten Mal für Ihre App registrieren.

Detaillierte Informationen zur JWT-Nutzlast und dazu, wie sie überprüft werden kann, findest du unten unter JWT überprüfen.

JWT überprüfen

Bei einigen Prozessen, z. B. bei der Registrierung eines neuen Kunden oder beim Anmelden eines Kunden mit SSO, wird eine HTTP POST-Anfrage mit einem JSON-Webtoken (JWT) gesendet, das du möglicherweise verifizieren musst.

In der folgenden Tabelle ist aufgeführt:

  • Ereignisse, bei denen eine HTTP-Anfrage mit einem JWT gesendet wird.
  • Der Typ der betreffenden HTTP-Anfrage.
  • Gibt an, ob das JWT verifiziert werden muss.
Ereignis HTTP-Anfragetyp JWT-Überprüfung erforderlich

Neuen Kunden registrieren

POST

Yes

Kundenanmeldung ohne SSO

GET

Nein

Kundenanmeldung mit SSO

POST

Yes

Die JWT-Nutzlast

Die JWT-Nutzlast hat folgendes Format:

Header

{
  "alg": "RS256",
  "kid": "KEY_ID"
}

Wobei:

  • alg ist immer RS256.
  • kid gibt die Schlüssel-ID an, die zum Sichern des JWT verwendet wurde. Verwenden Sie die Schlüssel-ID, um den Schlüssel aus dem JSON-Objekt im Attribut iss in der Nutzlast abzurufen.

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 identifiziert den Absender des JWT. Die URL in der iss-Anforderung 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. Dabei gibt es folgende Möglichkeiten:

    • account_admin gibt an, dass der Nutzer ein Rechnungskontoadministrator (Order Administrator) des Rechnungskontos ist, über das das Produkt erworben wurde.

    • project_editor gibt an, dass der Nutzer ein Bearbeiter (Berechtigungsmanager), aber kein Abrechnungsadministrator des Projekts unter diesem Rechnungskonto ist.

  • user_identity ist die verschleierte GAIA-ID des Nutzers, mit der OpenID Connect initiiert werden kann.

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 auch die eindeutige Bestell-ID, die der Berechtigungs-ID jeder 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 für dasselbe Produkt finden Sie unter Mehrere Bestellungen für dasselbe Produkt aktivieren.

Nutzlast überprüfen

Wenn Sie das JWT erhalten, müssen Sie überprüfen, ob

  1. Prüfen Sie, ob die JWT-Signatur den öffentlichen Schlüssel von Google verwendet.

  2. Achte darauf, dass das JWT nicht abgelaufen ist, indem du die exp-Anforderung prüfst.

  3. Bestätigen Sie, dass die aud-Anforderung die richtige Domain für Ihr Produkt ist.

  4. Bestätigen Sie, dass die Anforderung iss https://www.googleapis.com/robot/v1/metadata/x509/cloud-commerce-partner@system.gserviceaccount.com ist.

  5. 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 findest du in der Google OAuth 2.0-Dokumentation.

Nachdem der Nutzer den OAuth 2.0-Vorgang mit deiner Website abgeschlossen hat, solltest du überprüfen, ob er tatsächlich der Nutzer ist, von dem du erwartet hast, dass er den OAuth-Vorgang abschließen wird. 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 voraussichtlich mit dem Feld user_identity aus dem JWT übereinstimmt.

Dienstkonten für Ihre Kunden erstellen

Wenn für Ihr Produkt ein Dienstkonto erforderlich ist, können Sie mit einem Partnerentwickler zusammenarbeiten, um:

  • Dienstkonten für Ihre Kunden bereitstellen und
  • Richten Sie eine Seite zur Dienstkontoverwaltung für Ihre Kunden ein, um den Dienstkonten die erforderlichen IAM-Rollen (Identity and Access Management) zuzuweisen.

Sie müssen Ihren Kunden den Link zu dieser Dienstkontoseite zur Verfügung stellen, in der Regel über die Verwaltungskonsole des 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 Ihr Produkt von anderen Produkten unterscheidet. Wir empfehlen die Verwendung des Dienstnamens, den Sie bei der Onboarding Ihres Produkts erstellt haben.

  • 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 einzelnen Projekt erstellen.

  • IAM-Rollen und -Begründung: Die für die Dienstkonten erforderlichen IAM-Rollen und der Grund dafür, warum die Rollen erforderlich sind. Diese wird mit Ihrem Kunden geteilt und kann sich darauf auswirken, ob er 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 für die Dienstkontoverwaltung, damit Ihre Kunden Zugriff auf die Dienstkonten gewähren können. Sie verlinken die Seite in Ihrer Konsole.

Nachdem Ihr Partnerentwickler Ihnen mitgeteilt hat, dass die Dienstkonto-Verwaltungsseite bereit ist, fügen Sie der URL Parameter hinzu und erstellen Sie dann einen Link von Ihrer Konsole zur 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

Je nach den Anforderungen Ihrer Kunden können Sie weitere Parameter hinzufügen. 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 Ihr Produkt Zugriff auf ein einzelnes Google Cloud-Projekt benötigt 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 die Verwaltungsseite des Dienstkontos senden können:

ParameterBeschreibung
service-nameDas ist ein Pflichtfeld. Dies ist der Dienstname, den Sie Ihrem Partnerentwickler angegeben haben.
service-account-emailDas ist ein Pflichtfeld. Dies ist die E-Mail-Adresse des Dienstkontos, das Sie für Ihren Kunden erstellt haben.
singleWenn "true" (wahr), bedeutet dies, dass Ihr Produkt Zugriff auf ein einzelnes Projekt benötigt.
hints=project-id-1Legt das Projekt fest, auf das das Dienstkonto zugreifen soll. Verwenden Sie Kommas, um Projekte zu trennen.
filter=role1Beschrä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.
redirectBietet 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.