35. Аутентификатор cram_md5
Аутентификационный механизм cram_md5 описан в RFC2195. Сервер посылает клиенту строку вызова, и ответ содержит имя пользователя и CRAM-MD5 строки вызова, комбинированные с секретной строкой (паролем), который известен обоим, серверу и клиенту. Таким образом, секретная строка не посылается по сети открытым текстом, что делает этот аутентификатор более безопасным, чем
“
plaintext
”. Однако, обратная сторона - это то, что секретная строка должна быть доступна в открытом виде с обоих строн.
35.1 Использование cram_md5 как сервера
Этот аутентификатор имеет одну серверную опцию, которая должна быть установлена для конфигурирования аутентификатора как сервера:
|
Когда серевер получает ответ клиента, имя пользвателя помещается в переменную раскрытия
“
$auth1
”, и
“
server_secret
” раскрывается, для полчения пароля этого пользователя. Тогда сервер вычисляет CRAM-MD5, который должен был послать клиент, и проверяет, что получена корректная строка. Если раскрытие
“
server_secret
” принудительно неудачно, - аутентификация неудачна. Если раскрытие неудачно по иной причине, клиенту возвращается временный код ошибки.
“
Для совместимости с предыдущими релизами exim`a, имя пользователя, также помещается в
$1
”. Однако, использование этой переменной для этой цели, сейчас, не приветствуется, поскольку может привести к беспорядку в раскрытиях строк, которые также используют числовые переменные для других целей.
“
Например, следующий аутентификатор проверяет, что имя пользователя данное клиентом - ph10
”, и, если это так, используется
“secret
” как пароль. Для любых других имён пользователя - аутентификация неудачна.
|
Если аутентификация успешна, установка
“
server_set_id
” сохраняет имя пользователя в
“
$authenticated_id
”. Более типичная конфигурация могла бы искать секретную строку в файле, используя имя пользователя как ключ. Например:
|
Отметтьте, что это раскрытие явно вызывает принудительную неудачу, если поиск неудачен, поскольку
“
$1
” содержит неизвестное имя пользователя.
35.2 Использование cram_md5 как клиента
Когда аутентификатор
“
cram_md5
” используется как клиент, он обладает двумя опциями:
|
Эта строка раскрывается, и результат используется как данные имени пользователя, при вычислении ответа на подсказку сервера.
|
Эта опция должна быть установлена, чтобы аутентификатор работал как клиент. Это значение раскрывается, и результат используется как секретная строка, когда вычисляется ответ.
“
Для различных серверов могут использоваться различные имера пользователей и пароли, используя опции
$host
” и
“
$host_address
”. Принудительная неудача любой раскрываемой строки обрабатывается как признак индицирующий, что этот аутентификатор не готов обработать этот случай. Exim двигается к следующему сконфигурированному клиентскому аутентификатору. Любые другие ошибки раскрытия заставляют exim прекратить попытки отправить сообщение текущему серверу.
“
Простая конфигурация аутентификатора
cram_md5
”, использующая фиксированные строки, такова:
|
=============
Автор перевода: lissyara, оригинал: http://www.lissyara.su/?id=1200