J’ai créé une API en utilisant un objet externe qui hérite de RESTServiceExternalObject.
Cet objet est habilité à un utilisateur “Web services only”. Quand je teste un GET avec l’interface de test de Simplicité, le login fonctionne comme attendu avec erreur si le mot de passe de mon utilisateur est erroné. Par contre en CURL, ma requête passe quel que soit le mot de passe (même vide). Par contre j’ai bien une erreur si je n’ai pas le bon nom d’utilisateur.
Comment faire en sorte de sécuriser la connexion ?
Un appel sur /api nécessite des credentials = un token obtenu sur /api/login en passant son login/password en basic auth.
En 4.0 il me semble qu’il était malgré tout possible d’appeler des services directement en passant un login/password en basic auth mais c’était une “encapusaltion” du mécanisme à base de token. Il y a peut être des cas d’usage où une première authentification réussie dans ce mode “persiste” jusqu’à un logout explicite ou expiration du token implicitement obtenu ou dans le genre. Il faudrait m’indiquer précisément la séquence d’appels curl.
En tout cas ça n’existe plus en version 5 où il faut nécessairement passer par un token = seul /api/login accepte un login+password, tous les autres appels en /api/* devant impérativement se faire avec un token.
Il y a effectivement un comportement qui n’est pas idéal = quand un appel avec un password erroné est fait après un appel avec password OK ça passe encore (jusqu’au logout explicite) car il y a un token implicite lié au login qui est utilisé.
On va voir si c’est possible d’améliorer ce cas là mais de toute façon dans la perspective d’un upgrade à terme en version 5 vous devriez de toute façon basculer en mode nominal (qui est le seul mode possible en version 5) = appel des services avec un token obtenu via /api/login
Le mécanisme incriminé de la version 4.0 a été renforcé.
Comme indiqué dans mes précédentes réponses, utiliser un login/password pour appeler des service API reste malgré tout une mauvaise pratique incompatible avec la version 5.