Configura la autenticación para las ediciones locales o en la nube del SDK de ABAP para Google Cloud

En este documento, se describe cómo autenticar en Google Cloud desde las ediciones locales o en la nube del SDK de ABAP para Google Cloud.

Las aplicaciones desarrolladas con el SDK de ABAP para Google Cloud requieren autenticación para conectarse a las APIs de Google Cloud. El SDK habilita el uso de las prácticas recomendadas de Google Cloud para la autenticación.

Para la autenticación y autorización a fin de acceder a las APIs de Google Cloud, el SDK usa tokens principalmente. Además, el SDK también admite claves de API para autenticarse en las APIs de Google Cloud que usan claves de API.

Según las APIs de Google Cloud a las que necesites acceder, el entorno en el que se aloja tu sistema SAP y los requisitos de seguridad de tu sistema SAP, puedes elegir un tipo de autenticación adecuado. En la siguiente tabla, se resumen los tipos de autenticación compatibles según la ubicación de hosting de tu sistema SAP:

Ubicación del sistema SAP Tipo de autenticación Instrucciones
SAP RISE, sin importar dónde se alojen los servidores Token web JSON (JWT) Autentica mediante tokens web JSON (JWT)
Sistema SAP alojado en la VM de Compute Engine Tokens de acceso Autentica mediante tokens de acceso
Sistema SAP alojado fuera de Google Cloud Token web JSON (JWT) Autentica mediante tokens web JSON (JWT)
Tokens de acceso Autentica mediante tokens mediante la Federación de Workload Identity

Autenticación en las APIs de Google Cloud mediante claves de API

Solo algunas APIs de Google Cloud usan claves de API para la autenticación, por ejemplo, Google Maps Platform. Revisa la documentación de autenticación del servicio o la API que deseas usar para determinar si es compatible con las claves de API. Sin importar dónde se aloje tu sistema SAP, puedes usar claves de API para la autenticación, siempre y cuando la API que quieras usar admita claves de API.

Para autenticarte en la API de Google Cloud mediante claves de API, usa uno de los siguientes métodos:

Autenticación de las APIs de Google Workspace con credenciales de cliente de OAuth 2.0

Para acceder a las APIs de Google Workspace, puedes usar las credenciales de cliente de OAuth 2.0. Las credenciales de cliente de OAuth 2.0 te permiten recuperar un token en el contexto de un usuario final, como un token necesario para acceder a Hojas de cálculo de Google. Sin importar dónde se aloje tu sistema SAP, puedes usar las credenciales de cliente de OAuth 2.0 para la autenticación en las APIs de Google Workspace, siempre que el sistema admita OAuth 2.0.

Para obtener información sobre cómo configurar la autenticación para las APIs de Google Workspace, consulta Autentícate en las APIs de Google Workspace con credenciales de cliente de OAuth 2.0.

Autentica mediante tokens de acceso

En esta sección, se muestra cómo configurar la autenticación para acceder a las APIs de Google Cloud mediante tokens cuando el sistema SAP se aloja en una instancia de VM de Compute Engine.

  1. En la consola de Google Cloud, habilita la API de Service Account Credentials de IAM para tu proyecto de Google Cloud que requiere autenticación. Junto con la API de credenciales de la cuenta de servicio de IAM, debes habilitar cualquier otras APIs compatibles a la que planeas acceder mediante el SDK.

    Ir a la biblioteca de API

    Para obtener información sobre cómo habilitar las APIs de Google Cloud, consulta Habilita las API.

  2. En la consola de Google Cloud, crea una cuenta de servicio de IAM para la instancia de VM del host.

    Ir a Cuentas de servicio

    Para obtener información sobre cómo crear una cuenta de servicio, consulta Crea una cuenta de servicio.

  3. Otorga el rol Service Account Token Creator a la cuenta de servicio. Para obtener instrucciones, consulta Otorga un solo rol.

  4. Conecta la cuenta de servicio a la instancia de VM en la que se ejecuta la carga de trabajo de SAP. Además, configura el permiso de acceso de la VM en cloud-platform.

    • Si especificas la cuenta de servicio con la consola de Google Cloud, el permiso de acceso de la VM se establece automáticamente en el permiso cloud-platform.
    • Si especificas la cuenta de servicio con Google Cloud CLI o la API de Compute Engine, debes configurar el permiso de acceso a la API en Allow full access to all Cloud APIs.

      Para obtener instrucciones, consulta Cómo crear una VM y conecta la cuenta de servicio.

      Después de actualizar el permiso, reinicia la VM. Si tienes varias instancias de VM para la misma instalación de SAP, debes completar este paso en todas ellas.

  5. En la consola de Google Cloud, crea una cuenta de servicio de IAM dedicada para acceder a las APIs de Google Cloud.

    Ir a Cuentas de servicio

    Para obtener instrucciones, consulta Cómo crear una cuenta de servicio.

  6. Otorga a la cuenta de servicio los roles de IAM necesarios para acceder a la funcionalidad de la API. Para comprender el requisito de rol para las APIs de Google Cloud, consulta la documentación de la API individual y sigue el principio de privilegio mínimo. Para obtener más detalles sobre los roles predefinidos específicos de la API, consulta Referencia de los roles básicos y predefinidos de IAM.

  7. Si creaste la cuenta de servicio en un proyecto diferente al del proyecto que contiene las APIs de Google Cloud, debes realizar pasos adicionales para la configuración de la cuenta de servicio. Para obtener más información, consulta Configura cuentas de servicio en un entorno entre proyectos.

  8. En el sistema SAP, configura la clave de cliente:

    1. En la GUI de SAP, ejecuta el código de transacción /GOOG/SDK_IMG.

      Como alternativa, ejecuta el código de transacción SPRO y, luego, haz clic en IMG de referencia de SAP.

    2. Haz clic en el SDK de ABAP para Google Cloud > Configuración básica > Configurar clave de cliente.

    3. Haz clic en Entradas nuevas.

    4. Ingresa los valores para los siguientes campos:

      Campo Descripción
      Nombre de la clave de Google Cloud Especifica un nombre de la configuración de la clave de cliente. Por ejemplo, TEST_PUBSUB.
      Nombre de la cuenta de servicio de Google Cloud

      Especifica el nombre de la cuenta de servicio a la que le otorgaste permisos para acceder a las APIs de Google Cloud. Por ejemplo, sap-example-svc-acct@example-project-123456.iam.gserviceaccount.com.

      Si la VM del host de tu sistema SAP que contiene el SDK está en un proyecto diferente al que tiene habilitadas las APIs de Google Cloud, especifica la cuenta de servicio que se usa para acceder a las APIs de Google Cloud. Para obtener más información, consulta Configura cuentas de servicio en un entorno entre proyectos.

      Permiso de Google Cloud Especifica el permiso de acceso a la API, https://www.googleapis.com/auth/cloud-platform.
      Identificador de proyecto de Google Cloud Especifica el ID del proyecto de Google Cloud que contiene las APIs de destino.
      Nombre del comando Deja este campo en blanco.
      Clase de autorización Especifica la clase de autorización, /GOOG/CL_AUTH_GOOGLE.
      Almacenamiento en caché de tokens

      La marca que determina si los tokens de acceso recuperados de Google Cloud se almacenan en caché.

      Te recomendamos que habilites el almacenamiento en caché de tokens después de que termines de configurar y probar tu conexión a Google Cloud. Para obtener más información sobre el almacenamiento en caché de tokens, consulta Habilita el almacenamiento en caché de tokens.

      Segundos de actualización de los tokens La cantidad de tiempo en segundos antes de que caduque un token de acceso y se deba actualizar. El valor predeterminado es 3500.
      Parámetro de autorización 1 Deja este campo en blanco.
      Parámetro de autorización 2 Deja este campo en blanco.
    5. Guarda la entrada nueva.

  9. En el sistema SAP, crea nuevos destinos de RFC para las APIs que planeas consumir con el SDK de ABAP para Google Cloud.

    Para obtener información sobre cómo crear destinos de RFC, consulta Destinos de RFC.

  10. En el sistema SAP, configura la tabla de asignación de servicios para la API de IAM y otras APIs que planeas consumir con el SDK de ABAP para Google Cloud.

    1. En la GUI de SAP, ejecuta el código de transacción /GOOG/SDK_IMG.

      Como alternativa, ejecuta el código de transacción SPRO y, luego, haz clic en IMG de referencia de SAP.

    2. Haz clic en SDK de ABAP para Google Cloud > Configuración básica > Configurar asignación de servicios.

    3. Haz clic en Entradas nuevas.

    4. Especifica los destinos de RFC para la API de IAM y otras APIs, por ejemplo, Pub/Sub API v1.

      Nombre Nombre del servicio Destino de RFC
      Nombre de la clave de Google Cloud iamcredentials.googleapis.com ZGOOG_IAMCREDENTIALS
      Nombre de la clave de Google Cloud pubsub:v1 ZGOOG_PUBSUB_V1
    5. Guarda la entrada nueva.

  11. En el sistema SAP, valida la configuración de autenticación. Para obtener más información, consulta Valida la configuración de autenticación.

Configura cuentas de servicio en un entorno entre proyectos

La VM host del sistema SAP, que contiene el SDK, puede estar en un proyecto de Google Cloud diferente al que tenga las APIs de Google Cloud habilitadas. En este caso, debes configurar cuentas de servicio con los roles de IAM necesarios para que el SDK pueda acceder a las APIs desde el proyecto diferente.

