Description de la charge

Les données concrètes traitées par le service REST distant pour PUMA, à savoir les attributs et leurs valeurs, les profils d'utilisateur et de groupes, et les listes d'appartenance, sont décrites par un document de schéma XML. Ce schéma est normatif pour tous les types de format d'entrée et de sortie. Par conséquent, dans le cas de représentations qui ne sont pas basées sur XML, comme JSON, vous devez appliquer une transformation appropriée.

Pour consultez le document du schéma complet, reportez-vous à la rubrique contenant le document de schéma XML du service PUMA REST.

Les sections suivantes décrivent en détail les parties spécifiques du schéma XML.

Attributs et valeurs d'attributs

L'élément attribute est utilisé pour représenter une définition d'attribut lorsqu'il est utilisé seul ou encore une instance de l'attribut incluant une ou plusieurs valeurs lorsqu'il est utilisé dans un profil d'utilisateur ou de groupe. L'attribut est identifié par son attribut obligatoire name et peut éventuellement définir son type et inclure un indicateur spécifiant si des valeurs multiples sont admises. Par convention, les valeurs de type d'attribut doivent correspondre à celles définies dans la spécification des types de données XSD. Pour plus de détails, voir la section sur les types de données. Les valeurs d'attribut sont représentées sous forme d'éléments distincts dénommés attributeValue pouvant contenir des données caractère arbitraires.
<xs:element name="attribute">
      <xs:complexType>
         <xs:sequence>
            <xs:element ref="attributeValue" minOccurs="0" maxOccurs="unbounded"/> 
         </xs:sequence>
            <xs:attribute name="name" type="xs:string" use="required"/>
            <xs:attribute name="type" type="xs:string" use="optional"/>
            <xs:attribute name="multiValued" type="xs:boolean" use="optional" default="false"/>
      </xs:complexType>
   </xs:element>
<xs:element name="attributeValue" type="xs:string">
Un exemple de définition d'attribut autonome avec sa représentation XML ordinaire figure ci-dessous :
<um:attribute xmlns:um="um" name="ibm-hobby" type="xs:string" multiValued="true"/> 
L'utilisation de l'élément attribute pour représentation des valeurs d'attribut est décrite dans la section suivante.

Données de profil

Les profils sont représentés dans un élément profile devant définir le type de profil et pouvant recevoir uniquement les valeurs user ou group dans l'attribut. Une séquence d'éléments attribute de longueur arbitraire peut être encapsulée dans l'élément profile. Dans ce cas, ces éléments attribute doivent contenir des éléments de valeur d'attribut.
<xs:element name="profile">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="attribute" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:attribute name="type" type="profileType" use="required"/>
        <xs:attribute name="identifier" type="xs:string" use="optional"/>
    </xs:complexType>
</xs:element>
<xs:simpleType name="profileType">
    <xs:restriction base="xs:string">
        <xs:enumeration value="user"/>
        <xs:enumeration value="group"/>
    </xs:restriction>
</xs:simpleType>
Un exemple de profil utilisateur conforme à ce schéma figure ci-dessous :
<um:profile type="user" identifier="uid=bob,o=defaultWIMFileBasedRealm">
    <um:attribute name="uid" type="xs:string" multiValued="false">
        <um:attributeValue>bob</um:attributeValue>
    </um:attribute>
    <um:attribute name="cn" type="xs:string" multiValued="false">
        <um:attributeValue>Bob</um:attributeValue>
    </um:attribute>
    <um:attribute name="ibm-hobby" type="xs:string" multiValued="true">
        <um:attributeValue>Running</um:attributeValue>
        <um:attributeValue>Baseball</um:attributeValue>
    </um:attribute>
</um:profile>

Liste d'appartenance à des groupes

La liste d'appartenance à des groupes recense tous les groupes dont est membre l'utilisateur ou le groupe spécifique. Cette liste utilise l'élément spécial profileRef afin de représenter une référence à un profil. Cet élément contient une référence à la ressource décrite par le profil et peut éventuellement contenir l'élément de profil complet lui-même. Cette action est réalisée à l'aide de l'attribut obligatoire uri qui doit contenir le chemin URL du profil, par exemple : /um/secure/groups/profiles/myGroupId. Les éléments de référence au profil sont alors agrégés dans une liste au sein de l'élément groupMembershipList. La liste pointe vers les groupes dont l'utilisateur ou le groupe défini par l'URL de ressource est membre.
<xs:element name="profileRef">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="profile" minOccurs="0∾" maxOccurs="1"/>
        </xs:sequence>
        <xs:attribute name="uri" type="xs:string" use="required"/>
    </xs:complexType>
</xs:element>
<xs:element name="groupMembershipList">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="profileRef" maxOccurs="unbounded" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>
La liste suivante présente un exemple de représentation XML d'appartenance à des groupes basé sur le schéma XML :
<um:groupMembershipList>
    <um:profileRef uri="/wps/um/secure/groups/profiles/8eAeK . . . . . BQIMK5D1"/>
    <um:profileRef uri="/wps/um/secure/groups/profiles/8eAeK . . . . . FADFJABC"/>
</um:groupMembershipList>