Um ein SSHA-Passwort zu erstellen, müssen Sie einen SHA1-Hash des Passworts mit angehängtem Salt berechnen (Passwort + Salt). Anschließend kodieren Sie diesen Hash Base64 mit dem angehängten Salt (SHA1 + Salt). Beispiele finden Sie in den beigefügten Dateien oder in einem Beispielskript.Community-Repository auf GitHubDie
Die CSV-Dateiimportfunktion für Canvas-Benutzer ermöglicht den Import von Benutzerpasswörtern entweder im Klartext oder als vorab gehashte Passwörter. Wir beginnen mit einer kurzen Fragerunde.
F: Ich weiß nicht, was ein kryptografischer Hash ist, kann ich das trotzdem verwenden?
A: Wenn Sie mit Hashes nicht vertraut sind, ist dieser Workflow wahrscheinlich nicht für Sie geeignet. Die Erstellung einer korrekt formatierten Zeichenkette für Canvas ist etwas komplex, und dieses Dokument richtet sich an Entwickler/IT-Mitarbeiter Ihrer Einrichtung.
F: Mir war nie bewusst, dass ich meine Nutzer in Gefahr gebracht habe. Ist das das Ende der Welt?
A: Nein. Der SIS-Import erfolgt über HTTPS, die Daten sind also weiterhin verschlüsselt. Das Hashen von Passwörtern bietet lediglich eine zusätzliche Sicherheitsebene. Falls Sie dies implementieren können, ist es jedoch der Übertragung von Passwörtern im Klartext vorzuziehen.
F: Ich nutze CAS (oder SAML oder LDAP). Wie wirkt sich das auf mich aus?
A: Es ist möglich, dass dies Sie und Ihre Nutzer betrifft, aber wahrscheinlich nicht. Dies gilt für Nutzer, die sich über die Canvas-Authentifizierung anmelden.
F: Kann ich das auch für Benutzer verwenden, die bereits Canvas nutzen?
A: Nein. Sobald ein Benutzer sein Passwort in Canvas geändert hat, kann das Passwort nicht mehr über SIS-Importdateien aktualisiert werden.
Implementierung von SSHA-Passwörtern
Sie müssen einen SHA1-Hash des Passworts mit angehängtem Salt erstellen (Passwort + Salt). Kodieren Sie diesen Hash anschließend Base64 mit dem angehängten Salt (SHA1 + Salt).
Für die visuellen Lerntypen habe ich unten ein paar Beispiele: ein PHP-Skript und ein Terminal für OS X / Ubuntu (Entschuldigung an alle Windows-Nutzer).
OS X / Ubuntu
Zuerst wird der SHA1-Hash des Passworts und des Salts generiert. In diesem Beispiel ist das Passwort "password" und der Salt ist "salt".
echo -n passwordsalt | shasum -a 1 | awk '{print $1}'
Das Gleiche lässt sich in Ubuntu erreichen, indem man shasum in sha1sum ändert. Ich vermute, dass die meisten anderen großen Linux-Distributionen dies ebenfalls standardmäßig anbieten.
echo -n passwordsalt | sha1sum | awk '{print $1}'
Dies ergibt die Ausgabe "c88e9c67041a74e0357befdff93f87dde0904214". Daher nehmen wir den Hash und kodieren ihn Base64, wobei wir das Salt erneut an die Zeichenkette anhängen.
echo -n 'c88e9c67041a74e0357befdff93f87dde0904214salt' | base64
Das Ergebnis lautet "Yzg4ZTljNjcwNDFhNzRlMDM1N2JlZmRmZjkzZjg3ZGRlMDkwNDIxNHNhbHQ="". Fügen Sie "{SSHA}" vor diese Zeichenkette ein, dann kann sie an Canvas gesendet werden. In der CSV-Datei sollte sie so aussehen: "{SSHA}Yzg4ZTljNjcwNDFhNzRlMDM1N2JlZmRmZjkzZjg3ZGRlMDkwNDIxNHNhbHQ="".
PHP
Weisen Sie Ihre Passwort- und Salt-Variablen zu.
$pass = 'password'; $salt = 'salt';
Erstellen Sie den SHA1-Hash Ihres Passworts und des Salts. Das Passwort muss vor dem Salt hinzugefügt werden.
$sha_hash = sha1($pass . $salt);
Base64-kodieren Sie den SHA1-Hash. Vergessen Sie nicht, das Salt am Ende der Zeichenkette erneut hinzuzufügen.
$encoded_pass = base64_encode($sha_hash . $salt);
Füge "{SSHA}" am Anfang der gehashten und kodierten Zeichenkette ein.
$hashed_password = "{SSHA}" . $encoded_pass;
Sie können diese Datei nun an Canvas senden. Fügen Sie den Inhalt von $hashed_password der Spalte ssha_password in der SIS-Importdatei users.csv hinzu.
Ich habe eine Beispiel-CSV-Datei zum Hochladen in Canvas sowie eine Beispiel-PHP-Datei beigefügt, um Ihnen den Einstieg zu erleichtern. Zusätzlich empfehle ich Ihnen, sich ein Python-Skript anzusehen.Community-Repository auf GitHubDie