En la siguiente tabla, se muestra un ejemplo de configuración de una cuenta de servicio para el acceso a la API entre proyectos.

Entorno VM host de SAP APIs de Google Cloud
Proyecto de Google Cloud project-sap-host project-google-apis
Cuenta de servicio asignada a la VM host de SAP sa-sap-host@project-sap-host.iam.gserviceaccount.com N/A
Cuenta de servicio para acceder a las APIs de Google Cloud sa-google-apis@project-sap-host.iam.gserviceaccount.com N/A
Roles de IAM para la cuenta de servicio En el proyecto project-sap-host, otorga el rol de creador de tokens de cuenta de servicio sa-sap-host@project-sap-host.iam.gserviceaccount.com de la cuenta de servicio. En el proyecto project-google-apis, agrega la cuenta de servicio sa-google-apis@project-sap-host.iam.gserviceaccount.com como principio y otorga a la cuenta de servicio los roles adecuados para conectarse a las API de Google Cloud.

Para configurar las cuentas de servicio, sigue estos pasos:

  1. En el proyecto de Google Cloud que contiene la VM del host de SAP, otorga a la cuenta de servicio de la VM del host de SAP el rol Service Account Token Creator. Para obtener más información sobre los pasos, consulta Otorga un solo rol.
  2. En el proyecto de Google Cloud que contiene la VM host del SAP, crea una cuenta de servicio. Toma nota del nombre de la cuenta de servicio. Debes especificar este nombre cuando agregas la cuenta de servicio como principio al otro proyecto que contiene las APIs de Google Cloud.
  3. En el otro proyecto que contiene las API de Google Cloud, agrega la cuenta de servicio como principio y otorga los roles adecuados para conectarte a las API de Google Cloud. Para agregar una cuenta de servicio al proyecto de Google Cloud que contiene las API de Google Cloud, realiza los siguientes pasos:

    1. En la consola de Google Cloud, ve a la página de permisos de IAM.

      Ir a Permisos de IAM

    2. Confirma que el nombre del proyecto que contiene las APIs de Google Cloud de destino se muestra cerca de la parte superior de la página. Por ejemplo:

      Permisos del proyecto "PROJECT_NAME"

      Si no es así, cambia de proyecto.

    3. En la página de IAM, haz clic en Otorgar acceso. Se abre el cuadro de diálogo Otorgar acceso a “PROJECT_NAME.

    4. En el campo Principales nuevas, especifica el nombre de la cuenta de servicio.

    5. En el campo Seleccionar un rol, especifica un rol relevante. Por ejemplo, en Pub/Sub, para modificar los temas y las suscripciones y acceder para publicar y consumir mensajes, puedes especificar el rol de editor de Pub/Sub (roles/pubsub.editor).

      Para obtener más detalles sobre los roles predefinidos específicos de la API, consulta Referencia de los roles básicos y predefinidos de IAM.

    6. Agrega roles adicionales según sea necesario para el uso de la API. Implementa las prácticas recomendadas de Google mediante la aplicación del principio de privilegio mínimo.

    7. Haz clic en Guardar. La cuenta de servicio aparece en la lista de principales del proyecto en la página IAM.

Autentica mediante tokens web JSON (JWT)

En esta sección, se muestra cómo configurar la autenticación para acceder a las APIs de Google Cloud mediante un token cuando tu sistema SAP se ejecuta en un host local, en otro proveedor de servicios en la nube, en otro entorno fuera de Google Cloud, o administrada por SAP a través del programa SAP RISE.

Para la autenticación en Google Cloud, usa tokens web JSON (JWT) firmados por Google Cloud para obtener tokens de acceso de Google Cloud.

Los pasos de la configuración de alto nivel son los siguientes:

Crea una cuenta de servicio para la recuperación de tokens basados en JWT

En la autenticación basada en JWT en Google Cloud, el SDK de ABAP para Google Cloud necesita una cuenta de servicio de IAM.

Crea una cuenta de servicio

En la consola de Google Cloud, crea una cuenta de servicio de IAM para la recuperación de tokens basados en JWT y otorga a la cuenta de servicio el Creador de tokens de cuenta de servicio.

Ir a Cuentas de servicio

Para obtener información sobre cómo crear una cuenta de servicio, consulta Crea una cuenta de servicio.

Crea una clave de cuenta de servicio

Debes crear una clave de cuenta de servicio P12 para la cuenta de servicio que se usa en la recuperación de tokens basados en JWT.

Para crear una clave cuenta de servicio, completa los siguientes pasos:

  1. En la consola de Google Cloud, ve a la página Cuentas de servicio de IAM y administración.

    Ir a Cuentas de servicio

  2. Selecciona tu proyecto de Google Cloud.

  3. Haz clic en la dirección de correo electrónico de la cuenta de servicio que creaste para la recuperación de tokens basados en JWT en la sección anterior, Crea una cuenta de servicio.

  4. En el nombre de la cuenta de servicio, haz clic en la pestaña Claves.

  5. Haz clic en el menú desplegable Agregar clave y, luego, selecciona Crear clave nueva para crear una clave de cuenta de servicio.

  6. Acepta P12 como el tipo de clave y haz clic en Crear.

    Se descarga una clave privada en la computadora.

  7. Toma nota de la contraseña del archivo de claves privadas, notasecret.

    Proporciona la clave privada y la contraseña a tu administrador de SAP para importar la clave privada a STRUST, como se describe en Importa la clave de la cuenta de servicio a STRUST.

Especifica la cuenta de servicio para la firma de JWT

Si creaste la cuenta de servicio para la firma de JWT en un proyecto diferente del que contiene las APIs de Google Cloud, debes especificar la cuenta de servicio en el sistema host de SAP.

Si creaste la cuenta de servicio en el mismo proyecto que contiene las APIs de Google Cloud, puedes omitir este paso.

Para especificar la cuenta de servicio de la firma de JWT, sigue estos pasos:

  1. En la GUI de SAP, ejecuta el código de transacción /GOOG/SDK_IMG.

    Como alternativa, ejecuta el código de transacción SPRO y, luego, haz clic en IMG de referencia de SAP.

  2. Haz clic en SDK de ABAP para Google Cloud > Configuración básica > Configurar parámetros.

  3. Haz clic en Entradas nuevas.

  4. En el campo Nombre del parámetro, ingresa JWT_SERVC_ACCT. La descripción del parámetro se propaga automáticamente.

  5. En el campo Valor del parámetro, ingresa el nombre de la cuenta de servicio.

  6. Guarda la entrada nueva.

Establece la configuración de seguridad para Google Cloud en el sistema de host de SAP

Para habilitar la firma de JWT para la cuenta de servicio que creaste para la recuperación de tokens basados en JWT, debes establecer la configuración de seguridad para Google Cloud en el sistema host de SAP.

Crea una nueva aplicación de almacenamiento y reenvío seguro (SSF)

Cada entrada de SSFAPPLIC te permite guardar una sola clave de cuenta de servicio. Para guardar claves de cuenta de servicio de varios proyectos, debes crear varias entradas SSFAPPLIC siguiendo los mismos pasos.

Para crear una nueva entrada en la tabla SSFAPPLIC, sigue estos pasos:

  1. En la GUI de SAP, ingresa el código de transacción SE16.
  2. En el campo Nombre de la tabla, ingresa SSFAPPLIC y crea una entrada nueva.
  3. En el campo APPLIC, ingresa un nombre para tu aplicación de SSF, como ZG_JWT.
  4. Selecciona todos los demás campos, excepto B_INCCERTS, B_DETACHED, B_ASKPWD y B_DISTRIB.
  5. En el campo DESCRIBIR, ingresa JWT Signature for GCP.
  6. Guarda la entrada nueva.

    Esta entrada se convierte en un nodo nuevo en la transacción STRUST, en la que importas la clave de la cuenta de servicio.

Habilita el nodo STRUST

Usa la transacción SSFA para habilitar el nodo STRUST para JWT Signature for GCP.

Para habilitar el nodo STRUST, realiza los siguientes pasos:

  1. En la GUI de SAP, ingresa el código de transacción SSFA.
  2. Haz clic en Entradas nuevas.
  3. En la lista desplegable Aplicación de SSF, selecciona JWT Signature for GCP. Esta es la entrada nueva que creaste en la tabla SSFAPPLIC.

    Los parámetros de SSF específicos de la aplicación se propagan de forma automática.

  4. Guarda la entrada nueva.

    Se habilita un nodo nuevo SSF JWT Signature for GCP en la transacción STRUST.

Importa la clave de la cuenta de servicio a STRUST

Para importar la clave de la cuenta de servicio a STRUST, realiza los siguientes pasos:

  1. En la GUI de SAP, ingresa el código de transacción STRUST.

    Verifica que el nodo nuevo en la transacción STRUST sea SSF JWT Signature for GCP.

  2. Importa el archivo de claves privadas:

    1. Selecciona PSE > Importar en la barra de menú.
    2. Según el sistema SAP, selecciona la clave privada adecuada:
      • SAP S/4HANA
        1. Selecciona la clave privada P12.
        2. Ingresa la contraseña del archivo notasecret y, luego, haz clic en Aceptar.
      • SAP ECC
        1. Selecciona la clave privada PSE. Debes convertir la clave privada P12 que descargaste antes en una clave privada PSE. Para obtener más información sobre cómo convertir una clave P12 en una clave PSE, consulta Convierte una clave P12 en clave PSE.
        2. Ingresa el PIN del archivo que creaste durante la conversión de clave privada de la clave P12 a la clave PSE y, luego, haz clic en Aceptar.
  3. Selecciona PSE > Guardar como.

  4. Selecciona Aplicación de SSF y, en el campo de entrada correspondiente, selecciona el nodo de aplicación de SSF nuevo que creaste en Crea una aplicación nueva de almacenamiento y reenvío de seguridad (SSF).

  5. Guarda la entrada nueva.

    La clave del servicio se adjunta al nodo de aplicación SSF JWT Signature for GCP de SSF.

Convierte la clave privada P12 en clave PSE

Si tu sistema SAP es SAP NetWeaver 7.0x (SAP ECC), entonces debes convertir la clave P12 en una clave PSE.

Para convertir la clave P12 en una clave PSE, sigue estos pasos:

  1. Ve a la ruta:

    /usr/sap/SID/SYS/exe/run/

    Reemplaza SID por el ID del sistema SAP.

  2. Ejecuta el siguiente comando después de reemplazar los marcadores de posición:

    sapgenpse import_p12 -p PSE_PATH_AND_FILE_NAME P12_PATH_AND_FILE_NAME.p12

    Reemplaza lo siguiente:

    • PSE_PATH_AND_FILE_NAME: especifica la ruta y el nombre del archivo PSE.
    • P12_PATH_AND_FILE_NAME: especifica la ruta y el nombre para el archivo de claves P12.
  3. Ingresa la contraseña del archivo de claves privadas P12, notasecret.

  4. Crea un PIN nuevo para la clave privada PSE y vuelve a ingresarlo.

  5. Toma nota del PIN, ya que debes proporcionarlo cuando importes el archivo de claves privadas de PSE a STRUST.

Para obtener información de SAP sobre cómo convertir una clave P12 en una clave PSE, consulta estos vínculos:

Habilita las APIs de Google Cloud

En la consola de Google Cloud, habilita la API de Service Account Credentials de IAM para tu proyecto de Google Cloud que requiere autenticación. Junto con la API de credenciales de la cuenta de servicio de IAM, debes habilitar cualquier otras APIs compatibles a la que planeas acceder mediante el SDK.

Ir a la biblioteca de API

Para obtener información sobre cómo habilitar las APIs de Google Cloud, consulta Habilita las API.

Crea una cuenta de servicio para obtener autorización a fin de acceder a las APIs de Google Cloud

Para la autenticación y autorización a fin de acceder a las APIs de Google Cloud, el SDK de ABAP para Google Cloud necesita una cuenta de servicio de IAM.

Crea una cuenta de servicio

En la consola de Google Cloud, crea una cuenta de servicio de IAM. Esta cuenta de servicio debe ser una principal en el proyecto de Google Cloud que contiene las APIs de Google Cloud que planeas consumir mediante el SDK. Si creas la cuenta de servicio en el mismo proyecto que contiene las APIs de Google Cloud, la cuenta de servicio se agrega como principal al proyecto de forma automática.

Si creas la cuenta de servicio en un proyecto que no sea el en el que están habilitadas las APIs de Google Cloud, debes agregar la cuenta de servicio a ese proyecto en un paso adicional.

  1. En la consola de Google Cloud, crea una cuenta de servicio de IAM para la autenticación y autorización a fin de acceder a las APIs de Google Cloud.

    Ir a Cuentas de servicio

    Para obtener información sobre cómo crear una cuenta de servicio, consulta Crea una cuenta de servicio.

  2. En la consola de Google Cloud, otorga a la cuenta de servicio los roles de IAM necesarios para acceder a la funcionalidad de la API. Para comprender el requisito de rol para las APIs de Google Cloud, consulta la documentación de la API individual y sigue el principio de privilegio mínimo. Para obtener más detalles sobre los roles predefinidos específicos de la API, consulta Referencia de los roles básicos y predefinidos de IAM.

  3. Si creaste la cuenta de servicio en un proyecto diferente al del proyecto que contiene las APIs de Google Cloud que planeas consumir con el SDK, anota el nombre de la cuenta de servicio. Debes especificar el nombre cuando agregas la cuenta de servicio a ese proyecto. Para obtener más información, consulta Agrega la cuenta de servicio al proyecto de Google Cloud.

Agrega la cuenta de servicio al proyecto de Google Cloud

Si creaste la cuenta de servicio del SDK de ABAP para Google Cloud en un proyecto que no es el que contiene las APIs de Google Cloud que planeas consumir con el SDK, debes agregar el servicio al proyecto de Google Cloud que contiene las APIs de Google Cloud.

Si creaste la cuenta de servicio en el mismo proyecto que contiene las APIs de Google Cloud, puedes omitir este paso.

Para agregar una cuenta de servicio existente al proyecto de Google Cloud que contiene las APIs de Google Cloud, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página de permisos de IAM.

    Ir a Permisos de IAM

  2. Confirma que el nombre del proyecto que contiene las APIs de Google Cloud de destino se muestra cerca de la parte superior de la página. Por ejemplo:

    Permisos del proyecto "PROJECT_NAME"

    Si no es así, cambia de proyecto.

  3. En la página de IAM, haz clic en Otorgar acceso. Se abre el cuadro de diálogo Otorgar acceso a “PROJECT_NAME.

  4. En el diálogo Otorga acceso a “PROJECT_NAME, sigue estos pasos:

    1. En el campo Principales nuevas, especifica el nombre de la cuenta de servicio.
    2. En el campo Seleccionar un rol, especifica un rol relevante. Por ejemplo, en Pub/Sub, para modificar temas y suscripciones y acceso a fin de publicar y consumir mensajes, puedes especificar el rol de editor de Pub/Sub (roles/pubsub.editor).

      Para obtener más detalles sobre los roles predefinidos específicos de la API, consulta Referencia de los roles básicos y predefinidos de IAM.

    3. Agrega roles adicionales según sea necesario para el uso de la API. Implementa las prácticas recomendadas de Google mediante la aplicación del principio de privilegio mínimo.

    4. Haz clic en Guardar. La cuenta de servicio aparece en la lista de principales del proyecto en la página IAM.

La cuenta de servicio ahora se puede usar para acceder a las APIs de Google Cloud en este proyecto.

Configura la conexión HTTPS

El servidor de aplicaciones SAP es necesario para conectarse a las APIs de Google Cloud a través de HTTPS.

En el host de SAP, confirma que las reglas o los proxies de firewall estén configurados para permitir el tráfico de salida del puerto HTTPS a las APIs de Google Cloud requeridas.

En particular, el sistema SAP debe poder acceder a los siguientes extremos de la API:

  • https://iamcredentials.googleapis.com
  • Extremos de API para las APIs que quieres consumir mediante el SDK.

Crea configuraciones de SAP

Para la autenticación basada en JWT, crea las opciones de configuración de SAP necesarias.

Especifica la configuración de acceso en la tabla de claves del cliente

Para especificar la configuración de acceso, sigue estos pasos:

  1. En la GUI de SAP, ejecuta el código de transacción /GOOG/SDK_IMG.

    Como alternativa, ejecuta el código de transacción SPRO y, luego, haz clic en IMG de referencia de SAP.

  2. Haz clic en el SDK de ABAP para Google Cloud > Configuración básica > Configurar clave de cliente.

  3. Haz clic en Entradas nuevas.

  4. Ingresa los valores para los siguientes campos:

    Campo Descripción
    Nombre de la clave de Google Cloud Especifica un nombre de la configuración de la clave de cliente.
    Nombre de la cuenta de servicio de Google Cloud

    Especifica el nombre de la cuenta de servicio, en formato de dirección de correo electrónico, que se creó para el SDK de ABAP para Google Cloud en el paso Crea una cuenta de servicio. Por ejemplo: sap-example-svc-acct@example-project-123456.iam.gserviceaccount.com.

    Permiso de Google Cloud Especifica el permiso de acceso, https://www.googleapis.com/auth/cloud-platform.
    ID del proyecto Especifica el ID del proyecto de Google Cloud que contiene las APIs de destino.
    Nombre del comando Deja este campo en blanco.
    Clase de autorización Especifica la clase de autorización, /GOOG/CL_AUTH_JWT.
    Campo de autorización Deja este campo en blanco.
    Segundos de actualización de los tokens Deja este campo en blanco.
    Parámetro de autorización 1 Especifica el nombre de la aplicación SSF que creaste en la sección Crea una nueva aplicación de almacenamiento seguro y reenvío (SSF).
  5. Guarda la entrada nueva.

Crea nuevos destinos de RFC

Crea destinos de RFC para la API de IAM y otras APIs que planeas consumir con el SDK de ABAP para Google Cloud, por ejemplo, la API de Pub/Sub v1.

Nombre del destino de RFC Notas
ZGOOG_IAMCREDENTIALS Este destino de RFC se orienta a la API de IAM.
ZGOOG_OAUTH2_TOKEN Este destino de RFC se orienta al extremo de Google Cloud para la autenticación basada en tokens.
ZGOOG_PUBSUB_V1 Este destino de RFC se orienta a la API de Pub/Sub.

Para obtener información sobre cómo crear destinos de RFC, consulta Destinos de RFC.

Especifica destinos de RFC en la tabla de asignación de servicios

