Registre UDDI Version 3 - Clés d'entité
La spécification UDDI version 3 permet de disposer de plus d'espace pour les clés. Les clés d'entité peuvent correspondre à tout URI (Universal Resource Identifier) conforme au schéma UDDI recommandé. Par ailleurs, selon la règle du registre, les clés peuvent être attribuées par le registre UDDI comme par le diffuseur de l'entité.
Les clés d'entité permettent d'identifier les entités dans un registre UDDI. Chaque entité, par exemple businessEntity, businessService, bindingTemplate ou tModel, possède un identificateur unique généré ou attribué lorsque cette entité est publiée pour la première fois dans le registre UDDI. Une clé doit être unique dans un registre donné. Pour UDDI Version 1 et Version 2, l'espace est limité à un UUID (identificateur unique universel). Pour la spécification UDDI Version 3, les clés d'entité peuvent être tout identificateur URI conforme au schéma UDDI recommandé.
Dans cette même spécification, selon la règle du registre, les clés peuvent être attribuées par le registre UDDI mais également par le diffuseur de l'entité UDDI. Ces différences soulèvent un certain nombre de questions quant au maintien de l'unicité des clés et à la gestion de l'espace affecté aux clés.
Schéma UDDI
Le registre UDDI Version 3 implémente le schéma UDDI conseillé, conformément à la section 4.4 de la spécification UDDI Version 3. (http://uddi.org/pubs/uddi_v3.htm). Ce schéma définit le format des clés, les caractères valides et le concept d'espace de clés.
Dans le registre UDDI Version 3, une clé peut être un quelconque URI et sa longueur est limitée à 255 caractères. Le diagramme ci-après récapitule les différents types de clé selon le schéma de clé UDDI :

- Les clés uuidKey comportent deux jetons : le jeton obligatoire uddi et un jeton <UUID>. Le caractère unique de ces clés est assuré par l'algorithme UUID.
- Les clés de domaine comportent deux jetons : le jeton obligatoire uddi et un nom de domaine. Ces clés permettent de créer des espaces de clés mutuellement exclusifs supplémentaires.
- Les clés dérivées (derivedKey) sont des clés composites basées sur une sous-clé correspondant à toute clé uddiKey et sur un jeton supplémentaire, kss, correspondant à une chaîne spécifique de clé. Le jeton kss peut être affecté par un diffuseur de publications ou être calculé avec un algorithme (UUID).
Unicité des clés et espace de clés racine du registre
Vous pouvez configurer des instances du registre UDDI en tant que registre racine ou en tant que registre affilié.
Un registre racine définit son propre espace de clés racine en définissant son propre générateur de clés racine, ce qui détermine l'espace de clés total géré par le registre. Toutes les clés que le registre génère se trouvent dans cet espace. Si la règle l'autorise, les diffuseurs peuvent créer sous-diviser l'espace de clés en publiant de nouvelles entités tModel générateurs de clés dans le format <rootkeygenerator>:<subdivisionIdentifier>:keygenerator. Ensuite, les diffuseurs peuvent inclure dans les demandes de publication suivantes les clés qu'ils fournissent et qui se trouvent dans leur sous-division d'espace de clés allouée <rootkeygenerator>:<subdivisionIdentifier>:<kss>.
Afin d'éviter les conflits de clés, les registres affiliés doivent définir leur propre générateur de clés racine en soumettant tout d'abord une demande tModel:keygenerator au registre racine auquel ils veulent être affiliés, puis en utilisant cette sous-division de l'espace de clés du registre racine comme générateur de clés racine. Ce processus permet d'éviter les conflits entre les clés qui sont générées ou acceptées par un registre affilié et d'autres clés de l'espace de clés du registre racine.
Des règles simples permettent de préserver l'unicité des clés. Le registre génère de nouvelles clés uniquement dans l'espace de clés défini par son propre générateur de clés racine. Le registre accepte uniquement les clés définies par un diffuseur de publications et qui se trouvent dans les sous-divisions de l'espace de clés détenu par le diffuseur (suite à l'aboutissement d'une précédente demande de publication tModel tModel:keygenerator).
Un exemple simple de registre racine privé
avec un générateur de clé racine :
uddi:aPrivateRegistryKeySpaceIdentifier:keygenerator
génère des clés d'entité dont le format est :
uddi:aPrivateRegistryKeySpaceIdentifier:<uuid>
selon la règle, accepte des requêtes tModel:keygenerator provenant de diffuseurs pour
les sous-divisions de ‘niveau supérieur’ de format :
uddi:aPrivateRegistryKeySpaceIdentifier:aPublisherSubdivisionIdentifier:
keygenerator
Publication de demandes tModel:keygenerator pour les sous-divisions d'un espace de clés
Selon la règle, un diffuseur de publication peut soumettre une demande de sous-division de niveau supérieur de l'espace de clés du registre racine pour son usage personnel. La règle peut indiquer si le registre prend en charge les clés fournies par les diffuseurs de publication et si les autorisations utilisateur d'un diffuseur particulier lui permettent de soumettre des demandes d'espace de clés.
Tout comme il peut créer des sous-divisions de niveau supérieur dans l'espace de clés du registre racine, un diffuseur de publication peut également créer des sous-divisions supplémentaires dans cet espace de clés.
uddi:aPrivateRegistryKeySpaceIdentifier:aPublisherSubdivisionIdentifier:
a:keygenerator
Pour qu'une demande de sous-division aboutisse, elle doit être soumise par le diffuseur de publication qui a précédemment demandé et qui possède l'entité tModel correspondant à la sous-division précédente. Dans l'exemple précédent, ce diffuseur de publications est uddi:aPrivateRegistryKeySpaceIdentifier:aPublisherSubdivisionIdentifier:keygenerator).
Publication avec une clé fournie par le diffuseur de publication
Après avoir demandé et obtenu une sous-division de l'espace de clés d'un registre racine, le diffuseur de publication doit établir et gérer son propre schéma pour garantir l'unicité, au sein de la sous-division, des clés qui ont été générées pour utilisation en tant que clés fournies par le diffuseur dans les demandes de publication à venir.
Un schéma est valide lorsqu'il génère des clés dérivées uniques dans la sous-division d'espace de clés attribuée, avec inclusion, par exemple, d'un indice numérique (incrémenté) unique.
uddi:aPrivateRegistryKeySpaceIdentifier:aPublisherSubdivisionIdentifier:
a:keygenerator
les clés valides sont :
uddi:aPrivateRegistryKeySpaceIdentifier:aPublisherSubdivisionIdentifier:a:1
uddi:aPrivateRegistryKeySpaceIdentifier:aPublisherSubdivisionIdentifier:a:2