Modificateurs d'accès
Les modificateurs d'accès sont une nouvelle construction introduite dans ThingWorx 9.5 pour permettre aux développeurs d'identifier les artefacts (des entités et leurs caractéristiques) qui sont protégés contre toute utilisation externe et ceux qui peuvent être consommés par les utilisateurs finaux qui souhaitent y ajouter une couche de personnalisation ou de développement, y compris étendre leurs fonctionnalités, les référencer et les réutiliser. Il est également possible d'autoriser l'utilisation externe d'entités tout en protégeant certaines de leurs caractéristiques.
L'accès aux artefacts protégés n'est pas autorisé via les contrôles d'exécution au moment de l'accès pour utilisation. La plupart des relations définies de manière formelle sont validées lors de la création. Toutefois, l'utilisation au sein de blocs de code de services et d'applications composites ne sera vérifiée que lors de l'exécution. Les contrôles d'exécution ne peuvent pas être complètement exempts d'erreurs et doivent être considérés comme une aide pour éviter une utilisation incorrecte. La déclaration du modificateur d'accès reste la source de vérité et les développeurs doivent accepter de ne pas utiliser les artefacts protégés concernés par les modificateurs d'accès déclarés. Ces artefacts protégés peuvent être modifiés ou supprimés, et toute utilisation non conforme qui en dépend pourra ultérieurement commencer à échouer à tout moment, sans préavis.
Les modificateurs d'accès spécifient l'étendue de l'accessibilité des entités et des caractéristiques.
Dans ThingWorx 9.5.0, le modificateur d'accès est pris en charge pour les entités et caractéristiques suivantes :
Entités
Caractéristiques
Objets
Modèles d'objet
Forme d'objet
Groupes d'objets
Formes de données
Réseaux
Connexions industrielles
Connecteurs d'intégration
Planificateurs
Minuteries
Tableaux de bord
Menus
Média
Définitions de style
Thèmes stylistiques
Définitions d'état
Tables de données
Flux
Flux de valeurs
Blogs
Wikis
* 
Toutes les classes qui étendent les entités prennent également en charge le modificateur d'accès.
Propriété
Service
Table de configuration
* 
D'autres caractéristiques héritent du modificateur d'accès de l'entité.
Les entités suivantes ne prennent pas en charge le modificateur d'accès :
Projet
Tag de modèle
Notification
Tag de données
Fournisseur de persistance
Groupes d'utilisateurs
Utilisateurs
Organisations
Clés d'application
Services d'annuaire
Authentificateurs
Application composite
Modèle d'application composite
Modèle maître
Gadget
Tables de localisation
Les modificateurs d'accès sont classés comme suit :
AUCUN : l'absence d'étendue est considérée comme une étendue publique et peut s'appliquer à une entité ou à des caractéristiques. Tout le monde peut accéder aux entités ou aux caractéristiques ayant une étendue publique.
Tous les utilisateurs peuvent accéder aux entités dont l'étendue est NONE.
Une caractéristique dont l'étendue est NONE hérite du modificateur d'accès de l'entité auquel elle appartient.
PRIVE : cette étendue peut être appliquée à une entité ou à des caractéristiques et n'est accessible qu'au sein du projet.
RESTREINT : cette étendue peut s'appliquer à une entité ou à des caractéristiques. Elle agit de la même manière que l'étendue privée en ajoutant ces projets, avec l'espace de noms et sa hiérarchie enfant, à la liste accessible. Par exemple, RESTRICTED[ptc.dpm.jobOrder] est accessible pour toutes les entités de l'espace de noms ptc.dpm.jobOrder et des espaces de noms enfants, mais est privé pour toutes les autres entités.
* 
Dans ThingWorx 9.5.0, un seul espace de noms (et ses enfants, implicitement) peut être ajouté si l'étendue est Restreint.
Interne : cette étendue ne peut s'appliquer qu'aux caractéristiques, qui deviennent alors accessibles uniquement au sein de cette entité.
* 
Les affectations d'étendue sont persistantes pour l'entité et les caractéristiques.
L'étendue peut être appliquée à toutes les entités prises en charge, quel que soit leur type de projet. Si l'espace de nom n'est pas affecté à un projet, seules les étendues Aucune ou Privée peuvent être appliquées aux entités, et Aucune, Privée ou Interne aux caractéristiques.
* 
Toutes les entités et caractéristiques auront une étendue NONE (absente) après la migration vers ThingWorx 9.5.
Il n'est pas possible de définir une étendue plus importante au niveau des caractéristiques. Par exemple, si l'étendue de l'entité est PRIVE, les caractéristiques ne peuvent pas avoir une étendue AUCUNE.
Pour les objets associés à une entité possédant une étendue définie sur AUCUN, l'étendue des objets de la liste RESTREINT autorisée au niveau des caractéristiques doit être plus large, égale ou plus restrictive. Et pour les entités avec d'autres étendues, l'étendue des objets de la liste RESTREINT autorisée au niveau des caractéristiques doit être égale ou plus restrictive.
Conditions requises pour la création d'une étendue
Une étendue ne doit contenir que des lettres majuscules.
Configuration d'une étendue par défaut pour les projets de bloc de construction
Une étendue par défaut peut être configurée sur des projets de type bloc de construction. Lors de la création d'une entité, cette configuration est utilisée par défaut pour l'affectation de l'étendue.
L'étendue par défaut d'un projet peut être mise à jour lors de l'exécution via Composer ou un appel REST. Les nouvelles entités créées dans ce projet hériteront de cette étendue. L'étendue des entités existantes ne change pas si cette configuration est modifiée. L'étendue d'une entité peut être modifiée lors de l'exécution.
* 
Cette configuration s'applique uniquement au paramètre d'étendue lorsque les entités sont créées avec Composer.
Définition d'un modificateur d'accès sur une entité ou des caractéristiques
Un modificateur d'accès peut être affecté à une entité ou à des caractéristiques de plusieurs manières :
en sélectionnant l'étendue dans la liste Etendue de l'onglet Informations générales de Composer ;
au moyen d'annotations Java ;
en important un fichier XML ou une extension ;
en exécutant le service SetAccessModifier sous la ressource EntityServices. Ce service peut être utilisé pour attribuer un modificateur d'accès à plusieurs entités et caractéristiques simultanément.
* 
Dans ThingWorx 9.5.0, la définition d'un modificateur d'accès à partir de l'appel aux services de création dans la ressource EntityServices n'est pas prise en charge. Par exemple, les services de création tels que CreateThing, CreateThingShape, CreateNetwork, etc. n'acceptent pas le modificateur d'accès comme argument.
* 
Lors de la création d'une entité, les modificateurs d'accès ne sont pas enregistrés dans les journaux d'audit.
* 
Des modificateurs d'accès peuvent être ajoutés aux caractéristiques au moyen d'annotations Java. Toutefois, pour ajouter des modificateurs d'accès au niveau des entités, nous ne prenons pas en charge les annotations. Il est possible d'ajouter des modificateurs d'accès au niveau des entités par une importation XML.
Affichage d'un modificateur d'accès défini sur une entité ou des caractéristiques
En exécutant le service GetAspects sous des ressources EntityServices, vous pouvez afficher le modificateur d'accès défini sur une entité ou des caractéristiques.
Filtrage des entités par modificateur d'accès
Vous pouvez filtrer les entités en fonction de leur étendue en utilisant dans Composer.
Journalisation des modificateurs d'accès
Si un utilisateur crée, met à jour ou supprime les modificateurs d'accès définis sur une entité ou des caractéristiques, les audits sont conservés dans le Journal d'audit.
Pour plus d'informations, consultez la rubrique Sous-système d'audit.
* 
Les modifications apportées à une entité ou une caractéristique par une autre entité, un membre ou des appels de service ne sont pas auditées.
Déplacement d'entités d'un projet vers un autre
Lorsque vous déplacez une entité d'un projet à un autre, l'étendue de l'entité, les propriétés, les services et les tables de configuration restent inchangés si l'entité ou la caractéristique source possède l'étendue Aucune ou Privée.
* 
Un espace de noms est valide s'il est identique à celui du projet cible ou plus vaste que celui-ci.
Un espace de noms n'est pas valide s'il est différent de celui du projet cible ou plus restreint que celui-ci.
Les différents scénarios qui se produisent lors du déplacement d'entités avec une étendue Restreint d'un espace de noms à un autre sont répertoriés ci-dessous :
Scénario 1
Si l'entité possède un espace de noms valide, aucune modification n'est apportée à l'étendue.
Par exemple, lorsqu'une entité avec une étendue RESTRICTED [dpm.sco.jobOrder] est déplacée vers un projet avec un espace de noms (dpm.sco.jobOrder.scp.jobOrder12), l'étendue de cette entité reste la même.
Scénario 2
Si l'entité comporte un espace de noms non valide et que le projet cible ne possède pas d'étendue par défaut, l'étendue de l'entité devient Privé.
Par exemple :
Lorsqu'un objet avec une étendue RESTRICTED[dpm.sco.jobOrder.scp.jobOrder12] est déplacé vers un projet avec un espace de noms (abc.xyz.pqr), l'étendue de l'objet est remplacée par PRIVATE[abc.xyz.pqr].
Scénario 3
Si l'entité possède un espace de noms non valide et que le projet cible utilise par défaut une étendue Restreint avec exmptList, l'étendue de l'entité est remplacée par l'étendue par défaut du projet cible.
Par exemple :
Lorsqu'un objet avec une étendue RESTRICTED[dpm.sco.jobOrder.scp.jobOrder12] est déplacé vers un projet utilisant une étendue par défaut RESTRICTED[abc.xyz.pqr], l'étendue de cet objet est remplacée par RESTRICTED[abc.xyz.pqr].
Lorsqu'un objet avec une étendue RESTRICTED[dpm.sco.jobOrder.scp.jobOrder12] est déplacé vers un projet utilisant une étendue par défaut RESTRICTED[dpm.sco.jobOrder], l'étendue de cet objet est remplacée par RESTRICTED[dpm.sco.jobOrder.scp.jobOrder12].
Scénario 4
Si l'entité possède un espace de noms non valide et que le projet cible utilise par défaut une étendue Privé, l'étendue de l'entité est remplacée par l'étendue par défaut du projet cible.
Par exemple :
Lorsqu'un objet avec une étendue RESTRICTED[dpm.sco.jobOrder.scp.jobOrder12] est déplacé vers un projet utilisant une étendue par défaut PRIVATE[dpm.sco.jobOrder], l'étendue de cet objet est remplacée par PRIVATE[dpm.sco.jobOrder].
Lorsqu'un objet avec une étendue RESTRICTED[dpm.sco.jobOrder.scp.jobOrder12] est déplacé vers un projet utilisant une étendue par défaut PRIVATE[abc.xyz.pqr], l'étendue de cet objet est remplacée par PRIVATE[abc.xyz.pqr].
Scénario 5
Si l'entité comporte un espace de noms non valide et que le projet cible ne possède pas d'espace de noms, l'étendue de l'entité devient Privé.
Par exemple, lorsqu'un objet avec une étendue RESTRICTED [dpm.sco.jobOrder.scp.jobOrder12] est déplacé vers un projet sans espace de noms, l'étendue de l'objet est remplacée par PRIVATE.
* 
Si les modifications de l'RESTRICTED au niveau de l'entité et l'RESTRICTED des caractéristiques ne sont pas valides, l'étendue des caractéristiques devient Hérité.
* 
Le déplacement d'entités est journalisé en tant que Débogage dans le journal de l'application.
Limitations à prendre en compte concernant les modificateurs d'accès
Voici les limitations qui s'appliquent aux modificateurs d'accès.
Les caractéristiques héritées ne s'affichent pas dans la section Moi/Entités lors de la création d'un nouveau service ou de la modification d'un service existant.
Les propriétés privées d'un autre projet sont visibles lors de la création de liaisons de propriétés.
Les applications composites ne possèdent pas de modificateurs d'accès.
Si votre nom d'entité comporte un caractère spécial et que des vérifications de modificateur d'accès ne sont pas effectuées pendant l'exécution, procédez comme suit :
1. Codez le nom au format Base64.
2. Ajoutez un suffixe au format encodedname/b64.
3. Transmettez cette valeur comme twx-referrer-entity lors de l'utilisation des API REST.
Si un nom d'entité comporte des caractères différents de ceux qui sont mentionnés dans le fichier validation.properties, les vérifications des modificateurs d'accès ne seront pas effectuées pendant l'exécution. Vous pouvez ajouter des caractères au fichier en configurant le fichier validation.properties. Ajoutez ou modifiez les valeurs de Validator.HTTPHeaderValue. Pour plus d'informations, consultez la rubrique Configuration des paramètres du validateur ESAPI.
Est-ce que cela a été utile ?