Om een SSHA-wachtwoord te genereren, moet je een SHA1-hash van het wachtwoord maken met de salt toegevoegd aan de tekenreeks (wachtwoord + salt). Neem deze hash en codeer deze met de salt toegevoegd in base64 (SHA1 + salt). Bekijk de bijgevoegde voorbeelden of een voorbeeldscript in eenCommunity-repository op Github.
Met de CSV-importfunctie van Canvas kunt u gebruikerswachtwoorden importeren als platte tekst of als vooraf gehashte wachtwoorden. We beginnen met een korte vraag- en antwoordsessie.
V: Ik weet niet wat een cryptografische hash is, kan ik dit toch gebruiken?
A: Als je niet bekend bent met hashes, is deze workflow waarschijnlijk niet voor jou. Het genereren van een correct opgemaakte tekenreeks voor Canvas is enigszins complex en dit document is bedoeld voor ontwikkelaars/IT-medewerkers binnen jouw instelling.
V: Ik had me nooit gerealiseerd dat ik mijn gebruikers in gevaar bracht. Is dit het einde van de wereld?
A: Nee. SIS-import vindt plaats via HTTPS, dus de gegevens blijven versleuteld. Het hashen van wachtwoorden voegt slechts een extra beveiligingslaag toe. Maar als u dit kunt implementeren, heeft het de voorkeur boven het verzenden van wachtwoorden in platte tekst.
V: Ik heb CAS (of SAML of LDAP), wat zijn de gevolgen hiervan voor mij?
A: Het is mogelijk dat dit gevolgen heeft voor u en uw gebruikers, maar de kans is groot dat dit niet het geval is. Dit geldt voor gebruikers die zich aanmelden via Canvas-authenticatie.
V: Kan ik dit gebruiken voor gebruikers die al in Canvas zitten?
A: Nee. Zodra een gebruiker zijn of haar wachtwoord in Canvas heeft gewijzigd, kunt u het wachtwoord niet meer bijwerken via SIS-importbestanden.
SSHA-wachtwoorden implementeren
Je moet een SHA1-hash maken van het wachtwoord met de salt toegevoegd aan de tekenreeks (wachtwoord + salt). Neem deze hash en codeer deze met de salt toegevoegd in base64 (SHA1 + salt).
Voor degenen die visueel ingesteld zijn, heb ik hieronder een paar voorbeelden, een PHP-script en een voorbeeld uit de OS X/Ubuntu-terminal (sorry, Windows-gebruikers).
OS X / Ubuntu
Genereer eerst de SHA1-hash van het wachtwoord en de salt. In dit voorbeeld is het wachtwoord "password" en de salt "salt".
echo -n passwordsalt | shasum -a 1 | awk '{print $1}'
In Ubuntu kun je hetzelfde doen door shasum te vervangen door sha1sum. Ik vermoed dat de meeste andere grote Linux-distributies dit ook standaard hebben.
echo -n passwordsalt | sha1sum | awk '{print $1}'
Dit levert "c88e9c67041a74e0357befdff93f87dde0904214" op. We nemen dus de hash en coderen deze opnieuw in base64, waarbij we de salt weer aan de tekenreeks toevoegen.
echo -n 'c88e9c67041a74e0357befdff93f87dde0904214salt' | base64
Het resultaat is "Yzg4ZTljNjcwNDFhNzRlMDM1N2JlZmRmZjkzZjg3ZGRlMDkwNDIxNHNhbHQ=". Voeg "{SSHA}" toe aan deze tekenreeks en deze is klaar om naar Canvas te verzenden. Het zou er als volgt uit moeten zien wanneer je het in het csv-bestand verzendt: "{SSHA}Yzg4ZTljNjcwNDFhNzRlMDM1N2JlZmRmZjkzZjg3ZGRlMDkwNDIxNHNhbHQ=".
PHP
Wijs uw wachtwoord- en salt-variabelen toe.
$pass = 'password'; $salt = 'salt';
Genereer de SHA1-hash van je wachtwoord en salt. Het wachtwoord moet vóór de salt worden toegevoegd.
$sha_hash = sha1($pass . $salt);
Codeer de SHA1-hash met Base64. Vergeet niet om de salt weer aan het einde van de tekenreeks toe te voegen.
$encoded_pass = base64_encode($sha_hash . $salt);
Voeg "{SSHA}" toe aan het begin van de gehashte en gecodeerde tekenreeks.
$hashed_password = "{SSHA}" . $encoded_pass;
Je bent nu klaar om dit naar Canvas te verzenden. Voeg de inhoud van $hashed_password toe aan de kolom ssha_password in het sis-importbestand users.csv.
Ik heb een voorbeeld-CSV-bestand bijgevoegd dat je direct naar Canvas kunt uploaden, evenals een voorbeeld-PHP-bestand om je op weg te helpen. Ik raad je ook aan om een Python-script te bekijken in eencommunity-repository op Github.