Utiliser l’authentification du Syno en PHP

Si on veut créer un site web dont l’accès est restreint à certains utilisateurs et que ceux-ci sont déjà créés sur le syno, il est tout à fait possible de ne pas faire une double gestion de ces derniers et de faire appel à l’authentification du syno.

Pour cela, il y a l’url « magique »: http://adresse_du_syno:port_du_dsm/webman/login.cgi?username=mon_utilisateur&passwd=mon_mot_de_passe
Le port du dsm est par défaut 5000.

Le message retourné par l’url magique est au format json.
Il peut indiquer:

  • Si c’est OK: { « result » : « success », « success » : true }
  • Si le couple login/mot de passe est incorrect: { « reason » : « error_cantlogin », « result » : « error », « success » : false }
  • Si l’adresse IP est bloquée: { « reason » : « error_noprivilege », « result » : « error », « success » : false }

Petit exemple en php (j’utilise localhost car mon site web est hébergé sur le syno et le http, mais ça fonctionne aussi en https si celui-ci est activé).

function login($user,$pass,$cookie,$port){
$urlSyno=’http://localhost:’.$port.’/webman/login.cgi?username=’.$user.’&passwd=’.$pass;

$reponseLogin = file_get_contents($urlSyno);

if (json_decode($reponseLogin)->{‘success’}){
$_SESSION[‘user’] = $user;
if($cookie == ‘on’){
$expire = 365*24*3600;
setcookie(‘user’,$user,time()+$expire);
}
}
else echo ‘<div style= »text-align:center;color:red; »>Mauvais login/password</div>’;

}

 

2 Thoughts.

  1. Bonjour,

    Je possède un petit syno fort sympathique que j’apprends à utiliser depuis quelques mois sachant que je suis autodidacte, aucune formation en HTML, PHP, réseau, programmation, … Aussi, la sécurité étant l’objectif principal de mon investissement, je veux maîtriser mes données, cet article m’intéresse mais je ne comprends pas sa mise en application…
    Je suppose que ces quelques lignes sont à rajouter dans le fichier index.html préalablement converti en index.php via Notepad++ mais à quel endroit ?
    Serait-il possible d’avoir un peu plus de détail ? Un fichier exemple fonctionnel serait le top…

    Merci d’avance de votre aide

  2. Bonjour Guillaume,

    Il ne suffit pas de copier la fonction décrite plus haut dans une page html: il faut l’appeler à partir de code php.
    C’est utile surtout si tu veux faire une application et pas simplement pour accéder à des fichiers.
    Si tu cliques ici, tu auras un cas concret d’utilisation.

    Mais avant, je te conseille de te familiariser avec le php à l’adresse suivante: http://www.phpfacile.com/

    Jérôme.

Laisser un commentaire