Para criar uma senha SSHA, você precisará criar um hash SHA1 da senha com o salt anexado à string (senha + salt). Pegue esse hash e codifique-o em base64 com o salt anexado (SHA1 + salt). Confira os exemplos anexados ou um script de exemplo em um arquivo.Repositório da comunidade no Github.
A importação de arquivos CSV de usuários do Canvas permite importar senhas de usuário em texto simples ou senhas pré-criptografadas. Vamos começar com um breve questionário.
P: Não sei o que é um hash criptográfico, posso usá-lo mesmo assim?
A: Se você não estiver familiarizado com hashes, este fluxo de trabalho provavelmente não é para você. Gerar uma string formatada corretamente para o Canvas é um processo um pouco complexo, e este documento foi desenvolvido para desenvolvedores/equipe de TI da sua instituição.
P: Nunca me dei conta de que estava colocando meus usuários em perigo. É o fim do mundo?
R: Não. A importação do SIS ocorre via HTTPS, portanto os dados permanecem criptografados. O hash das senhas apenas adiciona uma camada extra de segurança. Mas, se possível, essa opção é preferível ao envio de senhas em texto simples.
P: Eu tenho CAS (ou SAML ou LDAP), como isso me afeta?
A: É possível que isso afete você e seus usuários, mas é provável que não. Isso se aplica a usuários que se autenticam por meio da autenticação do Canvas.
P: Posso usar isso para usuários que já estão no Canvas?
A: Não. Depois que um usuário altera sua senha no Canvas, não é possível atualizá-la por meio de arquivos de importação do SIS.
Implementando senhas SSHA
Você precisará criar um hash SHA1 da senha com o salt anexado à string (senha + salt). Pegue esse hash e codifique-o em base64 com o salt anexado (SHA1 + salt).
Para os aprendizes visuais, incluí alguns exemplos abaixo: um script PHP e um terminal para OS X/Ubuntu (desculpem, usuários do Windows).
OS X / Ubuntu
Primeiro, gere o hash SHA1 da senha e do salt. Neste exemplo, a senha é "password" e o salt é "salt".
echo -n passwordsalt | shasum -a 1 | awk '{print $1}'
Você pode fazer o mesmo no Ubuntu alterando `shasum` para `sha1sum`. Imagino que a maioria das outras grandes distribuições Linux também tenham isso por padrão.
echo -n passwordsalt | sha1sum | awk '{print $1}'
Isso resulta em "c88e9c67041a74e0357befdff93f87dde0904214". Então, vamos pegar o hash e codificá-lo em base64 com o salt novamente anexado à string.
echo -n 'c88e9c67041a74e0357befdff93f87dde0904214salt' | base64
O resultado é "Yzg4ZTljNjcwNDFhNzRlMDM1N2JlZmRmZjkzZjg3ZGRlMDkwNDIxNHNhbHQ=". Adicione "{SSHA}" a essa string e ela estará pronta para ser enviada ao Canvas. O arquivo CSV enviado deverá ter a seguinte aparência: "{SSHA}Yzg4ZTljNjcwNDFhNzRlMDM1N2JlZmRmZjkzZjg3ZGRlMDkwNDIxNHNhbHQ=".
PHP
Atribua sua senha e variáveis de salt.
$pass = 'password'; $salt = 'salt';
Crie o hash SHA1 da sua senha e do salt. A senha deve ser adicionada antes do salt.
$sha_hash = sha1($pass . $salt);
Codifique o hash SHA1 em Base64. Certifique-se de adicionar o salt ao final da string novamente.
$encoded_pass = base64_encode($sha_hash . $salt);
Adicione "{SSHA}" ao início da string criptografada e codificada.
$hashed_password = "{SSHA}" . $encoded_pass;
Agora você está pronto para enviar isso para o Canvas. Adicione o conteúdo de `$hashed_password` à coluna `ssha_password` no arquivo de importação `users.csv` do SIS.
Anexei um arquivo CSV de exemplo pronto para ser carregado no Canvas e um arquivo PHP de exemplo para ajudar você a começar. Também recomendo dar uma olhada em um script Python.repositório da comunidade no Github.