集成应用的前端

本页介绍了将您的应用前端与 Google Cloud Marketplace 集成的步骤。前端集成可帮助您的客户从 Google Cloud Marketplace 转到您的应用时获得流畅的体验。

为新用户创建帐号激活页面

用户从 Google Cloud Marketplace 中选择您的产品时,他们必须在您的应用中激活其帐号。您必须创建一个激活页面以在系统中设置和批准用户帐号。您可以将页面设置为注册页面,用户必须在其中注册系统中的帐号,也可以设置为自动批准帐号的页面。 在设置激活页面时,请确保用户无需输入用户名和密码即可访问该页面。

在 Google Cloud Marketplace 中,当用户单击链接以注册您的应用时,Google 会向您的激活页面发送一个 HTTP POST 请求,并在 x-gcp-marketplace-token 参数中发送一个 JSON Web 令牌(JWT)。JWT 包含用户的采购帐号 ID,该帐号将其标识为 Google Cloud 用户。您必须使用此 ID 将用户的 Google 帐号与用户在您系统中的帐号相关联。

验证 JWT 后,您的激活页面必须向 Partner Procurement API 发送帐号批准请求,如后端集成步骤中所述。

如果您不熟悉 JWT,请参阅 JWT 简介

将帐号激活页面添加到门户

您可以使用 Producer Portal 添加您的帐号激活页面网址。

Producer Portal

Producer Portal 的直接链接是:

https://console.cloud.google.com/producer-portal?project=YOUR_PROJECT_ID

如需将您的帐号激活页面添加到 Producer Portal,请执行以下操作:

  1. 在产品列表中,点击您的产品的名称。

  2. 在您产品的概览页面上,转到技术集成部分,然后点击前端集成

  3. Sign up URL(注册网址)字段中输入帐号激活页面的网址。

合作伙伴门户

合作伙伴门户的直接链接是:

https://console.cloud.google.com/partner/solutions?project=YOUR_PROJECT_ID

如需将您的帐号激活页面添加到合作伙伴门户,请执行以下操作:

  1. 在解决方案列表中,点击您创建的解决方案 ID。

  2. Plans & Features(方案和功能)页面中点击以修改页面。

  3. Signup URL(注册网址)字段中输入帐号激活页面的网址。

验证 JWT

JWT 有效负载格式如下:

标头

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

其中:

  • alg 始终为 RS256
  • kid 表示用于保护 JWT 的密钥 ID。使用密钥 ID 从载荷的 iss 属性中的 JSON 对象查找密钥。

载荷

{
  "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
  }
}

其中:

  • sub 是用户的 Google 帐号 ID。您必须使用此 ID 将用户的 Google 帐号与用户在您系统中的帐号相关联。
  • iss 用于标识 JWT 的发送者。iss 声明中的网址链接到 Google 的公钥。
  • exp 表示令牌到期时间,而且设置为令牌发送后的 5 分钟。
  • aud 是托管您产品的网域,例如 example-pro.com
  • roles 是代表用户角色的字符串数组。目前可以是:** account_admin(表示用户是购买产品的结算帐号的 Billing Account Administrator),或者 ** project_editor(表示用户是该结算帐号下的项目的 Project Editor,但不是 Billing Administrator)。
  • user_identity 是经过模糊处理的用户 GAIA ID,可用于启动 Open ID Connect。

收到 JWT 后,您必须进行以下验证:

  1. 验证 JWT 签名是否使用了 Google 的公钥。

  2. 通过检查 exp 声明来验证 JWT 尚未过期。

  3. 验证 aud 声明是否为产品的正确网域。

  4. 验证 iss 声明是否为 https://www.googleapis.com/robot/v1/metadata/x509/cloud-commerce-partner@system.gserviceaccount.com

  5. 确认 sub 不为空。

使用 login_hint 启动 Google 登录

如果您希望用户通过您的网站完成 OAuth 2.0 同意流程,则可以使用载荷的身份信息,对重定向之前用于 Google Cloud 的 Google 帐号初始化该流程。为此,您需要提供 JWT 中的 user_identity 作为 login_hint。如需了解详情,请访问 Google OAuth 2.0 文档

当用户通过您的网站完成 OAuth 2.0 流程后,您应该验证他们是您预期要完成 OAuth 流程的用户。为此,您可以使用 OAuth 2.0 访问令牌来调用 Google UserInfo API 以获取基本用户信息。这应返回与 JWT 中的 user_identity 字段匹配的 ID。

为您的客户集成单点登录 (SSO)

