> Français
> English
> Deutsch

Le concept est le suivant:

  • Les utilisateurs ont un "username" et "password".
  • Le password ne doit pas être transmis sur la ligne de communication

Alors on choisit un "challenge", on calcule "challenge_password" en utilisant "challenge" et "password" et on transmet "challenge_password" sur la ligne de communication.

Dans notre cas. Challenge est un nombre entier 32-bits (comment le choisir ? voir ci-dessous). Ensuite on fait le calcul suivant:

challenge_password = MD5(CONCAT(user.password, challenge))

Note importante : le logiciel TDS ne stocke pas le password des utilisateurs en clair. La table user contient bien le password de l'utilisateur mais celui-ci est déjà encodé. Le password qui est stocké dans la table a été encodé avec la fonction OLD_PASSWORD de MySQL. Par exemple si le mot de passe, en clair est "easyPassword", alors le mot de passe "446d5fcf152ec3ca" est stocké dans TDS. Le calcul du challenge utilise le mot de passe stocké dans TDS (446d5fcf152ec3ca dans notre exemple !)

Comment choisir le challenge ?

TDS-6817 fait encore une vérification sur le challenge:

challenge>=UNIX_TIMESTAMP()

sinon l'authentification est refusée

.

Si on choisit challenge=UNIX_TIMESTAMP() alors l'accès ne sera valable qu'une seconde au maximum. Donc si on fait par exemple un accès WSDL on prendra par exemple challenge=UNIX_TIMESTAMP()+10. Pour le Loginlink, sur la page web TDS-6817, le challenge est choisi en général pour avoir trois mois de validité. Le loginlink sera donc valable trois mois.

De manière similaire, il est donc possible de créer un loginlink qui sera valable bien plus longtemps

Note: Si l'utilisateur change son "password", alors le loginlink ne fonctionne évidemment plus !




Tetraedre Sarl Company, Copyright ©1999-2015