En la tabla de asignación de servicios, especifica los destinos de RFC para la API de IAM y otras APIs que planeas consumir con el SDK de ABAP para Google Cloud.

Para especificar los destinos de RFC, sigue estos pasos:

  1. En la GUI de SAP, ejecuta el código de transacción /GOOG/SDK_IMG.

    Como alternativa, ejecuta el código de transacción SPRO y, luego, haz clic en IMG de referencia de SAP.

  2. Haz clic en SDK de ABAP para Google Cloud > Configuración básica > Configurar asignación de servicios.

  3. Haz clic en Entradas nuevas.

  4. Especifica los destinos de RFC para la API de IAM y otras APIs, por ejemplo:

    Nombre Nombre del servicio Destino de RFC
    Nombre de la clave de Google Cloud iamcredentials:v1 ZGOOG_IAMCREDENTIALS
    Nombre de la clave de Google Cloud googleapis.com/oauth2 ZGOOG_OAUTH2_TOKEN
    Nombre de la clave de Google Cloud pubsub.googleapis.com ZGOOG_PUBSUB_V1
  5. Guarda la entrada nueva.

Autentica mediante tokens mediante la Federación de Workload Identity

Con la federación de Workload Identity, puedes otorgar a las cargas de trabajo de SAP locales o de múltiples nubes acceso a los recursos de Google Cloud sin usar una clave de cuenta de servicio. Puedes usar la federación de Workload Identity con Amazon Web Services (AWS) o con cualquier proveedor de identidad (IdP) que admita OpenID Connect (OIDC), como Microsoft Azure o SAML 2.0.

La federación Workload Identity sigue la especificación del intercambio de tokens de OAuth 2.0. Proporciona una credencial desde tu IdP al servicio de tokens de seguridad, que verifica la identidad en la credencial y, luego, muestra un token federado a cambio. Puedes usar este token para actuar como una cuenta de servicio y obtener un token de acceso de OAuth 2.0 de corta duración. El token de acceso de corta duración te permite llamar a cualquier API de Google Cloud a la que tenga acceso la cuenta de servicio.

Para la autenticación mediante tokens a través de la federación de Workload Identity, los pasos de configuración de alto nivel son los siguientes:

  1. Prepara el IdP externo
  2. En Google Cloud, configura la federación de Workload Identity.
  3. En Google Cloud, crea una cuenta de servicio.
  4. En Google Cloud, permite que la carga de trabajo externa actúe en nombre de la cuenta de servicio.
  5. En el SDK de ABAP para Google Cloud, implementa el código ABAP para recuperar tokens de seguridad de tu IdP.
  6. En el SDK de ABAP para Google Cloud, configura la clave del cliente.

No todos los productos de Google Cloud admiten la federación de Workload Identity. Antes de configurar la autenticación mediante la federación de Workload Identity, revisa la lista de productos compatibles y las limitaciones. Para obtener más información, consulta Federación de Workload Identity: productos admitidos y limitaciones.

Prepara el IdP externo

Debes preparar tu IdP para que tu carga de trabajo de SAP pueda obtener credenciales que se puedan intercambiar por un token de seguridad de Google OAuth 2.0.

Para preparar tu IdP externo, sigue los pasos según tu IdP:

Configura la federación de Workload Identity

En Google Cloud, configura el grupo y los proveedores de Workload Identity.

Configura un grupo de identidades, que es una entidad que te permite administrar identidades externas. También debes configurar un proveedor de grupo de Workload Identity, que es una entidad que describe una relación entre Google Cloud y tu IdP.

Para configurar la federación de Workload Identity, sigue los pasos según tu IdP externo:

Toma nota de lo siguiente:

  • Número de proyecto: el número de proyecto del proyecto de Google Cloud en el que creaste el grupo de Workload Identity.
  • ID del grupo: Un ID único que identifica el grupo de identidades para cargas de trabajo.
  • ID de proveedor: Un ID que identifica al proveedor de grupos de identidades para cargas de trabajo.

Los necesitarás para la configuración de la clave del cliente del SDK de ABAP.

Crear una cuenta de servicio

En la consola de Google Cloud, crea una cuenta de servicio de IAM dedicada para acceder a las APIs de Google Cloud. Esta cuenta de servicio debe ser una principal en el proyecto de Google Cloud que contiene las APIs de Google Cloud que planeas consumir mediante el SDK.

  1. En la consola de Google Cloud, habilita la API de credenciales de la cuenta de servicio de IAM, la API del servicio de tokens de seguridad y cualquier otra API compatible que planeas acceder mediante el SDK.

    Ir a la biblioteca de API

    Para obtener información sobre cómo habilitar las APIs de Google Cloud, consulta Habilita las API.

  2. Crea una cuenta de servicio que represente la carga de trabajo.

  3. Otorga a la cuenta de servicio los roles de IAM necesarios para acceder a la funcionalidad de la API. Para comprender el requisito de rol para las APIs de Google Cloud, consulta la documentación de la API individual y sigue el principio de privilegio mínimo. Para obtener más detalles sobre los roles predefinidos específicos de la API, consulta Referencia de los roles básicos y predefinidos de IAM.

Permite que la carga de trabajo externa actúe en nombre de la cuenta de servicio

Para permitir que la carga de trabajo externa actúe en nombre de la cuenta de servicio, sigue estos pasos según tu IdP externo:

Implementa el código ABAP para recuperar tokens de seguridad de tu IdP

El SDK de ABAP para Google Cloud proporciona una clase abstracta /GOOG/CL_AUTH_WIF_BASE, que tiene la lógica para recuperar los tokens de seguridad de OAuth 2.0 del servicio de tokens de seguridad y los tokens de acceso de OAuth 2.0 desde la API de credenciales de la cuenta de servicio de IAM.

Como desarrollador, debes crear una clase en el espacio de nombres que se herede de la clase abstracta /GOOG/CL_AUTH_WIF_BASE. Esta clase debe implementar el método GET_EXT_IDP_TOKEN y escribir la lógica para obtener el token de seguridad de tu IdP y propagar los siguientes campos:

  • CV_TOKEN: el token recuperado de tu IdP en el formato string.
  • CV_TOKEN_TYPE: el tipo de token de seguridad recuperado de tu IdP. Los tipos de tokens compatibles son los siguientes:
    • urn:ietf:params:oauth:token-type:jwt
    • urn:ietf:params:oauth:token-type:id_token
    • urn:ietf:params:aws:token-type:aws4_request
    • urn:ietf:params:oauth:token-type:access_token
    • urn:ietf:params:oauth:token-type:saml2

Luego, los valores propagados en CV_TOKEN y CV_TOKEN_TYPE se usan mediante métodos de la clase abstracta /GOOG/CL_AUTH_WIF_BASE para intercambiar y recuperar el token final de OAuth 2.0, que se usa en las llamadas a la API.

En el siguiente ejemplo, se muestran las implementaciones de muestra del método GET_EXT_IDP_TOKEN para otros proveedores de servicios en la nube, como AWS y Azure.

AWS

class ZCL_AUTH_WIF_AWS definition
  public
  inheriting from /GOOG/CL_AUTH_WIF_BASE
  final
  create public .

public section.

  types:
    BEGIN OF t_header_field,
      key type string,
      value TYPE string,
    END OF t_header_field .
  types:
    tt_header_field type STANDARD TABLE OF t_header_field WITH DEFAULT KEY .
  types:
    BEGIN OF t_token_request,
     url type string,
     method type string,
     headers type tt_header_field,
   END OF t_token_request .
protected section.

  methods GET_EXT_IDP_TOKEN
    redefinition .
private section.
ENDCLASS.

CLASS ZCL_AUTH_WIF_AWS IMPLEMENTATION.

