En el segundo artículo de la serie sobre el desarrollo de aplicaciones en la plataforma SAP Cloud Platform en el entorno Neo, cubriremos uno de los aspectos más importantes: la autorización y la gestión de autenticación de usuarios.
En este artículo, mostraremos cómo establecer una conexión entre la plataforma SAP Cloud y el proveedor de identidad (IDP) del cliente imaginario ABC PetroCorp, y también agregaremos usuarios al IDP. A continuación, veremos cómo asignar roles para los usuarios de la empresa cliente en una aplicación específica (desde IDP), y cómo configurar los atributos SAML para su transferencia desde IDP a la aplicación de la plataforma SCP en la nube.
En la subcuenta del cliente ficticio ABC PetroCorp
del primer artículo , ya está instalada una suscripción a las aplicaciones de monitoreo de contaminación SCP proporcionadas por ITeLO Consulting. Ahora, el empleado de ABC PetroCorp necesita que esta aplicación esté disponible para otros colegas.
Un usuario de SAP Cloud Platform puede conectar su IDP corporativo a la plataforma en la nube y configurar la gestión de seguridad y autenticación para su aplicación cargada en SCP.
ABC PetroCorp ha activado el servicio SAP Cloud Platform Identity Authentication, que proporciona acceso a procesos, aplicaciones y datos comerciales. Este servicio proporciona un inquilino de SCI, dentro del cual hay una configuración de aplicación y gestión de autorización de usuario.
Emily, la heroína imaginaria del primer artículo, tiene acceso a este inquilino de SCI: es su administrador y puede configurar la autorización del usuario en una aplicación específica. Ella quiere descubrir cómo crear estas configuraciones utilizando el servicio de autenticación de identidad.
Requisitos:
- Una cuenta SCP global productiva (no de prueba) con el servicio de autenticación de identidad conectado (como IDP para la subcuenta ABC PetroCorp);
- El usuario de la subcuenta del cliente debe ser el administrador del inquilino de SCI, por lo que tendrá acceso a la consola de administración del servicio de autenticación de identidad.
Emily debe completar los siguientes pasos en la consola de administración del servicio de autenticación de identidad y el panel de control de SCP para que la aplicación en la plataforma en la nube esté disponible para otros empleados de ABC PetroCorp:
Paso 1: Establezca una relación de confianza entre el inquilino de SCI y la subcuenta SCP.
Paso 2: Importe usuarios al inquilino de SCI y actualice (agregue) los atributos necesarios.
Paso 3: Asignar roles a usuarios de nivel de aplicación en SCP.
Paso 4: Configure los atributos en el panel de control del inquilino SCI y SCP para transferirlos a la aplicación.
Paso 5: Verifique la configuración.Paso 1: Establezca una confianza entre el inquilino de SCI y la subcuenta SCP
Emily es la administradora de la subcuenta ABC PetroCorp y el inquilino de SCI, lo que le permite aplicar la configuración necesaria para utilizar el inquilino de SCI como un "repositorio de usuarios" para la aplicación multiempresa proporcionada por el proveedor ITeLO Consulting.
Primero, Emily necesita establecer una relación de confianza entre el inquilino de SCI y la subcuenta SCP del cliente ABC PetroCorp.
Vamos a la consola de administración del servicio de autenticación de identidad utilizando el enlace "https: //.accounts.ondemand.com/admin", donde se encuentra el identificador del inquilino de SCI. Este enlace se puede encontrar en la carta de registro que le llega al administrador del inquilino del servicio de autenticación de identidad. El identificador de inquilino también se indica allí.
La consola de administración del servicio de autenticación de identidad es la siguiente:

En otra pestaña del navegador, abra el panel de control para la subcuenta del cliente "ABC PetroCorp" y vaya a la pestaña "Seguridad" -> "Confianza".

En el menú "Gestión de confianza" que se abre, vaya a la pestaña "Proveedor de servicios locales" y haga clic en "Editar".

