Начало сеанса и аутентификация
Каждый сеанс iproto начинается с приветствия и необязательной аутентификации.
При подключении клиента к серверному экземпляру экземпляр отвечает 128-байтовым текстовым приветственным сообщением, не в формате MsgPack:
Tarantool <version> (<protocol>) <instance-uuid><salt>
Например:
Tarantool 2.10.0 (Binary) 29b74bed-fdc5-454c-a828-1d4bf42c639aQK2HoFZGXTXBq2vFj7soCsHqTo6PGTF575ssUBAJLAI=
Приветствие состоит из двух строк ASCII-текста по 64 байта. Каждая
строка заканчивается символом перевода строки (\n). Если содержимое
строки меньше 64 байт, оставшаяся часть строки заполняется символами с
ASCII-кодом 0, которые не отображаются в консоли.
Первая строка содержит версию экземпляра и тип протокола. Вторая строка содержит соль сеанса – случайную строку в кодировке base64, длина которой обычно составляет 44 байта. Соль используется в пакете аутентификации – сообщении IPROTO_AUTH.
Если аутентификация пропущена, пользователем сеанса является 'guest'
(для пользователя 'guest' пароль не требуется).
Если аутентификация не пропущена, в любой момент можно подготовить пакет аутентификации с помощью приветственного сообщения, имени пользователя и пароля, а также функций sha-1 следующим образом.
PREPARE SCRAMBLE:size_of_encoded_salt_in_greeting = 44;size_of_salt_after_base64_decode = 32;/* sha1() will only use the first 20 bytes */size_of_any_sha1_digest = 20;size_of_scramble = 20;prepare 'chap-sha1' scramble:salt = base64_decode(encoded_salt);step_1 = sha1(password);step_2 = sha1(step_1);step_3 = sha1(first_20_bytes_of_salt, step_2);scramble = xor(step_1, step_3);return scramble;