METHOD get_ext_idp_token.
**********************************************************************
*  Copyright 2024 Google LLC                                         *
*                                                                    *
*  Licensed under the Apache License, Version 2.0 (the "License");   *
*  you may not use this file except in compliance with the License.  *
*  You may obtain a copy of the License at                           *
*      https://www.apache.org/licenses/LICENSE-2.0                   *
*  Unless required by applicable law or agreed to in writing,        *
*  software distributed under the License is distributed on an       *
*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,      *
*  either express or implied.                                        *
*  See the License for the specific language governing permissions   *
*  and limitations under the License.                                *
**********************************************************************

  DATA: ls_key       TYPE /goog/client_key.

  /goog/cl_utility=>get_client_key( EXPORTING iv_keyname    = iv_keyname
                                        IMPORTING es_client_key = ls_key ).

  DATA: lv_awsdate TYPE string.

  DATA: lv_date         TYPE dats,
        lv_time         TYPE tims,
        lv_timestamp    TYPE timestampl,
        lv_tz_utc       TYPE timezone VALUE 'UTC',
        lv_awsts        TYPE string,
        lv_timechar(32) TYPE c.

  GET TIME STAMP FIELD lv_timestamp.

  CONVERT TIME STAMP lv_timestamp TIME ZONE lv_tz_utc INTO DATE lv_date TIME lv_time.
  MOVE lv_timestamp TO lv_timechar.
  CONDENSE lv_timechar.

  lv_awsdate = lv_date(4) &&
               lv_date+4(2) &&
               lv_date+6(2) &&
               'T' &&
               lv_time(2) &&
               lv_time+2(2) &&
               lv_time+4(2) &&
               'Z'.

  TRANSLATE lv_awsdate TO UPPER CASE.

  DATA: lv_lf TYPE string.
  DATA: lv_secret_key TYPE string.
  DATA: lv_accesskey TYPE string.
  DATA: lv_datepart TYPE string.
  DATA: lv_service TYPE string.
  DATA: lv_method TYPE string.

  lv_lf = cl_abap_char_utilities=>newline.
  lv_accesskey = '<Populate AWS Access Key>'.
  lv_secret_key = '<Populate AWS Secret Access Key>'.
  lv_datepart = lv_awsdate(8).
  lv_service = 'sts'.
  lv_method = 'GET'.

  DATA: lv_canonical_query_params TYPE string.
  DATA: lv_host TYPE string.
  DATA: lv_region TYPE string.
  DATA: lv_canonical_resource_path TYPE string.

  lv_canonical_query_params = 'Action=GetCallerIdentity&Version=2011-06-15'.
  lv_host = 'sts.amazonaws.com'.
  lv_region = '<Populate your AWS Region>'.   "Example: 'us-east-1'
  lv_canonical_resource_path = '/'.

  DATA: lv_canonical_header_names TYPE string.
  DATA: lv_canonical_headers TYPE string.

  lv_canonical_header_names = 'host;x-amz-date'.
  lv_canonical_headers = 'host:' && lv_host && lv_lf && 'x-amz-date:' && lv_awsdate && lv_lf.

  DATA: lv_canonical_request TYPE string.

  CONCATENATE lv_method lv_lf
              lv_canonical_resource_path lv_lf
              lv_canonical_query_params lv_lf
              lv_canonical_headers lv_lf
              lv_canonical_header_names
              INTO lv_canonical_request.

  DATA: lv_canonical_request_hash TYPE string.

  TRY.
      cl_abap_message_digest=>calculate_hash_for_char(
       EXPORTING
         if_algorithm = 'SHA-256'
         if_data = lv_canonical_request
       IMPORTING
         ef_hashstring = lv_canonical_request_hash ).
    CATCH cx_abap_message_digest.
      "Handle error
      RETURN.
  ENDTRY.

  TRANSLATE lv_canonical_request_hash TO LOWER CASE.

  DATA: lv_algorithm TYPE string.

  lv_algorithm = 'AWS4-HMAC-SHA256'.

  DATA: lv_credential_scope TYPE string.

  CONCATENATE lv_datepart '/' lv_region '/' lv_service '/' 'aws4_request' INTO lv_credential_scope.

  DATA: lv_string_to_sign TYPE string.

  CONCATENATE lv_algorithm lv_lf
              lv_awsdate lv_lf
              lv_credential_scope lv_lf
              lv_canonical_request_hash
              INTO lv_string_to_sign.

  DATA: lv_awskey TYPE string.

  CONCATENATE 'AWS4' lv_secret_key INTO lv_awskey.

  DATA: lv_ksecret TYPE xstring.

  TRY.
      lv_ksecret = cl_abap_hmac=>string_to_xstring( lv_awskey ).
    CATCH cx_abap_message_digest .
      "Handle error
      RETURN.
  ENDTRY.

  DATA: lv_kdate  TYPE xstring.
  TRY.
      cl_abap_hmac=>calculate_hmac_for_char(
        EXPORTING
           if_algorithm = 'SHA256'
           if_key = lv_ksecret
           if_data = lv_datepart
        IMPORTING
           ef_hmacxstring = lv_kdate ).
    CATCH cx_abap_message_digest. "
      "Handle error
      RETURN.
  ENDTRY.

  DATA: lv_kregion TYPE xstring.
  TRY.
      cl_abap_hmac=>calculate_hmac_for_char(
        EXPORTING
           if_algorithm = 'SHA256'
           if_key = lv_kdate
           if_data = lv_region
        IMPORTING
             ef_hmacxstring = lv_kregion ).
    CATCH cx_abap_message_digest.
      "Handle error
      RETURN.
  ENDTRY.

  DATA: lv_kservice TYPE xstring.
  TRY.
      cl_abap_hmac=>calculate_hmac_for_char(
         EXPORTING
           if_algorithm = 'SHA256'
           if_key = lv_kregion
           if_data = lv_service
           IMPORTING
             ef_hmacxstring = lv_kservice ).
    CATCH cx_abap_message_digest.
      "Handle error
      RETURN.
  ENDTRY.

  DATA: lv_ksigningkey TYPE xstring.
  TRY.
      cl_abap_hmac=>calculate_hmac_for_char(
         EXPORTING
           if_algorithm = 'SHA256'
           if_key = lv_kservice
           if_data = 'aws4_request'
         IMPORTING
             ef_hmacxstring = lv_ksigningkey ).
    CATCH cx_abap_message_digest.
      "Handle error
      RETURN.
  ENDTRY.

  DATA: lv_stringtosign TYPE string.

  lv_stringtosign = 'AWS4-HMAC-SHA256' && lv_lf &&
                   lv_awsdate && lv_lf &&
                   lv_datepart && '/' &&
                   lv_region && '/' &&
                   lv_service && '/aws4_request' && lv_lf &&
                   lv_canonical_request_hash.

  DATA: lv_ssignature TYPE string.

  TRY.
      cl_abap_hmac=>calculate_hmac_for_char(
         EXPORTING
           if_algorithm = 'SHA256'
           if_key = lv_ksigningkey
           if_data = lv_stringtosign
         IMPORTING
           ef_hmacstring = lv_ssignature ).
    CATCH cx_abap_message_digest.
      "Handle error
      RETURN.
  ENDTRY.

  TRANSLATE lv_ssignature TO LOWER CASE.

  DATA: lv_authorization_header TYPE string.

  lv_authorization_header = 'AWS4-HMAC-SHA256 Credential=' &&
                            lv_accesskey && '/' &&
                            lv_credential_scope &&
                            ', SignedHeaders=' &&
                            lv_canonical_header_names &&
                            ', Signature=' &&
                            lv_ssignature.

  DATA: ls_token_request TYPE t_token_request.

  ls_token_request-url = 'https://sts.amazonaws.com?Action=GetCallerIdentity&Version=2011-06-15'.
  ls_token_request-method = 'POST'.

  DATA: ls_header_field TYPE t_header_field.
  ls_header_field-key = 'Authorization'.
  ls_header_field-value = lv_authorization_header.
  APPEND ls_header_field TO ls_token_request-headers.

  CLEAR: ls_header_field.
  ls_header_field-key = 'host'.
  ls_header_field-value = 'sts.amazonaws.com'.
  APPEND ls_header_field TO ls_token_request-headers.

  CLEAR: ls_header_field.
  ls_header_field-key = 'x-amz-date'.
  ls_header_field-value = lv_awsdate.
  APPEND ls_header_field TO ls_token_request-headers.

  CLEAR: ls_header_field.
  ls_header_field-key = 'x-goog-cloud-target-resource'.
  ls_header_field-value = '//iam.googleapis.com/projects/' &&
                               ls_key-project_id &&
                               '/locations/global/workloadIdentityPools/' &&
                               ls_key-auth_param1 &&
                               '/providers/' &&
                               ls_key-auth_param2.
  APPEND ls_header_field TO ls_token_request-headers.

  cv_token = /ui2/cl_json=>serialize(  ls_token_request ).
  cv_token_type = 'urn:ietf:params:aws:token-type:aws4_request'.

ENDMETHOD.
ENDCLASS.

Azure

class ZCL_AUTH_WIF_AZURE definition
  public
  inheriting from /GOOG/CL_AUTH_WIF_BASE
  final
  create public .

public section.
protected section.

  methods GET_EXT_IDP_TOKEN
    redefinition .
private section.
ENDCLASS.

CLASS ZCL_AUTH_WIF_AZURE IMPLEMENTATION.

  METHOD GET_EXT_IDP_TOKEN.
**********************************************************************
*  Copyright 2024 Google LLC                                         *
*                                                                    *
*  Licensed under the Apache License, Version 2.0 (the "License");   *
*  you may not use this file except in compliance with the License.  *
*  You may obtain a copy of the License at                           *
*      https://www.apache.org/licenses/LICENSE-2.0                   *
*  Unless required by applicable law or agreed to in writing,        *
*  software distributed under the License is distributed on an       *
*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,      *
*  either express or implied.                                        *
*  See the License for the specific language governing permissions   *
*  and limitations under the License.                                *
**********************************************************************

    TYPES:
      BEGIN OF t_azure_resp,
        access_token TYPE string,
      END OF t_azure_resp.

    DATA: lo_client TYPE REF TO if_http_client.

    DATA: lv_url type string.
    lv_url = 'http://169.254.169.254/metadata/identity/oauth2/token?resource=<APP_ID_URI>&api-version=2018-02-01'.
    "Replace <APP_ID_URI> with the value of Application ID URI of the application that you've configured for workload identity federation.

    cl_http_client=>create_by_url(
       EXPORTING
         url                        = lv_url
       IMPORTING
         client                     = lo_client
       EXCEPTIONS
         argument_not_found         = 1
         plugin_not_active          = 2
         internal_error             = 3
         pse_not_found              = 4
         pse_not_distrib            = 5
         pse_errors                 = 6
         oa2c_set_token_error       = 7
         oa2c_missing_authorization = 8
         oa2c_invalid_config        = 9
         oa2c_invalid_parameters    = 10
         oa2c_invalid_scope         = 11
         oa2c_invalid_grant         = 12
         OTHERS                     = 13 ).

    IF sy-subrc <> 0.
      RETURN.
    ENDIF.

    lo_client->request->set_method( 'GET' ).
    lo_client->request->set_header_field( name = 'Metadata' value = 'true' ).

    lo_client->send(
      EXCEPTIONS
        http_communication_failure = 1
        http_invalid_state         = 2
        http_processing_failed     = 3
        http_invalid_timeout       = 4
        OTHERS                     = 5 ).

    lo_client->propertytype_logon_popup = lo_client->co_disabled.

    lo_client->receive(
      EXCEPTIONS
      http_communication_failure = 1
      http_invalid_state         = 2
      http_processing_failed     = 3 ).

    DATA: lv_json TYPE string.

    lv_json = lo_client->response->get_cdata( ).

    DATA: ls_azure_resp TYPE t_azure_resp.

    /goog/cl_json=>deserialize(
      EXPORTING
        json             = lv_json
      CHANGING
        data             = ls_azure_resp ).
    cv_token = ls_azure_resp-access_token.
    cv_token_type = 'urn:ietf:params:oauth:token-type:jwt'.

  ENDMETHOD.
