Front-End Ihrer App 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.

Sie müssen eine Registrierungs-URL angeben, über die Nutzerkonten erstellt werden. Diese Konten werden dann in Ihrer Webkonsole verwaltet. Sie müssen auch eine URL angeben, über die sich Nutzer anmelden können. Optional können Sie die Einmalanmeldung (SSO) einbinden.

Frontend Ihrer App mit Producer Portal einbinden

Wenn Sie auf alle Informationen zugreifen möchten, die Sie benötigen, um das Frontend Ihrer Anwendung von einem Ort aus in Cloud Marketplace zu integrieren, können Sie den Bereich Frontend-Integration des Producer Portal verwenden.

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. Wechseln Sie auf der Seite Übersicht Ihres Produkts zum Abschnitt Technische Integration und klicken Sie auf Frontend-Integration.

Registrierungs-URL hinzufügen

Wenn Nutzer Ihr Produkt im Cloud Marketplace kaufen, müssen Sie ein Konto für sie 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 Registrierungsseite erstellt haben, fügen Sie sie im Producer Portal hinzu:

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

  2. Wechseln Sie auf der Seite Übersicht Ihres Produkts zum Abschnitt Technische Integration und klicken Sie auf Frontend-Integration.

  3. Geben Sie die URL für Ihre Registrierungsseite in das Feld Registrierungs-URL ein.

Registrierungsinformationen des Nutzers überprüfen

Wenn ein Nutzer noch kein Konto in Ihrem System eingerichtet hat, muss er im Cloud Marketplace auf die Schaltfläche Mit YOUR_COMPANY_NAME registrieren klicken. Wenn Nutzer auf die Schaltfläche klicken, sendet Google Cloud eine HTTP POST-Anfrage an Ihre Registrierungsseite 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, sowie 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.

Nachdem Sie das JWT geprüft haben, muss Ihre Registrierungsseite eine Kontogenehmigungsanfrage an die Partner Procurement API senden, wie in den Back-End-Integrationsschritten beschrieben.

Ausführliche Informationen zur JWT-Nutzlast und dazu, wie Sie sie prüfen, finden Sie unten unter JWT prüfen.

Wenn Sie noch nicht mit JWTs gearbeitet haben, lesen Sie die JWT-Einführung.

Log-in-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:

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

  2. Wechseln Sie auf der Seite Übersicht Ihres Produkts zum Abschnitt Technische Integration und klicken Sie auf Frontend-Einbindung.

  3. Geben Sie die URL für die Anmeldeseite Ihrer App in das Feld Anmelde-URL ein.

Optional: Einmalanmeldung (SSO) für Ihre Kunden aktivieren

So aktivieren Sie SSO in Producer Portal:

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

    1. Wechseln Sie auf der Seite Übersicht Ihres Produkts zum Abschnitt Technische Integration und klicken Sie auf Frontend-Integration.

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

SSO-Anmeldedaten Ihrer Kunden bestätigen

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

Ausführliche Informationen zur JWT-Nutzlast und dazu, wie Sie sie prüfen, finden Sie unten unter JWT prüfen.

JWT überprüfen

Bei einigen Vorgängen, z. B. der Registrierung eines neuen Kunden oder der Anmeldung eines Kunden mit SSO, wird eine HTTP POST-Anfrage mit einem JSON Web Token (JWT) an Sie gesendet, das Sie möglicherweise überprüfen müssen.

In der folgenden Tabelle ist Folgendes aufgeführt:

  • Ereignisse, bei denen eine HTTP-Anfrage mit einem JWT gesendet wird.
  • Der Typ der HTTP-Anfrage.
  • Gibt an, ob Sie das JWT überprüfen müssen.
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 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 vom JSON-Objekt im Attribut iss 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 Anfrage iss 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, über das das Produkt gekauft wurde, oder

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

  • user_identity ist die verschleierte GAIA-ID des Nutzers, die zum Starten von OpenID Connect verwendet 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 die eindeutige Bestell-ID, die der Berechtigungs-ID für jede Bestellung entspricht. Die Anmeldeseite Ihrer App muss auf dieses neue orders-Feld reagieren können.

{
  "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 unter Mehrere Bestellungen desselben Produkts aktivieren.

Nutzlast prüfen

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

  1. die JWT-Signatur den öffentlichen Schlüssel von Google verwendet.

  2. Bestätigen Sie, dass die JWT nicht abgelaufen ist, indem Sie den Anspruch exp prüfen.

  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-Anmeldung 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 Dokumentation zu Google OAuth 2.0.

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 dem Feld user_identity aus dem JWT entsprechen sollte.

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
  • Richten Sie eine Seite zur Dienstkontoverwaltung ein, auf der Ihre Kunden 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 Ihr Produkt von anderen Produkten unterscheidet. Wir empfehlen, den Dienstnamen zu verwenden, den Sie beim Einrichten Ihres Produkts erstellt haben.

  • Projekt-ID: Die ID des Projekts, in dem Sie die Dienstkonten erstellen, die auf die Ressourcen Ihrer Kunden zugreifen. Alle Dienstkonten, die Ihr Produkt verwendet, müssen in einem einzigen Projekt erstellt werden.

  • IAM-Rollen und -Gründe: Die für die Dienstkonten erforderlichen IAM-Rollen und der Grund für die erforderliche Rolle. Dies wird Ihrem Kunden mitgeteilt und kann 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 Console Ihres Produkts 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 zur Verwaltung von Dienstkonten 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 zusätzliche 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 in der URL geben an, dass Ihr Produkt Zugriff auf ein einzelnesGoogle Cloud -Projekt benötigt und dass 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 Seite zur Verwaltung von Dienstkonten 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.