En esta página se describe cómo integrar el frontend de tu aplicación con Cloud Marketplace para ofrecer a tus clientes una experiencia más fluida a la hora de pasar de Cloud Marketplace a tu producto.
A grandes rasgos, debes proporcionar una URL de registro para gestionar la creación de cuentas de usuario, que luego se gestionan en tu consola web. También debes proporcionar una URL para que los usuarios puedan iniciar sesión. También puedes integrar el inicio de sesión único (SSO).
Usar Producer Portal para integrar el frontend de tu aplicación
Para acceder a toda la información que necesitas para integrar el frontend de tu aplicación con Cloud Marketplace desde una sola ubicación, puedes usar la sección Integración del frontend de Producer Portal.
El enlace directo de Producer Portal es el siguiente:
https://console.cloud.google.com/producer-portal?project=YOUR_PROJECT_ID
Para acceder a la sección Integración de frontend, sigue estos pasos:
Selecciona el nombre de tu producto en la lista de productos.
En la página Visión general del producto, ve a la sección Integración técnica y haz clic en Integración de frontend.
Añade tu URL de registro
Cuando los usuarios compren tu producto en Cloud Marketplace, debes crear una cuenta para ellos en tu producto. Para ello, debe crear una página de registro para configurar y aprobar las cuentas de los usuarios en su sistema. Puedes configurar la página como una página de registro en la que los usuarios se registren para obtener una cuenta en tu sistema o como una página que apruebe las cuentas automáticamente.
Una vez que hayas creado la página de registro, añádela en Producer Portal:
Selecciona el nombre de tu producto en la lista de productos.
En la página Visión general del producto, ve a la sección Integración técnica y haz clic en Integración de frontend.
Introduzca la URL de su página de registro en el campo URL de registro.
Verificar la información de registro del usuario
Si un usuario aún no ha creado una cuenta en tu sistema, debe hacer clic en el botón Registrarse con YOUR_COMPANY_NAME
en Cloud Marketplace. Cuando hacen clic en el botón, Google Cloud envía una solicitud
HTTP POST
a tu página de registro con un
JSON Web Token (JWT) en el parámetro
x-gcp-marketplace-token
. El JWT contiene el ID de la cuenta de aprovisionamiento del usuario, que lo identifica como Google Cloud usuario, y un ID ofuscado, que representa su ID de cuenta de Google. Debes usar tanto el ID de la cuenta de aprovisionamiento como el ID ofuscado para vincular la cuenta de Google del usuario a su cuenta en tu sistema.
Después de verificar el JWT, tu página de registro debe enviar una solicitud de aprobación de cuenta a la API Partner Procurement, que se describe en los pasos de integración del backend.
Para obtener información detallada sobre la carga útil del JWT y cómo verificarla, consulta la sección Verificar el JWT que aparece más abajo.
Si no tienes experiencia con los JWTs, consulta la introducción a los JWTs.
Añade la URL de inicio de sesión
Debe especificar la URL de la página de inicio de sesión de su aplicación.
Para introducir la URL de la página de inicio de sesión de tu aplicación en el Portal para productores, sigue estos pasos:
Selecciona el nombre de tu producto en la lista de productos.
En la página Visión general del producto, ve a la sección Integración técnica y haz clic en Integración de frontend.
Introduce la URL de la página de inicio de sesión de tu aplicación en el campo URL de inicio de sesión.
(Opcional) Habilitar el inicio de sesión único (SSO) para tus clientes
Para habilitar el SSO en Producer Portal, sigue estos pasos:
Selecciona el nombre de tu producto en la lista de productos.
En la página Visión general del producto, ve a la sección Integración técnica y haz clic en Integración de frontend.
En ¿Quieres habilitar el inicio de sesión único (SSO)?, selecciona Sí.
Verificar la información de inicio de sesión con SSO de tus clientes
Cuando los clientes inician sesión en tu aplicación mediante SSO, Google Cloud envía una solicitud HTTP POST
a la página de inicio de sesión de tu aplicación con un JSON Web Token (JWT) con el mismo formato que el JWT enviado cuando los usuarios se registran por primera vez en tu aplicación.
Para obtener información detallada sobre la carga útil del JWT y cómo verificarla, consulta la sección Verificar el JWT que aparece más abajo.
Verificar el JWT
Algunos procesos, como registrar un nuevo cliente o iniciar sesión con SSO, implican enviarte una solicitud HTTP POST
con un JSON Web Token (JWT) que puede que tengas que verificar.
En la siguiente tabla se indica lo siguiente:
- Eventos que implican el envío de una solicitud HTTP con un JWT.
- El tipo de solicitud HTTP implicada.
- Indica si debes verificar el JWT o no.
Evento | Tipo de solicitud HTTP | Se requiere verificación de JWT |
---|---|---|
Registrar a un nuevo cliente |
POST |
Sí |
Inicio de sesión del cliente sin SSO |
GET |
No |
Inicio de sesión de clientes con SSO |
POST |
Sí |
Carga útil del JWT
La carga útil del JWT tiene el siguiente formato:
Encabezado
{ "alg": "RS256", "kid": "KEY_ID" }
Donde:
alg
siempre esRS256
.kid
indica el ID de clave que se ha usado para proteger el JWT. Usa el ID de la clave para buscar la clave del objeto JSON en el atributoiss
de la carga útil.
Carga útil
{ "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 } }
Donde:
sub
es el ID de la cuenta de Google del usuario. Debes usar este ID para vincular la cuenta de Google del usuario con su cuenta en tu sistema.iss
identifica al remitente del JWT. La URL de los enlaces de reclamación deiss
lleva a una clave pública de Google.exp
indica cuándo caduca el token y se establece en 5 minutos después de que se envíe el token.aud
es el dominio que aloja su producto, comoexample.com
.roles
es una matriz de cadenas que representa los roles del usuario. Puede ser una de las siguientes opciones:account_admin
, lo que indica que el usuario es Administrador de cuenta de facturación (Administrador de pedidos) de la cuenta de facturación que compró el producto.project_editor
, que indica que el usuario es editor (gestor de derechos), pero no administrador de facturación, del proyecto de esa cuenta de facturación.
user_identity
es el ID de GAIA ofuscado del usuario, que se puede usar para iniciar OpenID Connect.
Carga útil de varios pedidos del mismo producto
Si has habilitado varios pedidos del mismo producto, la carga útil incluye un objeto orders
adicional. Esto incluye el ID de pedido único correspondiente al ID de derecho de cada pedido. Asegúrate de que la página de inicio de sesión de tu aplicación pueda responder a este nuevo campo orders
.
{ "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] } }
Donde:
ORDER_ID
es una lista de IDs de pedido únicos de cada ID de derecho que indica las diferentes ofertas del mismo producto. Este campo solo está disponible si se han habilitado varios pedidos del mismo producto.
Para obtener más información sobre cómo activar varios pedidos del mismo producto, consulta el artículo Activar varios pedidos del mismo producto.
Verificar la carga útil
Cuando recibas el JWT, debes verificar lo siguiente:
Verifica que la firma JWT utilice la clave pública de Google.
Verifica que el JWT no haya caducado comprobando la reclamación
exp
.Verifica que el
aud
sea el dominio correcto de tu producto.Verifica que la reclamación de
iss
seahttps://www.googleapis.com/robot/v1/metadata/x509/cloud-commerce-partner@system.gserviceaccount.com
.Comprueba que
sub
no esté vacío.
Iniciar el inicio de sesión de Google con login_hint
Si quieres que tus usuarios completen un flujo de consentimiento de OAuth 2.0 con tu sitio, puedes usar la información de identidad de la carga útil para inicializar ese flujo en la cuenta de Google que estaban usando para Google Cloud antes de la redirección. Para ello, debes proporcionar el user_identity
incluido en el JWT como login_hint
.
Para obtener más información, consulta la documentación de OAuth 2.0 de Google.
Una vez que el usuario haya completado el flujo de OAuth 2.0 con tu sitio, debes verificar que se trata del usuario que esperabas que completara el flujo de OAuth. Para ello, debes usar el token de acceso de OAuth 2.0 para llamar a la API UserInfo de Google y obtener la información básica del usuario. Devuelve un ID que debe coincidir con el campo
user_identity
del JWT.
Crear cuentas de servicio para tus clientes
Si tu producto requiere una cuenta de servicio, puedes colaborar con un ingeniero de partners para hacer lo siguiente:
- Proporcionar cuentas de servicio a tus clientes.
- Configura una página de gestión de cuentas de servicio para que tus clientes puedan conceder los roles de Gestión de Identidades y Accesos (IAM) necesarios a las cuentas de servicio.
Debes proporcionar el enlace a esta página de cuenta de servicio a tus clientes, normalmente a través de la consola de gestión de tu producto.
Aprovisionar las cuentas de servicio
Para aprovisionar las cuentas de servicio, ponte en contacto con tu ingeniero de partners e incluye la siguiente información:
Nombre del servicio: es un ID de producto único que diferencia su producto de otros. Te recomendamos que uses el nombre del servicio que creaste cuando incorporaste tu producto.
ID del proyecto: el ID del proyecto en el que creas las cuentas de servicio que acceden a los recursos de tus clientes. Debes crear todas las cuentas de servicio que utilice tu producto en un solo proyecto.
Roles y motivos de gestión de identidades y accesos: los roles de gestión de identidades y accesos necesarios para las cuentas de servicio y el motivo por el que son necesarios. Esta información se comparte con tu cliente y puede influir en si te concede acceso a la cuenta de servicio.
Si quieres que tu cliente vuelva a tu sitio después de conceder acceso a la cuenta de servicio, envía el nombre de dominio de tu consola al ingeniero de tu partner. Puede enviar varios nombres de dominio, incluidos subdominios, como staging.example.com
.
Integrar la página de gestión de cuentas de servicio en la consola de tu producto
El ingeniero del partner crea una página de gestión de cuentas de servicio para que tus clientes puedan conceder acceso a las cuentas de servicio. A continuación, vincula la página desde tu consola.
Cuando el ingeniero de partners te avise de que la página de gestión de cuentas de servicio está lista, añade parámetros a la URL y, a continuación, enlaza la página desde tu consola.
Debe añadir dos parámetros a la URL:
service-name
: es el nombre del servicio que has proporcionado a tu ingeniero de partner.service-account-email
: esta es la dirección de correo de la cuenta de servicio que has creado para tu cliente. Cada cliente tiene una cuenta de servicio única.
En el ejemplo siguiente se muestra una URL con los parámetros necesarios:
https://console.cloud.google.com/marketplace-saas/service-account/service-name/service-account-email
Puede añadir parámetros adicionales en función de las necesidades de sus clientes. Por ejemplo:
https://console.google.com/marketplace-saas/service-account/service-name/service-account-email;single=true;redirect=https%3A%2F%2Fexample.com
Los parámetros de la URL indican que tu producto requiere acceso a un solo proyectoGoogle Cloud y que el cliente puede volver a tu consola.
Lista de parámetros de URL
A continuación, se muestra una lista de los parámetros de URL que puede enviar a la página de gestión de cuentas de servicio:
Parámetro | Descripción |
---|---|
service-name | Este campo es obligatorio. Este es el nombre del servicio que has proporcionado a tu ingeniero de partners. |
service-account-email | Este campo es obligatorio. Esta es la dirección de correo de la cuenta de servicio que has creado para tu cliente. |
single | Si es true, indica que su producto requiere acceso a un solo proyecto. |
hints=project-id-1 | Define el proyecto al que quieres que acceda la cuenta de servicio. Usa comas para separar los proyectos. |
filter=role1 | Limita los roles concedidos a la cuenta de servicio a un subconjunto de los roles que has proporcionado a tu ingeniero de partners. Excluya el roles/ al usar el filtro. |
redirect | Proporciona un enlace para que el cliente vuelva a tu consola de gestión. El nombre de dominio debe registrarse con tu ingeniero de partners para usar este parámetro. |