ENDCLASS.

Configura la clave de cliente

  1. En la GUI de SAP, ejecuta el código de transacción /GOOG/SDK_IMG.

    Como alternativa, ejecuta el código de transacción SPRO y, luego, haz clic en IMG de referencia de SAP.

  2. Haz clic en el SDK de ABAP para Google Cloud > Configuración básica > Configurar clave de cliente.
  3. Haz clic en Entradas nuevas.
  4. Ingresa los valores para los siguientes campos:

    Campo Descripción
    Nombre de la clave de Google Cloud Especifica un nombre de la configuración de la clave de cliente.
    Nombre de la cuenta de servicio de Google Cloud Deja este campo en blanco.
    Permiso de Google Cloud Deja este campo en blanco.
    Identificador de proyecto de Google Cloud Especifica el ID del proyecto de Google Cloud en el que creaste el grupo de Workload Identity.
    Nombre del comando Deja este campo en blanco.
    Clase de autorización Especifica la clase de autenticación, que contiene la implementación del método GET_EXT_IDP_TOKEN.
    Almacenamiento en caché de tokens Deja este campo en blanco.
    Segundos de actualización de los tokens Deja este campo en blanco.
    Parámetro de autorización 1 Especifica el ID del grupo de identidades de la carga de trabajo.
    Parámetro de autorización 2 Especifica el ID del proveedor de Workload Identity.
  5. Guarda la entrada.

Autenticación de las APIs de Google Workspace con credenciales de cliente de OAuth 2.0

Para autenticarte en las APIs de Google Workspace con credenciales de cliente de OAuth 2.0, debes completar la siguiente configuración en tu proyecto de Google Cloud y tu entorno de SAP:

Configuraciones de la consola de Google Cloud

Configuración de SAP Landscape

El SDK de ABAP para Google Cloud se envía con los siguientes componentes principales, que son necesarios para la autenticación basada en credenciales de cliente de OAuth 2.0:

  • Tipo de proveedor de servicios de OAuth 2.0 /GOOG/ABAP_SDK que especificas para la configuración del perfil de cliente de OAuth 2.0.
  • Clase de autenticación /GOOG/CL_OAUTH_GOOGLE que especificas para la configuración de la clave del cliente.
  • Implementaciones de complementos empresariales (BAdI) de SAP que propagan previamente los parámetros de OAuth específicos de Google, como los extremos y la configuración de parámetros obligatoria

Sin embargo, también debes completar las siguientes opciones de configuración en tu entorno de SAP:

La pantalla de consentimiento de OAuth es un mensaje que les indica a los usuarios quién solicita acceso a sus datos y a qué tipo de datos pueden acceder tu app.

  1. En la consola de Google Cloud, ve a Menú  > API y servicios > pantalla de consentimiento de OAuth.

    Ir a la pantalla de consentimiento de OAuth

  2. Selecciona el tipo de usuario Externo para tu aplicación y haz clic en Crear.

  3. Para completar el formulario de registro de apps, especifica los siguientes detalles:

    • Nombre de la app: El nombre de la aplicación que requiere consentimiento.
    • Correo electrónico de asistencia del usuario: Un correo electrónico de asistencia para que los usuarios se comuniquen contigo si tienen preguntas sobre su consentimiento.
    • Dominios autorizados: Los dominios que se usarán durante el consentimiento de OAuth.
    • Información de contacto del desarrollador: Las direcciones de correo electrónico para que Google te notifique sobre cualquier cambio en tu proyecto.
  4. Haz clic en Save and Continue.

Crea un ID de cliente de OAuth 2.0

Para autenticarte como usuario final y acceder a los datos del usuario en tu app, debes crear uno o más IDs de cliente de OAuth 2.0. Un ID de cliente se usa con el fin de identificar una sola app para los servidores de OAuth de Google.

  1. En la consola de Google Cloud, ve a Menú  > API y servicios  > Credenciales.

    Ir a Credenciales

  2. Haz clic en Crear credenciales >ID de cliente de OAuth.

  3. En el campo Tipo de aplicación, selecciona Aplicación web.

  4. En el campo Nombre, escribe un nombre para las credenciales. Este nombre solo se muestra en la consola de Google Cloud.

  5. En URI de redireccionamiento autorizados, haz clic en Agregar URI. Luego, ingresa el URI de redireccionamiento de SAP al que el servidor OAuth 2.0 puede enviar respuestas.

    Puedes obtener el URI de redireccionamiento de SAP desde la configuración de OAuth 2.0 en la transacción SICF.

  6. Haz clic en Crear.

  7. Toma nota del ID de cliente y del Secreto del cliente.

Crea un perfil de cliente de OAuth 2.0

Como desarrollador de ABAP, debes crear un perfil de cliente de OAuth con los permisos de OAuth 2.0 que se requieren para los requisitos de tu empresa. Si deseas obtener información sobre los permisos de OAuth 2.0 para las APIs de Google, consulta Alcances de OAuth 2.0 para las API de Google.

Se envía un perfil de cliente de OAuth /GOOG/OAUTH_PROFILE_SAMPLE de muestra con el SDK, con los alcances de OAuth 2.0 configurados para la API de Hojas de cálculo de Google.

  1. En la GUI de SAP, ingresa el código de transacción SE80.
  2. En la lista desplegable, selecciona Objeto de desarrollo.
  3. Para crear un objeto de desarrollo en el espacio de nombres personalizado, selecciona Crear > Otros > Perfil de cliente de OAuth 2.0 en el menú contextual del nombre del objeto
  4. Ingresa los siguientes detalles:

    • En el campo Perfil del cliente, ingresa un nombre del perfil del cliente.
    • En el campo Tipo, selecciona /GOOG/ABAP_SDK. Este es el tipo de proveedor predeterminado enviado con el SDK de ABAP para Google Cloud.
  5. Agrega los permisos necesarios a tu perfil de cliente. Para obtener información sobre los permisos de OAuth 2.0, consulta Permisos de OAuth 2.0 para las APIs de Google.

  6. Guarda el perfil del cliente en tu paquete de desarrollo. Incluye el perfil de cliente en una solicitud de transporte, que se puede transportar a entornos superiores.

Configura el cliente de OAuth 2.0

Como administrador de SAP, asocias el perfil de cliente de OAuth con las credenciales de cliente de Google Cloud.

Esta es una actividad única que debes realizar en cada sistema SAP en tu entorno de SAP (Desarrollo, pruebas y Producción).

  1. En la GUI de SAP, ingresa el código de transacción OA2C_CONFIG. La página de acceso de SAP se abrirá en tu navegador predeterminado.
  2. Accede con tus credenciales de SAP.
  3. Para crear un cliente de OAuth 2.0, haz clic en Crear.
  4. En el cuadro de diálogo Crear un nuevo cliente de OAuth 2.0, haz lo siguiente:
    1. Selecciona el perfil de cliente de OAuth 2.0 que creaste antes en Crea un perfil de cliente de OAuth 2.0 en tu sistema SAP.
    2. Ingresa un nombre para la configuración.
    3. Ingresa el ID de cliente de OAuth 2.0 de las credenciales de Google Cloud que creaste antes en Crea credenciales de ID de cliente de OAuth 2.0.
    4. Haz clic en OK.
  5. En la pestaña Administración, en la sección Configuración general, ingresa el secreto del cliente de las credenciales de Google Cloud que creaste antes en Crea OAuth.Credenciales de ID de cliente 2.0
  6. Si usas un servidor proxy para enrutar el tráfico HTTP/HTTPS saliente desde tu sistema SAP, debes mantener los siguientes detalles del host del proxy en la sección Configuración de acceso:

    • Host de proxy
    • Puerto proxy:
    • Usuario de proxy
    • Contraseña de proxy
  7. Haz clic en Guardar.