Luego realizamos los siguientes pasos:
- En el campo "Tipo de configuración", cambie el tipo a "Personalizado";
- Haga clic en "Generar par de claves" para crear una clave y un certificado para la cuenta;
- Cambie el valor en el campo "Propagación principal" a "Activar";
- Haga clic en "Guardar".

Haga clic en "Obtener metadatos" para descargar el archivo de metadatos en el formato "xml", que contiene las configuraciones descritas anteriormente. Se utilizará para generar confianza con el inquilino de SCI.
Volvamos a la consola de administración del servicio de Autenticación de Identidad y vayamos a la pestaña "Aplicaciones y Recursos" -> "Aplicaciones" en el menú de la izquierda. En el área "Aplicaciones", haga clic en el botón "Agregar" para indicar una nueva aplicación implementada en la subcuenta "ABC PetroCorp".

En la ventana que aparece, ingrese el nombre de la aplicación (por ejemplo, ABC_PetroCorp_IDP) y haga clic en "Guardar". Después de eso, se creará un nuevo punto en el inquilino para nuestra aplicación.
En la aplicación creada, vaya a la pestaña "Confianza" y seleccione el parámetro "Configuración de SAML 2.0".

En la sección "Definir desde metadatos", haga clic en "Examinar" y seleccione el archivo de metadatos en el formato "xml", que descargamos antes al configurar la confianza en la subcuenta SCP. Los detalles sobre la configuración de SAML 2.0 se completarán automáticamente después de descargar el archivo. Haga clic en "Guardar": ahora se crea y guarda la configuración SAML 2.0 para esta aplicación.

Regrese al punto de aplicación llamado ABC_PetroCorp_IDP en el inquilino, haga clic en "URL de inicio" e ingrese una URL como "https: // contaminacionmonitoringui- <nombre_cuenta_suba> .dispatcher. <region_host>".
Esta URL se puede encontrar en la descripción de la aplicación HTML5 a la que está suscrito el cliente (subcuenta "ABC PetroCorp"). Para hacerlo, vaya a la subcuenta del cliente en la pestaña "Aplicaciones" -> "Suscripciones" y seleccione la aplicación HTML5 firmada.

En la pestaña "Descripción general" estará la URL que necesitamos.

Luego volvemos al punto de solicitud en el inquilino de SCI, designamos la URL de la aplicación en la "URL de inicio" y hacemos clic en "Guardar".

Ahora vaya a la pestaña "Aplicaciones y recursos" -> "Configuración del inquilino" en la consola de administración del servicio de autenticación de identidad. En la página de configuración del inquilino, seleccione "Configuración de SAML 2.0".

En la ventana que se abre, haga clic en "Descargar archivo de metadatos" para descargar el archivo "xml" que contiene las configuraciones de inquilinos SCI. Se utilizará en el futuro para establecer la confianza con la subcuenta del cliente en SCP.
Vuelva a la subcuenta "ABC PetroCorp" y vaya al menú "Seguridad" -> "Confianza", en la ventana que se abre, seleccione la pestaña "Proveedor de identidad de la aplicación". Haga clic en "Agregar proveedor de identidad confiable" para agregar detalles sobre el inquilino de SCI.

En la pestaña "General", haga clic en "Examinar" y seleccione el archivo de metadatos en el formato "xml" descargado de la consola de administración del servicio de autenticación de identidad. Los detalles de configuración se completan automáticamente después de descargar el archivo. Desmarque la casilla "Solo para SSO iniciado por IDP" y haga clic en "Guardar".

