Per creare una password SSHA, è necessario creare un hash SHA1 della password con il sale aggiunto alla stringa (password + sale). Prendi questo hash e codificalo in base 64 con il sale aggiunto (SHA1 + sale). Dai un'occhiata agli esempi allegati o a uno script di esempio inrepository della comunità su Github.
L'importazione di file CSV degli utenti Canvas consente di importare password utente in formato testo normale o password utente pre-hashed. Inizieremo con un rapido QA.
D: Non so cosa sia un hash crittografico, posso comunque utilizzarlo?
R: Se non hai familiarità con gli hash, questo flusso di lavoro probabilmente non fa per te. Generare una stringa correttamente formattata per Canvas è leggermente complesso e questo documento è pensato per sviluppatori/personale IT del tuo istituto.
D: Non mi ero mai reso conto di mettere in pericolo i miei utenti. È la fine del mondo?
R: No. L'importazione SIS avviene tramite HTTPS, quindi i dati sono comunque crittografati. L'hashing delle password aggiunge solo un ulteriore livello di sicurezza. Tuttavia, se possibile, è preferibile all'invio di password in testo normale.
D: Ho CAS (o SAML o LDAP). In che modo ciò mi riguarda?
R: È possibile che questo riguardi te e i tuoi utenti, ma è probabile che non sia così. Questo vale per gli utenti che si autenticano tramite Canvas.
D: Posso utilizzarlo per gli utenti che sono già iscritti a Canvas?
R: No. Una volta che un utente ha modificato la propria password in Canvas, non è possibile aggiornarla tramite i file di importazione SIS.
Implementazione delle password SSHA
Dovrai creare un hash SHA1 della password con il sale aggiunto alla stringa (password + sale). Prendi questo hash e codificalo in base 64 con il sale aggiunto (SHA1 + sale).
Per chi impara visivamente, ecco un paio di esempi qui sotto: uno script PHP e un terminale OS X/Ubuntu (mi dispiace, utenti Windows).
OS X / Ubuntu
Per prima cosa, genera l'hash SHA1 della password e del salt. In questo esempio, la password è "password" e il salt è "salt".
echo -n passwordsalt | shasum -a 1 | awk '{print $1}'
Puoi fare lo stesso in Ubuntu cambiando shasum in sha1sum. Immagino che anche la maggior parte delle altre grandi distribuzioni Linux lo abbia di default.
echo -n passwordsalt | sha1sum | awk '{print $1}'
Il risultato è "c88e9c67041a74e0357befdff93f87dde0904214". Quindi prenderemo l'hash e lo codificheremo in base64 aggiungendo nuovamente il sale alla stringa.
echo -n 'c88e9c67041a74e0357befdff93f87dde0904214salt' | base64
Il risultato è "Yzg4ZTljNjcwNDFhNzRlMDM1N2JlZmRmZjkzZjg3ZGRlMDkwNDIxNHNhbHQ=". Aggiungi "{SSHA}" a questa stringa e sarà pronta per essere inviata a Canvas. Dovrebbe apparire così quando la invii nel file csv: "{SSHA}Yzg4ZTljNjcwNDFhNzRlMDM1N2JlZmRmZjkzZjg3ZGRlMDkwNDIxNHNhbHQ=".
PHP
Assegna le tue variabili password e salt.
$pass = 'password'; $salt = 'salt';
Crea l'hash SHA1 della tua password e del salt. La password deve essere aggiunta prima del salt.
$sha_hash = sha1($pass . $salt);
L'hash SHA1 viene codificato in Base64. Assicurati di aggiungere nuovamente il sale alla fine della stringa.
$encoded_pass = base64_encode($sha_hash . $salt);
Aggiungere "{SSHA}" all'inizio della stringa codificata e sottoposta ad hash.
$hashed_password = "{SSHA}" . $encoded_pass;
Ora sei pronto per inviarlo a Canvas. Aggiungi il contenuto di $hashed_password alla colonna ssha_password nel file di importazione SIS users.csv.
Ho allegato un file CSV di esempio pronto per essere caricato su Canvas e un file PHP di esempio per aiutarti a iniziare. Ti consiglio anche di provare uno script Python in unrepository della comunità su Github.