Configura la clave de cliente

  1. En la GUI de SAP, ejecuta el código de transacción /GOOG/SDK_IMG.

    Como alternativa, ejecuta el código de transacción SPRO y, luego, haz clic en IMG de referencia de SAP.

  2. Haz clic en el SDK de ABAP para Google Cloud > Configuración básica > Configurar clave de cliente.
  3. Haz clic en Entradas nuevas.
  4. Ingresa los valores para los siguientes campos:

    Campo Descripción
    Nombre de la clave de Google Cloud Especifica un nombre de la configuración de la clave de cliente.
    Nombre de la cuenta de servicio de Google Cloud Deja este campo en blanco.
    Permiso de Google Cloud Deja este campo en blanco.
    Identificador de proyecto de Google Cloud Especifica el ID del proyecto de Google Cloud que contiene las APIs de destino.
    Nombre del comando Deja este campo en blanco.
    Clase de autorización Especifica la clase de autenticación, /GOOG/CL_OAUTH_GOOGLE.
    Almacenamiento en caché de tokens Deja este campo en blanco.
    Segundos de actualización de los tokens Deja este campo en blanco.
    Parámetro de autorización 1 Especifica el nombre del perfil de cliente de OAuth que creaste antes en Crea un perfil de cliente de OAuth 2.0 en tu sistema SAP.
    Parámetro de autorización 2

    Especifica el nombre de configuración que definiste en el cliente de OAuth 2.0 para un ID de cliente.

    Este campo es obligatorio si asociaste un único perfil de cliente de OAuth con más de un ID de cliente.

    Para obtener más información, consulta Situación de varios proyectos de Google Cloud.

  5. Guarda la entrada nueva.

Solicita tokens de acceso de OAuth 2.0

Como usuario final, debes solicitar un token de acceso de OAuth 2.0 para permitir el acceso a los recursos de la API.

Esta es una actividad única que cada usuario debe realizar en cada sistema SAP en tu entorno de SAP (desarrollo, pruebas y producción). En caso de que se modifiquen los permisos de OAuth, los usuarios deben repetir esta actividad.

  1. En la GUI de SAP, ingresa el código de transacción OA2C_GRANT. La página de acceso de SAP se abrirá en tu navegador predeterminado.
  2. Accede con tus credenciales de SAP.
  3. Selecciona el ID de cliente con el que deseas acceder a las APIs.
  4. Haz clic en Solicitar tokens de OAuth 2.0.
  5. En la pantalla de consentimiento Acceder con Google, ingresa las credenciales de tu Cuenta de Google y haz clic en Permitir.

    Un indicador verde en la columna Estado de acceso indica que se permite el acceso a los recursos de la API según el perfil de cliente de OAuth 2.0.

Situación de varios proyectos de Google Cloud

Si habilitaste las APIs de Google Cloud en más de un proyecto de Google Cloud, sigue esta guía para configurar la autenticación con credenciales de cliente de OAuth 2.0:

Autentica mediante una clave de API almacenada en SAP SSF

Los pasos de la configuración de alto nivel son los siguientes:

Crea una clave de API

Para autenticar con una clave de API, debes crear una clave de API. La string de clave de API es una string encriptada, por ejemplo, AIzaSyDaGmWKa4JsXZ-HjGw7ISLn_3namBGewQe. El SDK de ABAP para Google Cloud usa la string de clave de API en la solicitud HTTP para autenticarse de forma segura cuando se llama a una API de Google Cloud.

Google Cloud proporciona varias formas de crear claves de API.

Para crear claves de API con la consola de Google Cloud, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página Credenciales.

    Ir a Credenciales

  2. Haz clic en Crear credenciales y, luego, selecciona Clave de API en el menú.

    • Se mostrará la string de clave de API en el cuadro de diálogo Se creó la clave de API. Copia tu string de clave y mantenla segura. Necesitas esta clave de API para configurar la autenticación en Google Cloud.

    • De forma predeterminada, las claves de API no están restringidas. Te recomendamos restringir las claves de API mediante la selección de las APIs que puedes usar. Para obtener más información sobre cómo agregar restricciones de API, consulta Agrega restricciones de API.

Almacena la clave de API en SSF

El SDK de ABAP para Google Cloud ofrece una opción de almacenar claves de API de forma segura mediante el mecanismo de SAP Secure Store and Forward (SSF).

Con la opción SSF, puedes almacenar la clave de API en un formato encriptado en la tabla /GOOG/APIKEY_BIN. Cuando se llama a una API, la clave de API se recuperará de la tabla /GOOG/APIKEY_BIN, se desencriptará y se agregará al URI del extremo de la API.

Por motivos de seguridad, no puedes ver el contenido de /GOOG/APIKEY_BIN con herramientas estándar, transacciones como SE16, SE16N o SE11.

Requisitos previos

Para la autenticación mediante una clave de API almacenada en SAP SSF, debes tener la versión 8.5 o una versión posterior de la biblioteca criptográfica de SAP instalada en tu sistema SAP. Para obtener más información sobre la biblioteca criptográfica de SAP, consulta 1848999: Nota central para CommonCryptoLib 8 (SAPCRYPTOLIB) y 397175: software criptográfico de SAP: control de exportación.

Para verificar la versión de la biblioteca criptográfica de SAP, sigue estos pasos:

  1. En la GUI de SAP, ingresa el código de transacción STRUST.
  2. Ve al menú Entorno y, luego, haz clic en Mostrar versión de SSF.

Configura la aplicación de SSF

En la tabla SSFAPPLIC, crea una nueva aplicación de SSF ZG_APK que encripte la clave de API. ZG_APK es el nombre de la aplicación de SSF predeterminado.

Como alternativa, puedes crear una aplicación de SSF con tu nombre preferido o usar una aplicación de SSF existente que tenga un nombre diferente. Si deseas usar una aplicación de SSF diferente para la encriptación, debes configurar el nombre de la aplicación de SSF en Authorization Parameter 1 de la tabla de claves del cliente.

Para crear una nueva entrada en la tabla SSFAPPLIC, sigue estos pasos:

  1. En la GUI de SAP, ingresa el código de transacción SE16.
  2. En el campo Nombre de la tabla, ingresa SSFAPPLIC y crea una entrada nueva.
  3. En el campo APPLIC, ingrese ZG_APK.
  4. Especifica los valores en los siguientes campos.

    Campo Valor
    APPLIC ZG_APK
    B_TOOLKIT Selecciona la marca.
    B_FORMAT Selecciona la marca.
    B_PAB Selecciona la marca.
    B_PROFID Selecciona la marca.
    B_PROFILE Selecciona la marca.
    B_HASHALG Deja este campo en blanco.
    B_ENCRALG Deja este campo en blanco.
    B_INCCERTS Deja este campo en blanco.
    B_DETACHED Deja este campo en blanco.
    B_ASKPWD Deja este campo en blanco.
    B_DISTRIB Selecciona la marca.
    DESCRIPT API Key Encryption for GCP
  5. Guarda la entrada nueva.

Crea parámetros de SSF
  1. En la GUI de SAP, ingresa el código de transacción SM30.

  2. Abre la vista VSSFARGS.

  3. Para la aplicación ZG_APK (API Key Encryption for GCP), crea una entrada nueva. Los parámetros de SSF específicos de la aplicación se propagan de forma automática.

  4. Guarda la entrada nueva.

Crea un entorno de seguridad personal (PSE)

  1. En la GUI de SAP, ingresa el código de transacción STRUST.

  2. En el nodo Encriptación de claves de API de SSF para GCP, haz clic con el botón derecho y selecciona Crear.

  3. En el campo Algoritmo, selecciona RSA. Deja los otros campos con valores predeterminados propagados por el sistema.

  4. Guarda la entrada nueva.

Almacena la clave de API

  1. En la GUI de SAP, ejecuta el código de transacción /GOOG/SDK_IMG.

    Como alternativa, ejecuta el código de transacción SPRO y, luego, haz clic en IMG de referencia de SAP.

  2. Haz clic en SDK de ABP para Google Cloud > Ajustes básicos > Configurar clave de API (con SSF).

  3. En Nombre de la clave de Google, ingresa el nombre de la configuración de la clave de cliente.

  4. En el campo Clave de API, ingresa la clave de API que creaste antes en Crea una clave de API.

  5. Selecciona Guardar.

  6. Haz clic en Ejecutar para almacenar la clave de API

Configura la clave de cliente

  1. En la GUI de SAP, ejecuta el código de transacción /GOOG/SDK_IMG.

    Como alternativa, ejecuta el código de transacción SPRO y, luego, haz clic en IMG de referencia de SAP.

  2. Haz clic en el SDK de ABAP para Google Cloud > Configuración básica > Configurar clave de cliente.

  3. Haz clic en Entradas nuevas.

  4. Ingresa los valores para los siguientes campos:

    Campo Descripción
    Nombre de la clave de Google Cloud Especifica un nombre de la configuración de la clave de cliente. Por ejemplo, DEMO_API_KEY.
    Nombre de la cuenta de servicio de Google Cloud Deja este campo en blanco.
    Permiso de Google Cloud Especifica el permiso de acceso a la API, https://www.googleapis.com/auth/cloud-platform.
    ID del proyecto Especifica el ID del proyecto de Google Cloud que contiene las APIs de destino.
    Nombre del comando Deja este campo en blanco.
    Clase de autorización Especifica la clase de autorización, /GOOG/CL_AUTH_API_KEY_SSF.
    Almacenamiento en caché de tokens

    La marca que determina si los tokens de acceso recuperados de Google Cloud se almacenan en caché.

    Te recomendamos que habilites el almacenamiento en caché de tokens después de que termines de configurar y probar tu conexión a Google Cloud. Para obtener más información sobre el almacenamiento en caché de tokens, consulta Habilita el almacenamiento en caché de tokens.

    Segundos de actualización de los tokens Especifica la cantidad de tiempo en segundos antes de que caduque un token de acceso y se deba actualizar. El valor predeterminado es 3500.
    Parámetro de autorización 1 Si el nombre de la aplicación de SSF es diferente de ZG_APK, especifica el nombre de la aplicación de SSF.
    Parámetro de autorización 2 Deja este campo en blanco.
  5. Guarda la entrada nueva.