Ahora se ha establecido con éxito la relación de confianza entre la subcuenta del cliente ABC PetroCorp y su inquilino de SCI. Se puede aplicar la misma configuración a las subcuentas de otros clientes (por ejemplo, para el cliente XYZ EnergyCorp).
Paso 2: Importe usuarios al inquilino de SCI y actualice (agregue) los atributos necesarios
Emily necesita asegurarse de que los usuarios de la aplicación estén registrados con el IDP corporativo de ABC PetroCorp.
Idealmente, un IDP corporativo (en nuestro caso, un inquilino de SCI) ya incluiría una lista de todos los usuarios de la empresa. Para mayor claridad, importamos algunos usuarios al inquilino de SCI, después de lo cual recibirán los permisos adecuados para acceder a la aplicación.
Las demostraciones para la aplicación se almacenan en un archivo "csv" en github,
en Github .
Descargue el archivo "CSV" para "ABC PetroCorp" de GitHub. Se indican dos usuarios en el archivo "csv":
- ABCPlantSupervisor: este usuario será el gerente de una planta específica de ABC PetroCorp y solo podrá ver datos sobre su planta;
- ABCAreaManager: este usuario será el administrador de un área completa, que puede incluir varias plantas de ABC PetroCorp. Podrá ver datos de todas las plantas en su área.

El archivo .csv para ABC PetroCorp contiene direcciones de correo electrónico de usuario ficticias. Deben ser reemplazados por otros reales, ya que entonces recibirán cartas para activar las cuentas. Por ejemplo, si su correo real es "john.smith@sap.com", debe reemplazar la designación <> con "john.smith" y <<inserción_su_empresa>> con "savia".

Vaya a la consola de administración del servicio de autenticación de identidad y seleccione la pestaña "Usuarios y autorizaciones" -> "Importar usuarios". Seleccione el punto de aplicación "ABC_PetroCorp_IDP" creado anteriormente y haga clic en "Examinar", luego seleccione el archivo "ABCPetroCorp.csv" que describe a nuestros usuarios de demostración y haga clic en el botón "Importar".

Los usuarios deben activar su cuenta. Para recibir un correo electrónico con un enlace de activación, debe hacer clic en "Enviar" en la ventana "Enviar correos electrónicos".
Antes de activar al usuario, debe cambiar algunas configuraciones.
Vaya a la pestaña "Usuarios y autorizaciones" -> "Gestión de usuarios". Dos usuarios aparecieron en las listas de usuarios: "Area Manager" y "Plant Supervisor". Se les asignan identificadores automáticamente: P000011 y P000010. Estos identificadores se pueden usar como inicios de sesión para ingresar al inquilino (y en la aplicación, cuando se realizan todas las configuraciones necesarias).

Vayamos al usuario P000011 o "Administrador de área" y agreguemos un nombre que también se pueda usar como inicio de sesión para ingresar. Para hacer esto, haga clic en el icono de edición en el campo "Información personal" y complete el "Nombre de inicio de sesión" (en nuestro caso, es Johan).

Luego haga clic en "Guardar".
Ahora, hagamos lo mismo con el usuario P000010 o el Supervisor de planta, pero llámelo Smith.

El usuario del Supervisor de planta debe poder ver información solo sobre su planta, luego en la sección con información sobre la compañía es necesario indicar el identificador de la compañía (en el Paso 4 se explicará cómo se usará este identificador).
Para hacer esto, vaya a la sección "Información de la compañía" e ingrese el identificador de la planta, a saber, "101", en el campo "Compañía".
Ahora la información sobre nuestros usuarios ha cambiado. Para activarlos, vaya a los buzones de correo especificados en el archivo "csv" y haga clic en el enlace de activación, o haga clic en "Haga clic aquí para activar su cuenta".

Por lo tanto, hemos importado con éxito usuarios al inquilino de SCI, hemos actualizado la información sobre ellos y los hemos activado.
Paso 3: asignación de roles a usuarios a nivel de aplicación en la plataforma SAP Cloud
La aplicación de Monitoreo de la contaminación de múltiples inquilinos, creada por Robert de ITeLO Consulting, proporciona dos roles predefinidos, PlantSupervisor y AreaManager, que controlan la autorización del usuario en la aplicación y determinan lo que ve el usuario final.
- Función Supervisor de PlantSupervisor: los usuarios a los que se les asigna esta función solo podrán ver los datos de la planta identificados en la Información de la empresa en el inquilino de SCI.
- Rol "AreaManager": los usuarios a los que se les asigna este rol podrán ver datos de todas las plantas en su área.
Veamos cómo se logra la separación de roles a nivel de código del proyecto.
Pasemos al archivo web.xml ubicado a lo largo de la ruta / control de la contaminación
/src/main/webapp/WEB-INF/web.xml "en la carpeta del proyecto.
Abra el archivo y asegúrese de que los dos roles anteriores estén definidos en la aplicación.

Ahora vamos al archivo "PollutionDataService.java" ubicado a lo largo de la ruta "/pollutionmonitoring/src/main/java/com/sap/hana/cloud/samples/pollutionmonitoring/api/PollutionDataService.java" del proyecto y ábralo.
El método "getCompanyPollutionData ()" se indica en este archivo. Le permite verificar si el usuario es un administrador (administrador). En caso afirmativo, la aplicación muestra datos para todas las plantas, de lo contrario, los datos se filtran por la ID de la planta (plant_id). Además, la aplicación mostrará información solo para aquellas plantas cuyos identificadores corresponden a los indicados en la información del usuario.

Para mayor claridad, puede consultar el método isUserAdmin (), que le permite determinar por rol si un usuario es un administrador (administrador) o no.

Se utiliza un algoritmo similar para extraer datos de la planta de los sistemas locales.

Ahora Emily, como empleada de ABC PetroCorp, necesita identificar gerentes de área y gerentes de planta asignándoles los roles correspondientes (ABCPlantSupervisor y ABCAreaManager) en la aplicación en SCP.
Iremos a la subcuenta del cliente ABC PetroCorp y seleccionaremos la aplicación Java de monitoreo de contaminación provista por el proveedor de ITeLO Consulting (se encuentra en la pestaña Aplicaciones -> pestaña Suscripciones).

A continuación, vaya a la pestaña "Roles" (en el nivel de aplicación).
En la ventana que se abre, aparece una lista de roles indicados en la aplicación. Seleccione el rol "PlantSupervisor" y haga clic en "Asignar". En la ventana que aparece, ingrese la ID de usuario, indicada en el inquilino de SCI como "ABCPlantSupervisor". En nuestro caso, el identificador de dicho usuario será P000010.
Luego seleccione el rol "AreaManager" y haga clic en "Asignar". En la ventana que aparece, ingrese el identificador de usuario indicado en el inquilino de SCI como "ABCAreaManager" (en nuestro caso, el identificador de dicho usuario será P000011).

Por lo tanto, hemos comparado con éxito los roles de la aplicación con los usuarios correspondientes de ABC PetroCorp del inquilino de SCI.
La misma configuración se puede aplicar en la subcuenta de otro cliente (por ejemplo, "XYZ EnergyCorp").
Paso 4: Configuración de atributos en el Panel de control de inquilino SCI y SCP para transferir a la aplicación
Robert de ITeLO Consulting programó la aplicación multiinquilino de tal manera que necesita pasar la identificación de usuario de PlantSupervisor a la planta para que los datos de la planta se puedan filtrar en la aplicación para esta identificación de planta específica.
En los pasos anteriores, agregamos el identificador de planta al usuario "PlantSupervisor" en el inquilino de SCI en el campo "Información de la empresa", que ahora tenemos que transferir a la aplicación multicliente. Luego se puede usar en una aplicación para mostrar datos relacionados con una planta en particular. El usuario de AreaManager es esencialmente un administrador que puede ver los datos de todas las plantas.
Veamos cómo se organiza esto a nivel de código de aplicación.
Abra el archivo "PollutionDataService.java" ubicado en la ruta "/pollutionmonitoring/src/main/java/com/sap/hana/cloud/samples/pollutionmonitoring/api/PollutionDataService.java" en el proyecto.
Este archivo describe el método getPlantId (). Este método describe cómo obtener el nombre de usuario y verificar el atributo "PLANT_ID", que se utiliza para filtrar datos de contaminación y datos de la planta.

Podemos transferir atributos de usuario del inquilino de SCI a la aplicación a través de los Atributos de aserción de SAML. Esto es necesario para que SCP lea el atributo de usuario del inquilino de SCI que contiene información de la compañía en el momento en que el usuario inicia sesión. El llamado "Atributo de Afirmación" (atributo de aprobación) definido para el usuario debe transferirse a la aplicación de monitoreo de contaminación.
Para hacer esto, primero cree un "Atributo de aserción" en el inquilino de SCI, luego - designe el atributo de aprobación en el atributo principal ("Atributo principal") en la subcuenta "ABC PetroCorp", que puede leerse mediante el código de la aplicación, como se muestra arriba.
Vaya a la consola de administración del servicio de autenticación de identidad y seleccione la pestaña "Aplicaciones y recursos" -> "Aplicaciones". Seleccione la aplicación que necesitamos (ABC_PetroCorp_IDP) y en la pestaña "Confianza", haga clic en "Atributos de aserción".

Aparecerá una lista de atributos existentes, necesitamos uno más en ella. Para hacer esto, haga clic en el botón "Agregar" y seleccione el atributo "Compañía".
Luego agregamos "plant_id" (distingue entre mayúsculas y minúsculas) al valor del atributo y hacemos clic en "Guardar".

Ahora vaya a la subcuenta "ABC PetroCorp" en SCP y vaya a la pestaña "Seguridad" -> "Confianza". En la ventana "Gestión de confianza", vaya a la pestaña "Proveedor de identidad de la aplicación" y seleccione el IdP asociado con la subcuenta.

En la ventana que se abre, vaya a la pestaña "Atributos" y haga clic en "Agregar atributo basado en aserciones". En el campo "Atributo de aserción" ingresamos el valor "plant_id" (como en el inquilino de SCI), y en el campo "Atributo principal" ingresamos "PLANT_ID" (este valor se transferirá a la aplicación como el código de la planta) - y haga clic en "Guardar".
Por lo tanto, hemos configurado con éxito los atributos en el inquilino de SCI y en el panel de control de SCP para transferirlos a la aplicación.
Paso 5: Verifique la configuración
Emily ahora puede verificar que la configuración del inquilino de SCI (IdP) esté correctamente definida para la subcuenta "ABC PetroCorp" en SCP y para la aplicación que proporciona el proveedor.
Para hacerlo, vaya a la subcuenta "ABC PetroCorp" y diríjase a la aplicación HTML5 "contaminaciónmonitoringui" (se encuentra en la pestaña "Aplicaciones" -> "Suscripciones").

Copie el enlace a la aplicación. Abra una nueva pestaña en el navegador en modo incógnito e inserte un enlace a la aplicación HTML5. Aparecerá una ventana para ingresar a la aplicación, donde se mostrará el nombre indicado en el inquilino de SCI.
Si todo está configurado correctamente, entonces debería poder ingresar a la aplicación bajo los usuarios de "AreaManager" y "PlantSupervisor", indicados en el inquilino de SCI.
En nuestro caso, el gerente de la región es el usuario Johan (P000011), y el jefe de la planta es Smith (P000010). Puede ingresar a la aplicación con estos usuarios utilizando el nombre de usuario o su identificador como inicio de sesión.
Nota: al ingresar a la aplicación en esta etapa, no se mostrarán datos. Esto es normal porque la configuración aún no está completa y el sistema local no está conectado.
Por lo tanto, hemos configurado una conexión de proveedor de identidad (IDP) con nuestra aplicación de monitoreo de contaminación SCP. También importamos usuarios y les asignamos los roles correctos para acceder a la aplicación, nos aseguramos de que la información correcta de la planta se transfiriera a la aplicación.