Advertisement
lululombard

Yubikey commenté

Jan 8th, 2012
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.84 KB | None | 0 0
  1. $user = "lululombard"; // Votre nom d'utisateur (aucun rapport avec celui de Yubikey)
  2. $yubikey = "ccccccbcldid"; // Votre ID unique (12 premiers caractères)
  3.  
  4. if (isset($_POST['OTP'])) { // On vérifie si on a envoyé un OTP
  5.     $otp = ($_POST['OTP']); // La variable OTP est enregistré
  6.     $device_id = substr($otp, 0, 12); // On récupère les 12 premiers caractères dans la variable $device_id
  7.         if ($device_id == $yubikey) { // On vérifie si c'est bien le bon ID unique
  8.                 echo '<p>Bonjour ' . $user . ' !</p>'; // On dit bonjour à l'utisateur
  9.                 $url = "http://api.yubico.com/wsapi/verify?id=970&otp=" . $otp; // On se connecte sur l'API
  10.                 $fp = fopen($url,"r"); // On ouvre le résultat de l'API
  11.                 while (!feof($fp)) { // On lit toutes les lignes...
  12.                     $page .= fgets($fp, 3); // Jusqu'a la troisième
  13.                 }
  14.                 if (strpos($page, 'status=OK') !== FALSE) { // On vérifie si les serveurs de Yubico ont accepté
  15.                     echo '<p>Clé validée</p>'; // Si c'est le cas le résultat est là
  16.                 }
  17.                 elseif (strpos($page, 'status=REPLAYED_OTP') !== FALSE) { // Sinon on vérifie si la clé aurait pas été envoyée deux fois
  18.                     echo '<p>Clé déjà utilisée. Veuillez réessayer.</p>'; // Si c'est le cas le résultat est là
  19.                 }
  20.                 else {
  21.                     echo '<p>Votre clé est invalide.</p>'; // Si les serveurs de Yubico ne répondent pas ou il y a une erreur, on envoie ceci.
  22.                 }
  23.             }
  24.             else {
  25.                 echo "<p>Mais vous n'êtes pas " . $user . " ?</p>"; // Si l'ID unique ne correspond pas, on en informe l'utilisateur.
  26.             }
  27.         }
  28. else { // Si rien n'a été envoyé, on invite à entrer le OTP.
  29.     echo '<p>Entrez votre code OTP Yubikey</p>';
  30.     echo "\n";
  31.     echo '<form action="" method="post">';
  32.     echo "\n";
  33.     echo '<input name="OTP" type="text" placeholder="Yubikey OTP" size="44" maxlength="44">';
  34.     echo "\n";
  35.     echo '</form>';
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement