3 votes

Comment soumettre un formulaire HTML à un autre domaine avec authentification ?

J'ai un site web sur le domaine A qui a une page avec un formulaire html dans lequel un utilisateur peut entrer une chaîne de caractères, qui est soumise au domaine B.

Le formulaire contient actuellement un champ de saisie caché avec un nom/une valeur que le domaine B utilise pour "authentifier"/identifier le domaine A.

Je suis avant tout un codeur C# avec une expérience minimale du web et je sais que ce n'est pas une façon sûre de procéder.

Quel est le meilleur moyen pour qu'un formulaire sur le domaine A soit soumis au domaine B en toute sécurité ?

J'ai envisagé quelques solutions :

Le domaine B doit identifier le domaine A par son nom de domaine ou son adresse IP. Je suppose que ce serait mieux qu'un champ de saisie caché, mais le nom de domaine et l'adresse IP pourraient être usurpés, n'est-ce pas ?

Le domaine A doit transmettre les informations d'authentification (utilisateur/pass par exemple) au domaine B par une autre méthode qu'un champ caché. Je ne sais pas trop comment.

Editer

Autre possibilité : Créer une clé privée/publique. Le domaine A transmet la clé privée au domaine B qui valide à l'aide de la clé publique, éventuellement via HTTPS. Je ne sais pas trop comment le domaine A transmettrait la clé privée sans l'exposer dans le code HTML. Des idées ?

2voto

Michael Mior Points 13475

Une entrée cachée avec une valeur pour authentifier l'utilisateur PEUT être une méthode sûre en fonction de la valeur et de la manière dont elle est générée. Vous pourriez demander au domaine A d'effectuer un appel AJAX au domaine B pour demander un jeton qui doit être soumis avec le formulaire.

Ce jeton ne doit être accepté qu'une seule fois par le domaine B et doit également expirer après un certain temps.

Enfin, vous pouvez également envoyer un identifiant pour l'utilisateur. Cet identifiant doit être crypté d'une manière ou d'une autre pour le transfert. Je suggérerais soit HMAC ou chiffrement à clé publique .

Option 2 : utiliser OpenID ;)

1voto

WEFX Points 2942

J'ai fait quelque chose de similaire dans le passé. Cette méthode est mal vue par la plupart des gens, mais elle a fonctionné pour moi :

Définir les utilisateurs correspondants sur les deux domaines. Donnez-leur le même mot de passe (et vous devriez probablement le configurer pour qu'il n'expire jamais).

Ensuite, lorsque vous exécutez votre application dans le domaine A en tant qu'utilisateur, elle utilisera l'authentification pass-through pour s'authentifier sur le domaine B. Vous devrez juste vous assurer que le compte d'utilisateur a les perms appropriés sur les deux domaines.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X