Authentification par imap
Par Michel Billaud, vendredi 12 novembre 2010 à 16:16 :: Bidouilles :: #64 :: rss
J'ai une application Web, dont l'accès est réservé aux utilisateurs qui ont des comptes quelque part. Dans l'idéal il faudrait mettre en place un SSO, mais ça ne dépend pas que de moi. Donc je fais l'authentification par l'intermédiaire du serveur de courrier IMAP : on lui envoie une demande de connexion avec le nom d'utilisateur et le mot de passe dans le bon format, et on voit ce qu'il répond.
2011-03-16: petite correction : les mots de passe peuvent contenir des caractères bizarres, il est préférable de les inclure dans des guillemets. Et d' "escaper" les guillemets.
2011-05-08: et d'escaper aussi les anti-slash !
<?php
function is_valid_user($username,$password) { $i_server = "imap.xxxx.yyyyy.fr"; $i_port = 143; $fp = fsockopen ($i_server, $i_port, &$errno, &$errstr, 30); if (!$fp) { echo "$errstr ($errno)<br>\n"; exit; } $reply = fgets($fp,1024);
$encodedpassword = str_replace('\\', '\\\\', $password); $encodedpassword = str_replace('"', '\"', $encodedpassword);
fputs ($fp, "1 LOGIN $username \"$encodedpassword\"\r\n");
$reply = fgets($fp,1024); $ok = substr($reply,0,4) == "1 OK";
fputs ($fp, "1 LOGOUT\n"); $reply = fgets($fp,1024);
fclose ($fp); return $ok; } ?>
Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.