Pour créer un mot de passe SSHA, vous devez calculer le hachage SHA1 du mot de passe en ajoutant un sel à la chaîne (mot de passe + sel). Encodez ensuite ce hachage en Base64 en ajoutant le sel (SHA1 + sel). Consultez les exemples joints ou un exemple de script.dépôt communautaire sur Github.
L'importation de fichiers CSV d'utilisateurs Canvas vous permet d'importer les mots de passe en clair ou chiffrés. Commençons par une brève FAQ.
Q : Je ne sais pas ce qu'est un hachage cryptographique, puis-je quand même utiliser ceci ?
A : Si vous n'êtes pas familiarisé avec les fonctions de hachage, cette méthode n'est probablement pas faite pour vous. Générer une chaîne de caractères correctement formatée pour Canvas est relativement complexe et ce document est destiné aux développeurs et au personnel informatique de votre établissement.
Q : Je n'avais jamais réalisé que je mettais mes utilisateurs en danger. Est-ce la fin du monde ?
R : Non. L'importation SIS s'effectue via HTTPS, les données restent donc chiffrées. Le hachage des mots de passe ajoute simplement une couche de sécurité supplémentaire. Toutefois, si vous pouvez l'implémenter, il est préférable d'éviter l'envoi des mots de passe en clair.
Q : J'ai un compte CAS (ou SAML ou LDAP), quel est l'impact sur moi ?
R : Il est possible que cela vous concerne, vous et vos utilisateurs, mais il y a peu de chances que ce soit le cas. Ceci concerne les utilisateurs qui s'authentifient via l'authentification Canvas.
Q : Puis-je utiliser ceci pour les utilisateurs qui sont déjà dans Canvas ?
R : Non. Une fois qu'un utilisateur a modifié son mot de passe dans Canvas, vous ne pouvez pas mettre à jour ce mot de passe via les fichiers d'importation SIS.
Mise en œuvre des mots de passe SSHA
Vous devrez créer un hachage SHA1 du mot de passe auquel vous ajouterez le sel (mot de passe + sel). Ensuite, encodez ce hachage en base64 en y ajoutant le sel (SHA1 + sel).
Pour les apprenants visuels, voici quelques exemples : un script PHP et un terminal OS X / Ubuntu (désolé pour les utilisateurs Windows).
OS X / Ubuntu
Commencez par générer le hachage SHA1 du mot de passe et du sel. Dans cet exemple, le mot de passe est « password » et le sel est « salt ».
echo -n passwordsalt | shasum -a 1 | awk '{print $1}'
Vous pouvez faire de même sous Ubuntu en remplaçant `shasum` par `sha1sum`. J'imagine que la plupart des autres distributions Linux importantes proposent également cette option par défaut.
echo -n passwordsalt | sha1sum | awk '{print $1}'
Cela donne « c88e9c67041a74e0357befdff93f87dde0904214 ». Nous allons donc prendre le hachage et l'encoder en base64 en ajoutant à nouveau le sel à la chaîne.
echo -n 'c88e9c67041a74e0357befdff93f87dde0904214salt' | base64
Le résultat est « Yzg4ZTljNjcwNDFhNzRlMDM1N2JlZmRmZjkzZjg3ZGRlMDkwNDIxNHNhbHQ=" ». Ajoutez « {SSHA} » au début de cette chaîne et elle est prête à être envoyée à Canvas. Elle devrait ressembler à ceci une fois envoyée dans le fichier CSV : « {SSHA}Yzg4ZTljNjcwNDFhNzRlMDM1N2JlZmRmZjkzZjg3ZGRlMDkwNDIxNHNhbHQ=" ».
PHP
Attribuez votre mot de passe et vos variables de sel.
$pass = 'password'; $salt = 'salt';
Créez le hachage SHA1 de votre mot de passe et de votre sel. Le mot de passe doit être saisi avant le sel.
$sha_hash = sha1($pass . $salt);
Encodez le hachage SHA1 en Base64. N'oubliez pas d'ajouter le sel à la fin de la chaîne.
$encoded_pass = base64_encode($sha_hash . $salt);
Ajoutez "{SSHA}" au début de la chaîne hachée et encodée.
$hashed_password = "{SSHA}" . $encoded_pass;
Vous pouvez maintenant envoyer ce fichier à Canvas. Ajoutez le contenu de $hashed_password à la colonne ssha_password du fichier d'importation users.csv.
J'ai joint un exemple de fichier CSV prêt à être importé sur Canvas, ainsi qu'un exemple de fichier PHP pour vous aider à démarrer. Je vous recommande également de consulter un script Python dans undépôt communautaire sur Github.