Modificadores de acceso
Los modificadores de acceso son una nueva construcción que se ha introducido en ThingWorx 9.5 para permitir a los desarrolladores identificar los artefactos (entidades y sus características) que están protegidos del uso externo y aquellos que los usuarios finales pueden consumir para su personalización o desarrollo posterior, incluida la extensión, referenciación y reutilización. También es posible abrir entidades para uso externo con algunas de las características que estén protegidas.
No se permitirá el acceso a los elementos protegidos mediante verificaciones en tiempo de ejecución cuando el acceso esté disponible para su uso. La mayoría de las relaciones formalmente definidas se validan en el momento de crearse. Sin embargo, el uso dentro de los bloques de código de servicios y mashups solo se verificará en tiempo de ejecución. Las verificaciones en tiempo de ejecución no pueden estar completamente libres de errores y deben tratarse como una ayuda para evitar un uso incorrecto. La declaración de modificador de acceso sigue siendo la fuente de veracidad y los desarrolladores deben dejar de utilizar los elementos protegidos en cuestión, lo que infringe los modificadores de acceso declarados. Estos elementos protegidos se pueden cambiar o quitar, y cualquier uso dependiente que los infrinja podría empezar a fallar en cualquier momento futuro sin previo aviso.
Un modificador de acceso especifica el ámbito de accesibilidad para entidades y características.
En ThingWorx 9.5.0, el modificador de acceso se soporta para las siguientes entidades y características:
Entidades
Características
Cosas
Plantillas de cosa
Definición de cosa
Grupos de cosas
Definiciones de datos
Redes
Conexiones industriales
Conectores de integración
Instancias de Scheduler
Temporizadores
Tableros
Menús
Medios
Definiciones de estilo
Temas de estilo
Definiciones de estado
Tabla de datos
Flujos
Flujos de valor
Blogs
Wikis
* 
Todas las clases que extienden las entidades también soportan el modificador de acceso.
Propiedad
Servicio
Tabla de configuración
* 
Otras características heredan el modificador de acceso de la entidad.
Las siguientes entidades no soportan el modificador de acceso:
Proyecto
Etiqueta de modelo
Notificación
Etiqueta de datos
Proveedor persistente
Grupos de usuarios
Usuarios
Organizaciones
Claves de aplicación
Servicios de directorio
Autenticadores
Mashup
Plantilla de mashup
Principal
Gadget
Tablas de localización
Los modificadores de acceso se clasifican en lo siguiente:
NINGUNO: la ausencia de ámbito se trata como un ámbito público y se puede aplicar a una entidad o características. Todos los usuarios pueden acceder a entidades o características de ámbito público.
Todo el mundo puede acceder a las entidades de ámbito NONE.
La característica con el ámbito NONE hereda el modificador de acceso de la entidad a la que pertenece.
PRIVADO: este ámbito se puede aplicar a una entidad o característica y solo se puede acceder desde el proyecto.
RESTRINGIDO: este ámbito se puede aplicar a una entidad o características. Actúa como ámbito privado y añade los proyectos con el espacio de nombres y su jerarquía de hijos a la lista accesible. Por ejemplo, RESTRICTED[ptc.dpm.jobOrder] es accesible para todas las entidades de espacio de nombres y espacios de nombres hijo ptc.dpm.jobOrder, pero es privado para todas las demás entidades.
* 
En ThingWorx 9.5.0, solo se puede añadir un espacio de nombres (+hijos, lo que es implícito) para el ámbito restringido.
Interno: este ámbito solo se puede aplicar a las características; ya que solo es posible acceder a estas dentro de dicha entidad.
* 
Las asignaciones de ámbito se almacenan para la entidad y las características.
El ámbito se puede aplicar para todas las entidades soportadas independientemente de su tipo de proyecto. Si el espacio de nombres no está asignado a un proyecto, solo se pueden aplicar los ámbitos Ninguno o Privado en las entidades y las características Ninguno, Privado o Interno.
* 
Todas las entidades y características tendrán el ámbito NONE (ausente) después de migrar a ThingWorx 9.5.
El nivel de características no puede tener un ámbito más amplio. Por ejemplo, si la entidad tiene el ámbito PRIVADO, las características no pueden tener NINGUNO como ámbito.
Para los objetos asociados a una entidad tiene el ámbito NONE, el ámbito para los objetos de la lista RESTRICTED permitidos en el nivel de característica debe ser más amplio, igual o más estrecho. Y para las entidades con otros ámbitos, el ámbito para los objetos de la lista RESTRICTED permitidos en el nivel de características debe ser igual o restringido.
Requisitos para crear el ámbito
Un ámbito debe incluir solo letras mayúsculas.
Configuración de un ámbito por defecto para proyectos de bloque de creación
Un ámbito por defecto se puede configurar en el tipo de bloque de creación de proyectos. Al crear una nueva entidad, esta configuración se utiliza como asignación por defecto para el ámbito.
El ámbito por defecto de un proyecto se puede actualizar en tiempo de ejecución a través de Composer o una llamada de REST. Las entidades nuevas que se crean en este proyecto heredarán este ámbito. El ámbito de las entidades existentes no se ve afectado por el cambio de esta configuración. El ámbito de una entidad se puede cambiar en tiempo de ejecución.
* 
Esta configuración solo se aplica a la configuración de ámbito cuando se utiliza Composer para crear entidades.
Configuración de un modificador de acceso en una entidad o características
Un modificador de acceso se puede asignar a una entidad o características de las siguientes maneras:
Mediante la selección del ámbito de la lista Ámbito de la ficha Información general en Composer.
Mediante anotaciones de Java
Mediante la importación de extensión o XML.
Mediante la ejecución del servicio SetAccessModifier en el recurso EntityServices. Este servicio se puede utilizar para definir un modificador de acceso en varias entidades y características en bloque.
* 
En ThingWorx 9.5.0, no se soporta la definición de un modificador de acceso desde la llamada de creación de servicios en el recurso EntityServices. Por ejemplo, si se crean servicios como CreateThing, CreateThingShape, CreateNetwork, etc., no se acepta el modificador de acceso como argumento.
* 
Durante la creación de una entidad, los modificadores de acceso no se registran en los registros de auditoría.
* 
Se pueden añadir modificadores de acceso a las características a través de anotaciones java. Sin embargo, para añadir modificadores de acceso en el nivel de entidad no hay soporte para anotaciones. Los modificadores de acceso se pueden añadir en el nivel de entidad mediante la importación de XML.
Visualización de un conjunto de modificadores de acceso en una entidad o características
Al ejecutar el servicio GetAspects en los recursos EntityServices, se puede ver el modificador de acceso definido en cualquier entidad o característica.
Filtrado de entidades mediante modificadores de acceso
Las entidades se pueden filtrar en función del ámbito mediante en Composer.
Registro de modificadores de acceso
Si un usuario crea, actualiza o borra los modificadores de acceso definidos en una entidad o características, las auditorías se conservan en el Registro de auditoría.
Para obtener más información, consulte Subsistema de auditoría.
* 
Las modificaciones de una entidad o característica por parte de otra entidad, miembro o llamadas de servicio no se auditan.
Traslado de entidades de un proyecto a otro proyecto
Cuando se mueve una entidad entre proyectos, el ámbito de la entidad, las propiedades, los servicios y las tablas de configuración permanecen inalterados si la entidad o característica de origen tiene un ámbito Ninguno o Privado.
* 
Un espacio de nombres que es igual o más amplio que el espacio de nombres del proyecto de destino es un espacio de nombres válido.
Un espacio de nombres que no es el mismo o más estrecho que el espacio de nombres del proyecto de destino es un espacio de nombres no válido.
A continuación se muestran los distintos escenarios que se producen al mover entidades con ámbito restringido de un espacio de nombres a otro:
Escenario 1
Si la entidad tiene un espacio de nombres válido, no se produce ningún cambio en el ámbito.
Por ejemplo, cuando una entidad con ámbito RESTRICTED [dpm.sco.jobOrder] se mueve a un proyecto con espacio de nombres (dpm.sco.jobOrder.scp.jobOrder12), el ámbito de la entidad sigue siendo el mismo.
Escenario 2
Si la entidad tiene un espacio de nombres no válido y el proyecto de destino no tiene un ámbito por defecto, el ámbito de la entidad cambia a privado.
Por ejemplo:
Cuando una cosa con ámbito RESTRICTED[dpm.sco.jobOrder.scp.jobOrder12] se mueve a un proyecto con espacio de nombres (abc.xyz.pqr), el ámbito de la cosa cambia a PRIVATE[abc.xyz.pqr].
Escenario 3
Si la entidad tiene un espacio de nombres no válido y el proyecto de destino tiene un ámbito por defecto restringido con exmptList, el ámbito de la entidad cambia al ámbito por defecto del proyecto de destino.
Por ejemplo:
Cuando una cosa con ámbito RESTRICTED[dpm.sco.jobOrder.scp.jobOrder12] se mueve a un proyecto con ámbito por defecto RESTRICTED[abc.xyz.pqr], el ámbito de la cosa cambia a RESTRICTED[abc.xyz.pqr].
Cuando una cosa con ámbito RESTRICTED[dpm.sco.jobOrder.scp.jobOrder12] se mueve a un proyecto con ámbito por defecto RESTRICTED[dpm.sco.jobOrder], el ámbito de la cosa cambia a RESTRICTED[dpm.sco.jobOrder.scp.jobOrder12].
Escenario 4
Si la entidad tiene un espacio de nombres no válido y el ámbito por defecto del proyecto de destino es privado, el ámbito de la entidad cambia al ámbito por defecto del proyecto de destino.
Por ejemplo:
Cuando una cosa con ámbito RESTRICTED[dpm.sco.jobOrder.scp.jobOrder12] se mueve a un proyecto con ámbito por defecto PRIVATE[dpm.sco.jobOrder], el ámbito de la cosa cambia a PRIVATE[dpm.sco.jobOrder].
Cuando una cosa con ámbito RESTRICTED[dpm.sco.jobOrder.scp.jobOrder12] se mueve a un proyecto con ámbito por defecto PRIVATE[abc.xyz.pqr], el ámbito de la cosa cambia a PRIVATE[abc.xyz.pqr].
Escenario 5
Si la entidad tiene un espacio de nombre no válido y el proyecto de destino no tiene ningún espacio de nombres, el ámbito de la entidad cambia a Privado.
Por ejemplo, cuando una cosa con ámbito RESTRICTED [dpm.sco.jobOrder.scp.jobOrder12] se mueve a un proyecto sin espacio de nombres, el ámbito de la cosa cambia a PRIVATE.
* 
Si los cambios RESTRICTED se producen en el nivel de entidad y las características RESTRICTED no son válidas, el ámbito de las características cambia a Heredado.
* 
El movimiento de entidades se registra como Depurar en el registro de aplicación.
Limitaciones con modificadores de acceso
A continuación se indican las limitaciones con los modificadores de acceso.
Las características heredadas no se mostrarán en la sección Yo/Entidades al crear un nuevo servicio o al editar un servicio existente.
Las propiedades privadas de otro proyecto están visibles al crear enlaces de propiedad.
Los mashups no tienen modificadores de acceso.
Si el nombre de entidad tiene un carácter especial y las verificaciones del modificador de acceso no se realizan durante el tiempo de ejecución, siga los siguientes pasos:
1. Codificar el nombre con el formato Base64.
2. Añadir un sufijo en el formato, nombrecodificado/b64.
3. Pasar este valor como twx-referrer-entity al utilizar las API de REST.
Si algún nombre de entidad contiene caracteres aparte de los mencionados en el fichero validation.properties, las verificaciones del modificador de acceso no se realizarán durante el tiempo de ejecución. Se pueden añadir caracteres al fichero configurando el fichero validation.properties. Añada o modifique los valores de Validator.HTTPHeaderValue. Para obtener más información, consulte Configuración de la configuración del validador ESAPI.
¿Fue esto útil?