Crea nuevos destinos de RFC

Para las APIs que planeas consumir con el SDK de ABAP para Google Cloud, crea nuevos destinos de RFC.

Para obtener información sobre cómo crear destinos de RFC, consulta Destinos de RFC.

Si no se crean y configuran destinos de RFC, el SDK de ABAP para Google Cloud funciona con los extremos de API predeterminados mantenidos en stubs de cliente de API individuales.

Configura la asignación de servicios

Configura la tabla de asignación de servicios para las APIs que planeas consumir con el SDK de ABAP para Google Cloud.

  1. En la GUI de SAP, ejecuta el código de transacción /GOOG/SDK_IMG.

    Como alternativa, ejecuta el código de transacción SPRO y, luego, haz clic en IMG de referencia de SAP.

  2. Haz clic en SDK de ABAP para Google Cloud > Configuración básica > Configurar asignación de servicios.

  3. Haz clic en Entradas nuevas.

  4. Especifica destinos de RFC para las APIs que planeas usar, por ejemplo, addressvalidation v1. Si vas a consumir otras APIs, especifica los destinos RFC para esas APIs.

    Nombre Nombre del servicio Destino de RFC
    Nombre de la clave de Google Cloud addressvalidation:v1 ZGOOG_ADDRVALDN_V1
  5. Guarda la entrada nueva.

Borra una clave de API

Si ya no se usa una clave de API, puedes borrarla de tu sistema SAP.

Para borrar una clave de API, sigue estos pasos:

  1. En la GUI de SAP, ejecuta el código de transacción /GOOG/SDK_IMG.

    Como alternativa, ejecuta el código de transacción SPRO y, luego, haz clic en IMG de referencia de SAP.

  2. Haz clic en SDK de ABP para Google Cloud > Ajustes básicos > Configurar clave de API (con SSF).

  3. En el campo Nombre de la clave de Google, ingresa el nombre de la configuración de la clave de cliente.

  4. Selecciona Borrar.

  5. Haz clic en Ejecutar para borrar la clave de API

Autentica mediante una clave de API almacenada en Secret Manager

Los pasos de la configuración de alto nivel son los siguientes:

Crea una clave de API

Para autenticar con una clave de API, debes crear una clave de API. La string de clave de API es una string encriptada, por ejemplo, AIzaSyDaGmWKa4JsXZ-HjGw7ISLn_3namBGewQe. El SDK de ABAP para Google Cloud usa la string de clave de API en la solicitud HTTP para autenticarse de forma segura cuando se llama a una API de Google Cloud.

Google Cloud proporciona varias formas de crear claves de API.

Para crear claves de API con la consola de Google Cloud, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página Credenciales.

    Ir a Credenciales

  2. Haz clic en Crear credenciales y, luego, selecciona Clave de API en el menú.

    • Se mostrará la string de clave de API en el cuadro de diálogo Se creó la clave de API. Copia tu string de clave y mantenla segura. Necesitas esta clave de API para configurar la autenticación en Google Cloud.

    • De forma predeterminada, las claves de API no están restringidas. Te recomendamos restringir las claves de API mediante la selección de las APIs que puedes usar. Para obtener más información sobre cómo agregar restricciones de API, consulta Agrega restricciones de API.

Crea un secreto y almacena la clave de API

El SDK de ABAP para Google Cloud ofrece una opción de almacenar de forma segura claves de API mediante el servicio de Secret Manager de Google Cloud. Para almacenar de forma segura las strings de claves de API, Secret Manager te permite seguir las prácticas recomendadas para usar claves de API de forma segura.

Para crear un secreto y almacenar la clave de API, sigue estos pasos:

  1. Habilita la API de Secret Manager.

    Ir a la biblioteca de API

  2. En la consola de Google Cloud, crea un secreto y almacena la clave de API como la versión más reciente.

    Ir a Secret Manager

Si deseas obtener información para crear un secreto, consulta Crea un secreto.

El SDK de ABAP para Google Cloud recupera de forma predeterminada solo la versión más reciente de un secreto.

Configura la clave de cliente para el acceso a Secret Manager

Las APIs de Secret Manager usan tokens para la autenticación. Por lo tanto, debes configurar la autenticación basada en tokens para acceder a las APIs de Secret Manager según la implementación de SAP.

Usa uno de los siguientes métodos para configurar la autenticación basada en tokens a fin de acceder a las APIs de Secret Manager:

Anota el nombre de la clave de cliente que creaste para el acceso de Secret Manager.

Configura la clave de cliente para el secreto

  1. En la GUI de SAP, ejecuta el código de transacción /GOOG/SDK_IMG.

    Como alternativa, ejecuta el código de transacción SPRO y, luego, haz clic en IMG de referencia de SAP.

  2. Haz clic en el SDK de ABAP para Google Cloud > Configuración básica > Configurar clave de cliente.

  3. Haz clic en Entradas nuevas.

  4. Ingresa los valores para los siguientes campos:

    Campo Descripción
    Nombre de la clave de Google Cloud Especifica un nombre de la configuración de la clave de cliente. Por ejemplo, DEMO_API_KEY.
    Nombre de la cuenta de servicio de Google Cloud Deja este campo en blanco.
    Permiso de Google Cloud Especifica el permiso de acceso a la API, https://www.googleapis.com/auth/cloud-platform.
    ID del proyecto Especifica el ID del proyecto de Google Cloud que contiene las APIs de destino.
    Nombre del comando Deja este campo en blanco.
    Clase de autorización Especifica /GOOG/CL_AUTH_API_KEY_SM.
    Almacenamiento en caché de tokens

    La marca que determina si los tokens de acceso recuperados de Google Cloud se almacenan en caché.

    Te recomendamos que habilites el almacenamiento en caché de tokens después de que termines de configurar y probar tu conexión a Google Cloud. Para obtener más información sobre el almacenamiento en caché de tokens, consulta Habilita el almacenamiento en caché de tokens.

    Segundos de actualización de los tokens Especifica la cantidad de tiempo en segundos antes de que caduque un token de acceso y se deba actualizar. El valor predeterminado es 3500.
    Parámetro de autorización 1 Especifica el nombre de la clave de cliente que creaste para el acceso a Secret Manager. Por ejemplo, CLIENT_KEY_SM.
    Parámetro de autorización 2 Especifica el nombre del secreto, que tiene almacenada la clave de API. Por ejemplo, TEST_SECRET.
  5. Guarda la entrada nueva.

Crea nuevos destinos de RFC

Para las APIs que planeas consumir con el SDK de ABAP para Google Cloud, crea nuevos destinos de RFC.

Para obtener información sobre cómo crear destinos de RFC, consulta Destinos de RFC.

Si no se crean y configuran destinos de RFC, el SDK de ABAP para Google Cloud funciona con los extremos de API predeterminados mantenidos en stubs de cliente de API individuales.

Configura la asignación de servicios

Configura la tabla de asignación de servicios para las APIs que planeas consumir con el SDK de ABAP para Google Cloud.

  1. En la GUI de SAP, ejecuta el código de transacción /GOOG/SDK_IMG.

    Como alternativa, ejecuta el código de transacción SPRO y, luego, haz clic en IMG de referencia de SAP.

  2. Haz clic en SDK de ABAP para Google Cloud > Configuración básica > Configurar asignación de servicios.

  3. Haz clic en Entradas nuevas.

  4. Especifica destinos de RFC para las APIs que planeas usar, por ejemplo, addressvalidation v1. Si vas a consumir otras APIs, especifica los destinos RFC para esas APIs.

    Nombre Nombre del servicio Destino de RFC
    Nombre de la clave de Google Cloud addressvalidation:v1 ZGOOG_ADDRVALDN_V1
  5. Guarda la entrada nueva.

Valida la recuperación de claves de API desde Secret Manager

Para validar la recuperación de claves de API desde Secret Manager, sigue estos pasos:

  1. En la GUI de SAP, ejecuta el código de transacción /GOOG/SDK_IMG.

    Como alternativa, ejecuta el código de transacción SPRO y, luego, haz clic en IMG de referencia de SAP.

  2. Haz clic en SDK de ABP para Google Cloud > Utilidades > Validar la recuperación de claves de API (mediante Secret Manager).
  3. Especifica el nombre de la clave del cliente.
  4. Haz clic en Ejecutar para verificar si la clave de API se recuperó correctamente de Secret Manager.

Valida la configuración de autenticación

Para validar la configuración de autenticación, sigue estos pasos:

  1. En la GUI de SAP, ejecuta el código de transacción /GOOG/SDK_IMG.

    Como alternativa, ejecuta el código de transacción SPRO y, luego, haz clic en IMG de referencia de SAP.

  2. Haz clic en SDK de ABP para Google Cloud > Utilidades > Validar configuración de autenticación.

  3. Ingresa el nombre de la clave del cliente.

  4. Haz clic en Ejecutar para verificar si el flujo general se configuró correctamente.

    Una marca de verificación verde en la columna Resultado indica que todos los pasos de configuración se completaron de forma correcta.

Obtener asistencia

Si necesitas ayuda para resolver problemas con el SDK de ABAP para Google Cloud, haz lo siguiente: