Identifiants, jetons et appels distants
Identifiants
Il existe trois sortes d'identifiants :
- les DispatcherIds de la forme glasnost://hostname, par exemple glasnost://glasnost.entrouvert.org ;
- les ServerIds, de la forme glasnost://hostname/role, par exemple glasnost://glasnost.entrouvert.org/people ;
- les ObjectIds, de la forme glasnost://hostname/role/integer, par exemple glasnost://glasnost.entrouvert.org/people/5.
Jetons
ApplicationToken
Chaque application Glasnost (serveur ou client) se voit attribuer un jeton, l'ApplicationToken, lorsqu'elle se lance et qu'elle s'identifie auprès du Dispatcher.
Cette attribution se fait par la fonction getApplicationToken du Dispatcher (noter que cet appel se fait automatiquement lors du premier appel d'une fonction distante, il est donc inutile de le faire au début du programme).
Un ApplicationToken est une string constituée uniquement de chiffres aléatoires, par exemple 1234567890, qui est générée par la fonction servers/Dispatcher/Dispatcher.py/getApplicationToken().
Une fois qu'une application s'est vu attribuer un ApplicationToken, ce jeton est systématiquement passé en paramètre lors de tous les appels de fonctions distantes.
UserToken
Un UserToken est attribué à un utilisateur à chaque fois qu'il s'identifie auprès de l'AuthenticationServer.
Un UserToken a la forme glasnost://hosname/people/random_number. Par exemple glasnost://localhost/people/1234567890.
Le UserToken est calculé par la fonction servers/AuthenticationServer/AuthenticationServer.py/getUserIdAndTokenXmlRpc()
Attention, il ne faut pas confondre un UserToken avec un UserId (qui est un ObjectId avec un role = 'people'), bien qu'ils aient la même syntaxe. Par exemple, mon UserId sur www.entrouvert.org est glasnost://www.entrouvert.org/people/1 alors qu'à chaque fois que je m'identifierais j'aurais un UserToken différent ayant la forme glasnost://www.entrouvert.org/people/1234567890
ElectionToken et VoteToken
- ElectionToken : glasnost://hostname/elections/randomnumber
- VoteToken : glasnost://hostname/votes/randomnumber
SessionToken
- Les SessionToken sont utilisés pour retrouver la session de l'utilisateur quand il se promène sur le site après s'être identifié. Ce SessionToken a la forme d'une string constituée de chiffres aléatoires. Il est soit stocké dans un cookie, soit mis dans l'url quand l'utilisateur désactive les cookies (par exemple
Paramètres des appels distants
Tous les appels distants ont au minimum trois paramètres :
- virtualServerId
- clientToken
- userToken.
Le virtualServerId est un ServerId. Il indique de quel serveur virtuel on parle. Par exemple, supposons qu'on ait un serveur qui gère à la fois les site www.entrouvert.org et www.entrouvert.com. Si on veut récupérer le nombre de personnes ayant un compte sur www.entrouvert.org, il faut appeler la fonction getObjectsCount en lui passant comme virtualServerId le ServerId suivant : glasnost://wwww.entrouvert.org/people.
Le clientToken est l'ApplicationToken de l'application qui a lancé l'appel distant. Cela permet éventuellement au serveur de déterminer si l'application appelante a bien le droit de faire cet appel.
Le userToken est le jeton de l'utilisateur qui a lancé l'appel distant. Cela permet au serveur de vérifier que l'utilisateur a bien le droit de lancer cet appel.
Note : Tous les appels distants ont ces 3 paramètres, mais ceux-ci n'apparaissent pas, car ils sont ajoutés et enlevés automatiquement par l'API Glasnost.