För att skapa ett SSHA-lösenord måste du skapa en SHA1-hash av lösenordet med salt tillagt i strängen (lösenord + salt). Ta denna hash och base-64-koda den med salt tillagt (SHA1 + salt). Kolla in de bifogade exemplen eller ett exempelskript i encommunity repo på Github.
Med hjälp av CSV-filimporterna för Canvas-användare kan du importera antingen lösenord i vanlig text eller förhashade lösenord. Vi börjar med en snabb QA.
F: Jag vet inte vad en kryptografisk hash är, kan jag fortfarande använda den?
A: Om du inte är bekant med hash-värden är det här arbetsflödet förmodligen inte för dig. Det är lite komplicerat att generera en korrekt formaterad sträng för Canvas och det här dokumentet är utformat för utvecklare/IT-personal på din institution.
F: Jag insåg aldrig att jag utsatte mina användare i fara. Är detta världens undergång?
A: Nej. SIS-import sker via https så data krypteras fortfarande. Hashning av lösenord ger bara ett extra säkerhetslager. Men om du kan implementera detta är det att föredra framför att skicka lösenord i ren text.
F: Jag har CAS (eller SAML eller LDAP), hur påverkar detta mig?
A: Det är möjligt att detta påverkar dig och dina användare, men det är troligt att det inte gör det. Detta gäller för användare som autentiserar sig via Canvas-autentisering.
F: Kan jag använda detta för användare som redan är i Canvas?
A: Nej. När en användare har ändrat sitt lösenord i Canvas kan du inte uppdatera lösenordet via SIS-importfiler.
Implementera SSHA-lösenord
Du måste skapa en SHA1-hash av lösenordet med salt tillagt i strängen (lösenord + salt). Ta denna hash och base-64-koda den med salt tillagt (SHA1 + salt).
För de visuellt inlärda har jag ett par exempel nedan, ett PHP-skript och en OS X / Ubuntu-terminal (ursäkta, Windows-användare).
OS X / Ubuntu
Generera först SHA1-hashen för lösenordet och saltet. I det här exemplet är lösenordet "password" och saltet är "salt".
echo -n passwordsalt | shasum -a 1 | awk '{print $1}'
Du kan göra samma sak i Ubuntu genom att ändra shasum till sha1sum. Jag antar att de flesta andra stora Linux-distributioner också har detta som standard.
echo -n passwordsalt | sha1sum | awk '{print $1}'
Detta ger utdata "c88e9c67041a74e0357befdff93f87dde0904214". Så vi tar hashen och base64-kodar den med saltet igen tillagt i strängen.
echo -n 'c88e9c67041a74e0357befdff93f87dde0904214salt' | base64
Resultatet är "Yzg4ZTljNjcwNDFhNzRlMDM1N2JlZmRmZjkzZjg3ZGRlMDkwNDIxNHNhbHQ=". Lägg till "{SSHA}" före den här strängen så är den redo att skickas till Canvas. Den ska se ut så här när du skickade den i csv-filen "{SSHA}Yzg4ZTljNjcwNDFhNzRlMDM1N2JlZmRmZjkzZjg3ZGRlMDkwNDIxNHNhbHQ=".
PHP
Tilldela ditt lösenord och saltvariabler.
$pass = 'password'; $salt = 'salt';
Skapa SHA1-hashen för ditt lösenord och salt. Lösenordet ska läggas till före saltet.
$sha_hash = sha1($pass . $salt);
Base64 kodar SHA1-hashen. Se till att lägga till saltet igen i slutet av strängen.
$encoded_pass = base64_encode($sha_hash . $salt);
Lägg till "{SSHA}" före början av den hashade och kodade strängen.
$hashed_password = "{SSHA}" . $encoded_pass;
Du är nu redo att skicka detta till Canvas. Lägg till innehållet i $hashed_password i kolumnen ssha_password i sis-importfilen users.csv.
Jag har bifogat ett exempel på en CSV-fil som är redo att laddas upp till Canvas och ett exempel på en PHP-fil som hjälper dig att komma igång. Jag rekommenderar också att du kollar in ett Python-skript i encommunity repository på Github.