Acceso a las APIs OData de SuccessFactors mediante las APIs de cliente OAuth 2.0. SAP

Este artículo describe el proceso de cómo se puede acceder a las APIs OData de SuccessFactors desde un programa ABAP utilizando la API de cliente OAuth 2.0. El cliente OAuth 2.0 permite acceder a servicios y recursos protegidos que son ofrecidos por cualquier proveedor de servicios externo. La comunicación entre el cliente OAuth 2.0 y el servidor está asegurada por una conexión HTTPS.

Con la desaparición (prevista) de la autenticación básica HTTP para las llamadas a la API (SFAPI y OData), uno de los enfoques alternativos recomendados es el uso de OAuth2 SAML Bearer Assertion.El cliente OAuth 2.0 se encarga de almacenar los tokens OAuth 2.0 y los secretos del cliente en el almacén seguro.Durante la autenticación, el cliente OAuth 2.0 pasa los ámbitos OAuth 2.0 al proveedor de servicios que contiene referencias a todos los recursos permitidos. El objetivo de este artículo es compartir una muestra de trabajo de OAuth 2.0 con llamadas a la API OData requeridas para el desarrollo de integraciones personalizadas que involucran el sistema SAP ERP con SuccessFactors Employee Central.

Este escenario involucra el acceso a las APIs OData de SuccessFactors para crear/actualizar detalles de Empleados y Empleos en la Instancia Central de Empleados de SuccessFactors usando los detalles existentes de Empleados y Empleos del Sistema SAP ERP HCM usando un Programa ABAP que usa las APIs de Cliente OAuth 2.0 junto con los mecanismos de Autenticación OAuth 2.0.

Necesitamos establecer ciertas configuraciones tanto del lado del Cliente (ABAP AS) como del Servidor (SuccessFactors).

A. Configuraciones a establecer en el Sistema ERP HCM:

  1. Definir un tipo de proveedor de servicios para SuccessFactors

El cliente OAuth 2.0 proporciona acceso desde un AS ABAP a diferentes proveedores de servicios, por ejemplo, SAP HANA Cloud Platform, Google Cloud Platform, Microsoft Azure, etc. Aquí también podemos registrar los definidos a medida en el AS ABAP creándolos en OAuth 2.0 Client Service Provider Types utilizando la transacción OA2C_TYPES. Crea una nueva entrada e introduce un nuevo tipo de proveedor de servicios personalizado (por ejemplo, ZSFSF) y guarda la entrada.

  1. Crear una implementación BAdI para el nuevo tipo de proveedor de servicios personalizado

Ya que no estamos haciendo uso del tipo de proveedor de servicios predefinido por SAP, necesitamos realizar algunos pasos adicionales, incluyendo la implementación BAdI durante la configuración de un cliente OAuth 2.0.

Necesitamos crear la siguiente implementación de BAdI:

◉ Crear una nueva clase en el espacio de nombres del cliente que herede de CL_OA2C_SPECIFICS_ABSTRACT y redefinir los métodos según sea necesario. Esto es necesario para establecer los valores de los tipos de concesión soportados, la configuración de los puntos finales y ciertos parámetros adicionales según lo esperado por el proveedor de servicios. Por ejemplo, en el caso de SuccessFactors Employee Central necesitamos establecer el parámetro de solicitud company_id con un valor que haga referencia a la Instancia de Employee Central.

◉ Mantener la clase CL_OA2C_SPECIFICS_ABSTRACT como superclase. Esta clase contiene la configuración estándar para la implementación del protocolo OAuth 2.0. Guarde los cambios.

◉ Redefina el método de tipos de subvención soportados IF_OA2C_SPECIFICS~GET_SUPPORTED_GRANT_TYPES y sustituya la implementación del método por el siguiente código:

e_authorization_code = abap_false. e_saml20_assertion   = abap_true. e_refresh            = abap_true. e_revocation         = abap_false.

◉ Redefinir el método de extensión de la configuración IF_OA2C_SPECIFICS~GET_CONFIG_EXTENSION y sustituir la implementación del método por el siguiente código:

r_config_extension = ‘ ‘. «‘ Rellene con el tipo de proveedor de cliente OAuth 2.0, por ejemplo, ZSFSF

◉ Redefina el método de propiedades de acceso a recursos protegidos IF_OA2C_SPECIFICS~GET_CONFIG_EXTENSION y sustituya la implementación del método por el siguiente código:

e_bearer_token_supported = abap_true.
e_bearer_token_name = Bearer.
e_form_field_supported = abap_false.

◉ Redefina el método IF_OA2C_SPECIFICS~GET_SAML_20_AT_REQU_PARAM_NAMES de SAML 2.0 Get Access Token Request Parameter Names con el siguiente código:
DATA: ls_add_param TYPE if_oa2c_specifics~ty_s_add_param.

CALL METHOD super->if_oa2c_specifics~get_saml20_at_requ_param_names
IMPORTING
e_client_id = e_client_id
e_client_secret = e_client_secret
e_grant_type = e_grant_type
e_grant_type_value = e_grant_type_value
e_assertion = e_assertion
e_scope = e_scope.

