Access Control – Instance Role

En esta lección ponemos en práctica lo que hemos aprendido en la clase CDS Access Control – Conceptos. Utilizamos la siguiente vista CDS que publica cuatro elementos, donde queremos restringir los datos que devuelve la vista creando un objeto Access Control. Un aspecto importante es la anotación @AccessControl.autorizationCheck de la vista CDS que habilita o deshabilita el control de los objetos Access Control. Para permitir el control de los datos por los objetos Access Control asignamos el valor #CHECK.
Antes de crear el objeto Access Control realizamos un test con Data Preview para visualizar los datos que devuelve la vista. 
Procedimiento para crear el objeto Access Control.

  1. En Eclipse, en ADT utilizamos la opción del menú contextual que se habilita al pulsar el botón derecho del ratón sobre el nombre del paquete de desarrollo. Creamos el objeto Access Control de la carpeta Core Data Services.
  2. Una vez asignado el nombre, descripción y orden de transporte seguimos y seleccionamos de la plantilla de código la “Define Instance Role”.
  3. Implementamos el código del Access control. Utilizamos dos formas distintas para filtrar los datos que va a devolver la vistas CDS: la primera utilizando un objeto de autorización con la instrucción ASPECT PFCG_AUTH para el elemento Plant, en este caso la sintaxis obliga a asignar el nombre del elemento entre paréntesis (Plant); en la segunda forma filtramos por el valor R10 los datos del elemento PurchasingGroup. Otro aspecto importante es la anotación @MappingRole que mapea el rol al usuario que consulta la vista CDS en tiempo de ejecución.
  4. Realizamos de nuevo un test con Data Preview para visualizar los datos que devuelve la vista CDS. Como puede observar, la vista tiene un objeto de tipo Access Control que controla los datos devueltos por la entidad.
  5. Lo mismo se aplica con las sentencias Open SQL. En un programa ejecutable realizamos un SELECT leyendo los datos de la vista CDS
  6. Ejecutamos el programa que va a mostrar en una ventana los datos.

Como podemos ver, el resultado es el mismo: hemos controlado a través de los objetos de tipo Access Control los datos que devuelve una entidad CDS por las lecturas Open SQL. La misma información se devuelve por las lecturas realizadas por los framework SADL.
Aspecto importante.
Cuando se accede indirectamente a las vistas de CDS utilizadas como fuentes de datos en diferentes entidades de CDS, no se produce ningún control de acceso implícito. Esto significa que los métodos y roles de CDS utilizados para acceder a las entidades de CDS deben planificarse cuidadosamente al modelar una aplicación. Por ejemplo, los accesos realizados en entidades de CDS sin roles de CDS asociados pueden empaquetarse en vistas de CDS con roles asociados.
 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *