Development #6127
Permettre de tester les credentials
100%
Description
Il faut exposer une url en json qui va tester les valeurs du post pour savoir si les identifiants sont valides ou non.
Fichiers
Révisions associées
Historique
Mis à jour par Jérôme Schneider il y a plus de 9 ans
- Fichier 0001-response-add-json-responses-500-400-and-200.patch 0001-response-add-json-responses-500-400-and-200.patch ajouté
- Fichier 0002-authform-change-the-way-to-set-replay_condition.patch 0002-authform-change-the-way-to-set-replay_condition.patch ajouté
- Fichier 0003-authform-add-an-url-to-test-credentials.patch 0003-authform-add-an-url-to-test-credentials.patch ajouté
- % réalisé changé de 0 à 80
- Patch proposed changé de Non à Oui
- Le patch 0001 ajoute juste quelques fonctions pour pouvoir répondre plus facilement
- Le patch 0002 est du refactoring de Authform pour centraliser la condition de test du rejeu
- Le patch 0003 répond directement au ticket
Mis à jour par Frédéric Péters il y a plus de 9 ans
J'arrive pas très bien à comprendre ce qui se met dans replay_condition.
Aussi, l'idée générale, c'est dans le cadre de la création d'une liaison "directement" depuis le portail citoyen (i.e. #6068) ? Ce serait le point "donc webservice mandaye pour prendre les données et les vérifier (tenter une authent sur le service)" ?
Mis à jour par Jérôme Schneider il y a plus de 9 ans
- Statut changé de En cours à Résolu (à déployer)
- % réalisé changé de 80 à 100
Appliqué par commit commit:2762df0ed4f5f58b5d7ea45f123bb2433e94cf37.
Mis à jour par Jérôme Schneider il y a plus de 9 ans
- Statut changé de Résolu (à déployer) à En cours
- % réalisé changé de 100 à 60
Mis à jour par Frédéric Péters il y a plus de 9 ans
J'arrive pas très bien à comprendre ce qui se met dans replay_condition.
Aussi, l'idée générale, c'est dans le cadre de la création d'une liaison "directement" depuis le portail citoyen (i.e. #6068) ? Ce serait le point "donc webservice mandaye pour prendre les données et les vérifier (tenter une authent sur le service)" ?
?
Mis à jour par Jérôme Schneider il y a plus de 9 ans
J'ai poussé ma branche review sur le dépôt distant et redmine à automatiquement changé le statut des tickets. Je n'ai rien poussé sur le master que ca soit pour mandaye ou mandaye-cam. Bref j'ai changé le statut des tickets manuellement.
Mis à jour par Jérôme Schneider il y a plus de 9 ans
J'arrive pas très bien à comprendre ce qui se met dans replay_condition.
Ca permet de mettre un test pour savoir si le rejeu a échoué ou réussi.
Aussi, l'idée générale, c'est dans le cadre de la création d'une liaison "directement" depuis le portail citoyen (i.e. #6068) ? Ce serait le point "donc webservice mandaye pour prendre les données et les vérifier (tenter une authent sur le service)" ?
Oui c'est très exactement ça. Mais ce patch ne gère que la partie test des credentials via un webservice json.
Mis à jour par Frédéric Péters il y a plus de 9 ans
Jérôme Schneider a écrit :
J'arrive pas très bien à comprendre ce qui se met dans replay_condition.
Ca permet de mettre un test pour savoir si le rejeu a échoué ou réussi.
Tu aurais un exemple ? Voir comment ça se factorise avec ce qui existe j'imagine déjà niveau succès de rejeu…
Aussi, l'idée générale, c'est dans le cadre de la création d'une liaison "directement" depuis le portail citoyen (i.e. #6068) ? Ce serait le point "donc webservice mandaye pour prendre les données et les vérifier (tenter une authent sur le service)" ?
Oui c'est très exactement ça. Mais ce patch ne gère que la partie test des credentials via un webservice json.
Il y a une question d'architecture que je commence à me poser; dans quelle mesure on ne gagnerait pas à avoir un /__mandaye/ (ou autre) derrière lequel avoir les webservices, mais aussi les fichiers statiques, et tout ça pourrait être du django normal; je me demande si ça n'aiderait pas dans le développement, le bas niveau de reverse-proxying comme aujourd'hui, mais les trucs de haut niveau dans django.
Mis à jour par Benjamin Dauvergne il y a plus de 9 ans
Frédéric Péters a écrit :
Jérôme Schneider a écrit :
J'arrive pas très bien à comprendre ce qui se met dans replay_condition.
Ca permet de mettre un test pour savoir si le rejeu a échoué ou réussi.
Tu aurais un exemple ? Voir comment ça se factorise avec ce qui existe j'imagine déjà niveau succès de rejeu…
Une condition c'est par exemple response.code == 302
ou "Connecté" in response.msg
.
Ce qui serait plus clair et plus sûr ce serait déjà dans le eval(condition)
de spécifier explicitement un dictionnaire de variables locales pour éviter les incertitudes sur ce qu'on peut faire, par exemple eval(condition, {'response': response})
et à terme je verrai plutôt le remplacement de ce système par une fonction avec une signature précise, en supportant l'ancien système pour compatibilité.
def condition(response : HttpResponse) -> bool return ....
Aussi, l'idée générale, c'est dans le cadre de la création d'une liaison "directement" depuis le portail citoyen (i.e. #6068) ? Ce serait le point "donc webservice mandaye pour prendre les données et les vérifier (tenter une authent sur le service)" ?
Oui c'est très exactement ça. Mais ce patch ne gère que la partie test des credentials via un webservice json.
Il y a une question d'architecture que je commence à me poser; dans quelle mesure on ne gagnerait pas à avoir un /__mandaye/ (ou autre) derrière lequel avoir les webservices, mais aussi les fichiers statiques, et tout ça pourrait être du django normal; je me demande si ça n'aiderait pas dans le développement, le bas niveau de reverse-proxying comme aujourd'hui, mais les trucs de haut niveau dans django.
Ça demanderait déjà de faire de mandaye un projet Django ensuite on pourrait l'envisager; ce sera pour un autre ticket.
Mis à jour par Frédéric Péters il y a plus de 9 ans
Une condition c'est par exemple response.code == 302 ou "Connecté" in response.msg.
Ok, donc avant on avait quelque chose de cet acabit :
{ 'path': r'/mandaye/login$', 'method': 'GET', 'response': { 'auth': 'login', 'values': {'condition': 'response.code==302'}, }, },
Et l'idée ici est de déplacer la condition vers la racine du mapper et la nommer replay_condition; c'est bien ça ?
Dans le patch, il y a déjà duplication des lignes "# XXX: to be removed test for compability only" et suivantes (jusqu'au eval()), elles pourraient aller dans une méthode verify_replay() ?
Ça demanderait déjà de faire de mandaye un projet Django ensuite on pourrait l'envisager; ce sera pour un autre ticket.
Ça me semble une question opportune en ce moment où ce patch commence l'ajout de webservices, plutôt qu'avoir à défaire par la suite.
Mis à jour par Benjamin Dauvergne il y a plus de 9 ans
Frédéric Péters a écrit :
Ça me semble une question opportune en ce moment où ce patch commence l'ajout de webservices, plutôt qu'avoir à défaire par la suite.
On peut en discuter sans souci, mais je me disais que la somme de travail pour aller vers cela est bien supérieure à ce qui était prévu pour cette simple fonctionnalité. Mais si elle n'est par urgente on peut la décaler et mettre ne priorité un portage au dessus de Django.
Dans ce cas on pourrait regarder du coté d'un bibliothèque d'intégration entre des applications WSGI et Django1, où à l'inverse faire de l'application WSGI de Django une vue de mandaye.
Mis à jour par Jérôme Schneider il y a plus de 9 ans
- Fichier 0002-authform-change-the-way-to-set-replay_condition.patch 0002-authform-change-the-way-to-set-replay_condition.patch ajouté
Nouveau patch qui tient compte de la remarque de Benj (d'utiliser plutôt une fonction pour le test du replay) et celle de Fred de rajouter une méthode verify_replay.
Un petit exemple dans le cadre du mandaye de montpellier dans le mapper cam/mappers/imuse.py j'ai la ligne suivante :
replay_condition = lambda env, response: "OK" in response.msg
Pour ce qui de la migration en Django il y a le ticket #4912. J'ai besoin d'une partie des commits pour Montpellier ça serait cool de ne pas bloquer là dessus.
Mis à jour par Frédéric Péters il y a plus de 9 ans
Benjamin écrivait : "Ce qui serait plus clair et plus sûr ce serait déjà dans le eval(condition) de spécifier explicitement un dictionnaire de variables locales pour éviter les incertitudes sur ce qu'on peut faire, par exemple eval(condition, {'response': response}) [...]"; mais comme ça concerne le code de backward compatibility, on ignore, ok.
Mis à jour par Jérôme Schneider il y a plus de 9 ans
- Statut changé de En cours à Résolu (à déployer)
- % réalisé changé de 60 à 100
Appliqué par commit commit:6a43276c45fef0537c261ee44b687601393809d3.
Mis à jour par Frédéric Péters il y a plus de 8 ans
- Statut changé de Résolu (à déployer) à Fermé
authform: add an url to test credentials
post a json with post values on /mandaye/check/credentials
and this request will return a json dict with a data entry OK or KO
Closes #6127