O mecanismo LOGIN SASL é muito semelhante ao mecanismo PLAIN, mas são necessários dois passos para autenticar:
CLIENT: AUTH LOGIN
SERVER: VXNlcm5hbWU6
CLIENT: am9l
SERVER: UGFzc3dvcmQ6
CLIENT: bXkgc2VyY3JldA==
Qual, após a decodificação de base64, traduz:
CLIENT: AUTH LOGIN
SERVER: Username:
CLIENT: joe
SERVER: Password:
CLIENT: my secret
A especificação diz que os desafios do servidor devem ser User Name
e Password
, mas:
Note: There is at least one widely deployed client which requires that the challenge strings transmitted by the server be "Username:" and "Password:" respectively. For this reason, server implementations MAY send these challenge strings instead of those listed above.
Não há criptografia / hashing de senha envolvida, portanto, você pode testar ambos os lados de forma bastante fácil, para uso de comunicação não criptografada netcat
para openssl s_client
ou openssl s_server
criptografado.
Observe que o exemplo acima não possui as necessidades de protocolo usadas, já que essa parte é comum a todos os protocolos que você pode precisar (SMTP / POP3 / IMAP ...). A comunicação real ainda deve seguir as especificações do protocolo:
IMAP
1 AUTH LOGIN
VXNlcm5hbWU6
am9l
UGFzc3dvcmQ6
bXkgc2VyY3JldA==
SMTP
AUTH LOGIN
334 VXNlcm5hbWU6
am9l
334 UGFzc3dvcmQ6
bXkgc2VyY3JldA==