ls_add_param-name = ‘company_id’.
ls_add_param-mode = 1. » Rellenado durante la configuración desde F4.
ls_add_param-default_value = ». «Rellene aquí el ID de la Instancia Central de Empleados
INSERT ls_add_param INTO TABLE et_add_param_names.

◉ Redefinir la aserción SAML 2.0: Utilizar la codificación Base64 en lugar del método Base64url IF_OA2C_SPECIFICS~GET_SAML_20_NO_B64URL_ENCODING y sustituir la implementación del método por el siguiente código:

r_no_b64url_encoding = abap_true.

◉ Redefina el método Get supported client authentication IF_OA2C_SPECIFICS~GET_SUPPORTED_CLIENT_AUTH y sustituya la implementación del método por el siguiente código:
e_basic_authentication = abap_false.
e_form_fields = abap_true.

Guarde los cambios y active la clase anterior.

3. Cree un perfil de cliente OAuth 2.0 Cree un nuevo perfil de cliente OAuth 2.0 para conectar su programa ABAP con un determinado cliente OAuth 2.0 que nos permita acceder a los servicios ofrecidos por un proveedor de servicios.

Una vez completado este paso que implica la creación del Perfil de Cliente OAuth 2.0, se puede utilizar este Perfil de Cliente OAuth 2.0 para enlazar programas en el AS ABAP con el Cliente OAuth 2.0 de SuccessFactors.

  1. Crear una configuración de Cliente OAuth 2.0

La configuración de un cliente OAuth 2.0 en el AS ABAP asegura que los usuarios puedan acceder a las aplicaciones proporcionadas por un proveedor de servicios. Este paso puede hacerse en paralelo con la actividad de creación de la Aplicación Cliente OAuth en el lado de SuccessFactors Employee Central, ya que se requiere recuperar la clave API que se genera automáticamente.

i. Abra la interfaz gráfica de usuario de SAP e inicie la transacción OA2C_CONFIG.Elija Crear y seleccione el perfil de cliente OAuth2.0 que creó anteriormente. El perfil de cliente OAuth 2.0 ya contiene el proveedor de servicios.

ii. Introduzca el ID de cliente OAuth 2.0 que configuró en el proveedor de servicios. Ambos secretos de cliente deben ser idénticos. Este valor es el que recibimos como secreto de cliente después de registrar el cliente OAuth 2.0 utilizando Manage OAuth2 Client Applications en el sitio del proveedor de servicios. Guarde los cambios. Introduzca el secreto de cliente.

iii. Vaya a la configuración del servidor de autorización e introduzca el punto final del token.

iv. En Configuración de acceso, seleccione la casilla «SAML 2.0 Bearer Assertion».

v. Introduzca el valor ‘www.successfactors.com’ para el campo SAML 2.0 Audience. Guarde las entradas.

Creación de la configuración del cliente OAuth 2.0:

OAuth 2.0 Client configuration (source: transaction OA2C_CONFIG)

Generación de tokens OAuth mediante tcode:

OAuth 2.0 Client Accounts (source: transaction OA2C_GRANT)
  1. Configurar los ajustes de SSL

Este paso incluye el mantenimiento del certificado del proveedor de servicios, que debe recuperarse del servidor de destino correspondiente de SuccessFactors Employee Central.

SSL client SSL Client (source: transaction STRUST)
  1. Recuperar el certificado del cliente

Necesitamos recuperar el certificado del cliente que será registrado en SAP SuccessFactors bajo el nodo SSF OA2CS.Exportar este certificado (codificado en base.64).Es necesario añadir el contenido entre –BEGIN CERTIFICATE– y –END CERTIFICATE– en el campo X.509 de Employee Central bajo la gestión del cliente OAuth en pasos posteriores.

SSF OA22S (source: transaction STRUST) 

B. Configuraciones a establecer en el SuccessFactors Employee Central

  1. Realice el aprovisionamiento de usuarios

SuccessFactors proporciona herramientas de importación de usuarios a través de la interfaz de usuario y la API. Tenemos que asegurarnos de que nuestro usuario está asociado con el ID de correo electrónico y tiene los permisos necesarios. El Usuario SF deberá tener permisos para acceder a Manage Integration Tools -> Manage OAuth2 Client Applications.

  1. Registrar la aplicación como cliente OAuth

Vaya al Centro de Administración y busque Manage OAuth2 Client Applications en Tools.

Admin Center (source: SuccessFactors EC Instance)

◉ Cree una nueva aplicación cliente OAuth2. Se recomienda utilizar la convención de nombres SAP__.

◉ Introduzca el certificado SSF OA2CS de STRUST (sin la línea de inicio
–INICIO DEL CERTIFICADO–
y la fila de finalización
–END CERTIFICATE–).

◉ Al guardar, se genera una clave API (GUID), que debe ser insertada como el ID del cliente en OA2C_CONFIG más tarde.

Manage OAuth2 Client Applications (source: SuccessFactors EC Instance)