客户注册您的产品时,必须能够在您的激活页面上注册帐号,而无需先输入用户名和密码。

单点登录集成功能使用 JWT 对用户进行身份验证。如果您不熟悉 JWT,请参阅 JWT 简介

Producer Portal

要设置 SSO 集成,请执行以下操作:

  1. 在您产品的概览页面上,转到技术集成部分,然后点击前端集成

  2. 如需关联到信息中心,请在 Login URL(登录网址)字段中输入信息中心的网址。

  3. 要使用 Google SSO,请点击Enable SSO login (optional)[启用单点登录(可选)],然后在 SSO Login URL(单点登录网址)字段中输入您的单点登录网址。

  4. 在应用的网页界面中,添加代码以验证用户从 Google Cloud Marketplace 登录时系统发送给应用的 JWT 负载。

    用于身份验证的 JWT 格式与用户首次注册应用时系统发送的 JWT 格式相同,如验证 JWT 中所述。

合作伙伴门户

要设置 SSO 集成,请执行以下操作:

  1. 转到产品的方案和功能 (Plans and Features) 页面,然后选择修改产品的方案和功能。

  2. 如需关联信息中心,请在 Dashboard URL(信息中心网址)字段中输入信息中心的网址。

  3. 要使用 Google SLO,请在 SSO Login (optional) [单点登录(可选)] 下点击Enable SSO(启用单点登录),然后在 SSO Login URL(单点登录网址)字段中输入您的单点登录网址。在 SSO API Keys URL(SSO API 密钥网址)字段中输入 SSO API 密钥的网址。

  4. 在应用的网页界面中,添加代码以验证用户从 Google Cloud Marketplace 登录时系统发送给应用的 JWT 负载。

    用于身份验证的 JWT 格式与用户首次注册应用时系统发送的 JWT 格式相同,如验证 JWT 中所述。

为客户供应服务帐号

如果您的应用需要服务帐号,您可以与合作伙伴工程师合作来为客户供应服务帐号,并为客户设置一个页面以向服务帐号授予所需的 Identity and Access Management (IAM) 角色。您必须提供该页面的链接(通常通过应用的管理控制台提供)。

要供应服务帐号,请与合作伙伴工程师联系并提供以下信息:

  • 服务名称:这是一个唯一的产品 ID,用于区分您的应用与其他产品。我们建议您使用在添加应用时创建的服务名称。

  • 项目 ID:您在其中创建服务帐号以访问客户资源的项目的 ID。您的应用使用的所有服务帐号都必须在单个项目中创建。

  • IAM 角色和原因:服务帐号所需的 IAM 角色以及需要这些角色的原因。这会与您的客户共享,并可能会影响您的客户是否向服务帐号授予访问权限。

如果您希望客户在向服务帐号授予访问权限后返回您的网站,请将控制台的域名发送给您的合作伙伴工程师。您可以发送多个域名,包括子网域,例如 staging.example.com

合作伙伴工程师会创建一个页面,以允许您的客户向服务帐号授予访问权限。然后,可通过控制台链接到该页面。

在控制台中集成网址

在您的合作伙伴工程师通知您该页面已准备就绪后,将参数添加到网址,然后从您的控制台链接到该页面。

您必须向该网址添加两个参数:

  • service-name:这是您提供给合作伙伴工程师的服务名称。

  • service-account-email:这是您为客户创建的服务帐号的电子邮件地址。每个客户都有一个唯一的服务帐号。

以下示例显示了具有所需参数的网址:

https://console.cloud.google.com/marketplace-saas/service-account/service-name/service-account-email

您可以根据客户的需求添加其他参数。例如:

https://console.google.com/marketplace-saas/service-account/service-name/service-account-email;single=true;redirect=https%3A%2F%2Fexample.com

网址中的参数表示您的产品需要访问单个 Google Cloud 项目,并且客户可以返回您的控制台。

网址参数列表

下面列出了您可以发送到授予访问权限的网址参数:

参数说明
service-name这是必填项。 这是您提供给合作伙伴工程师的服务名称。
service-account-email这是必填项。 这是您为客户创建的服务帐号的电子邮件地址。
single如果为 true,则表示您的产品需要访问单个项目。
hints=project-id-1设置您希望服务帐号访问的项目。使用英文逗号分隔项目。
filter=role1将授予服务帐号的角色限制为提供给合作伙伴工程师的一部分角色。使用过滤条件时排除 roles/
redirect为客户提供用于返回到管理控制台的链接。您必须向合作伙伴工程师注册域名才能使用此参数。