2 Authentification
Quelle que soit l'opération a effectuer, l'authentification est une étape préalable avant tout dialogue fonctionnel avec le service web REST. Il s'agit donc d'un premier appel au service web pour lui transmettre des données d'identification au format JSON dans le corps du message.
La réponse a une demande d'authentification est un TOKEN (longue chaîne de caractères) unique que l'appelant reçoit. Ce TOKEN est ensuite redonné dans tous les appels suivants pour authentifier le demandeur.
Demande d'authentification
L'étape d'authentification nécessite plusieurs informations chez l'appelant
Paramètre | Balise | Description |
---|---|---|
Domaine | "domain" | Nom du domaine windows ou mettre une zone vide si le code utilisateur contient nom de l’utilisateur@xxx.com ou nom de l’utilisateur@xxx.fr dans ce cas le domaine sera xxxx sans utiliser cette balise. Exemple en cloud : monuser@C123456.divalto.com correpond au domaine C123456.divalto.com |
Utilisateur | "user" | Nom du compte utilisateur, dans le cloud ce code est de type utilisateur@xxxx.com |
Mot de passe | "password" | Mot de passe du compte utilisateur |
Environnement | "env" | Nom de l’environnement Divalto |
Informations | “infos” | Informations complémentaires, notamment sur les performances (voir plus bas) |
Header
La demande d'authentification n'utilise pas de balise HEADER particulière (pas de Authorization).
Un HEADER est uniquement utilisé pour indiqué le Content-Type : application/json
Informations complémentaires : performances
Le champ 'infos' peut contenir les commandes suivantes:
<perf> | 1 |
La balise perf à 1 indique que le demandeur souhaite obtenir des informations générales et de performances sur l'exécution de la demande.
Si la balise est donnée lors de l’authentification, toutes les demandes utilisant le token correspondant se feront avec réponse de performances.
La réponse est obtenue dans la balise "infos" de la réponse. Voir plus bas pour le format de la réponse.
Exemple de demande : "infos" : "<perf>1"
L'utilisateur à utiliser est nécessairement un utilisateur WINDOWS reconnu par le serveur web windows IIS.
Il devra AUSSI exister en tant qu'utilisateur HARMONY (xlog).
A noter que l’utilisateur appelant sera celui vu par les traitements métiers, mais que l’utilisateur défini au niveau du paramétrage Harmony des services web ($webservice par exemple) doit également être mis en oeuvre
Ces informations sont envoyée sur la : base commune de l'URL + '/api/v1/Authent/Auth'
Exemple d'URL sur un poste local:
http://localhost:8080/DhsDivaltoServiceDivaApiRest/api/v1/Authent/Auth
Exemple d'URL en Divalto cloud:
https://api.divaltocloud.com/123456/TEST1/api/v1/Authent/Auth
Exemple de corps du message d'authentification:
{
"domain":"divalto",
"user": "academy",
"password": "123456",
"env": "ERP216"
}
Réponse d'authentification
Le service web REST répond a une demande d'authentification sous une forme JSON avec les résultats suivants:
Balise | Description |
---|---|
"error" | Contient le CODE ERREUR
|
"txterr" | Texte de l'erreur, si applicable |
"access_token" | Valeur du TOKEN |
"infos" | Informations complémentaires, par exemple de performance
|
Le champs 'infos', dans le cas d'une demande d'information de performance, peut contenir plusieurs informations indiquant des temps d'exécution.
Exemple : "{\"xperf\" : {\"ExecuteSQLAuth\" : \"16\",\"LoadUser\" : \"1\" }}"
Exemple de réponse en réussite avec TOKEN :
{
"error": 0,
"access_token": "eyJhbGciOiJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLNoYTI1NiIsInR5cCI6IkpXVCJ9.eyJpZGVudCI6IkRpdmFsdG9BcGlSZXN0IiwidXNlciI6mJsaXR0ZWwiLCJwYXNzd29yZCI6ImxrajEyMzIxQSIsImVudiI6IkVSUDIxNSIsImRvbWFpbiI6ImRpdmFsdG8iLCJleHAiOiI0DI4MSw0NjYzMTY4NjM0In0.Vx_Qe_WbRhA0qjMOP4tiB-hUnC2lBwsy68GDzzryLhk",
"txterr": "",
"infos": ""
}
Exemple de réponse en échec :
{
"error": 1,
"access_token": "",
"txterr": "Erreur de connexion en mode ldap global sur le domaine 'divalto' utilisateur 'xxxxx' mot de passe '**********' [System.DirectoryServices.AccountManagement.PrincipalServerDownException: Impossible de contacter le serveur. ---> System.DirectoryServices.Protocols.LdapException: Le serveur LDAP n'est pas disponible.\r\n à System.DirectoryServices.Protocols.LdapConnection.Connect()\r\n à System.DirectoryServices.Protocols.LdapConnection.SendRequestHelper(DirectoryRequest request, Int32& messageID)\r\n à System.DirectoryServices.Protocols.LdapConnection.SendRequest(DirectoryRequest request, TimeSpan requestTimeout)\r\n à System.DirectoryServices.Protocols.LdapConnection.SendRequest(DirectoryRequest request)\r\n à System.DirectoryServices.AccountManagement.PrincipalContext.ReadServerConfig(String serverName, ServerProperties& properties)\r\n --- Fin de la trace de la pile d'exception interne ---\r\n à System.DirectoryServices.AccountManagement.PrincipalContext.ReadServerConfig(String serverName, ServerProperties& properties)\r\n à System.DirectoryServices.AccountManagement.PrincipalContext.DoServerVerifyAndPropRetrieval()\r\n à System.DirectoryServices.AccountManagement.PrincipalContext..ctor(ContextType contextType, String name, String container, ContextOptions options, String userName, String password)\r\n à System.DirectoryServices.AccountManagement.PrincipalContext..ctor(ContextType contextType, String name)\r\n à DhsDivaltoServiceDivaApiRest.GenererToken.getAD(String domain, String& txterr, String env, Int32 EtapeExecute, Int32& modemachine, String user, String password)]",
"infos": ""
}