![]() |
|
|||
WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Перевод выполнен Алексеем Паутовым в рамках
некоммерческого проекта RussianLDP
(http://www.rldp.ru/). Именно на этом сайте
и надлежит искать новые версии, если таковые будут.
Аутентификационный механизм cram_md5 описан в RFC 2195.
Сервер посылает клиенту строку вызова, ответ содержит имя пользователя и
CRAM-MD5 строки вызова, комбинированные с секретной строкой (паролем),
который известен обоим, клиенту и серверу. Таким образом, секретная строка
не посылается по сети открытым текстом, что делает этот аутентификатор более
безопасным, чем plaintext. Однако, обратная сторона это то, что
секретная строка должна быть доступна в открытом виде с обеих сторон. Этот аутентификатор имеет одну серверную опцию,
которая должна быть установлена для конфигурирования
аутентификатора как сервера:
Когда серевер получает ответ клиента,
имя пользователя помещается в переменную раскрытия $auth1, а
server_secret раскрывается, для получения пароля этого пользователя.
Тогда сервер вычисляет CRAM-MD5, который должен был послать клиент, и
проверяет, что получена корректная строка.
Если раскрытие server_secret принудительно
неудачно, аутентификация неудачна. Если раскрытие неудачно по иной
причине, клиенту возвращается временный код ошибки.
Для совместимости с предыдущими релизами exim,
имя пользователя также помещается в $1. Однако, использование этой переменной
для этой цели сейчас не приветствуется, поскольку может привести к беспорядку
в раскрытиях строк, которые также используют числовые переменные
для других целей.
Например, следующий аутентификатор проверяет,
что имя пользователя, данное клиентом, ph10 и, если это так, используется
secret как пароль. Для любых других имён пользователя аутентификация неудачна.
Если аутентификация успешна, установка
server_set_id сохраняет имя пользователя в $authenticated_id.
Более типичная конфигурация могла бы искать секретную строку в файле,
используя имя пользователя как ключ. Например:
Отметьте, что это раскрытие явно
вызывает принудительную неудачу, если поиск неудачен, поскольку
$1 содержит неизвестное имя пользователя. Когда аутентификатор cram_md5
используется как клиент, он обладает двумя опциями:
Эта строка раскрывается, и результат используется
как данные имени пользователя при вычислении ответа на подсказку сервера.
Эта опция должна быть установлена,
чтобы аутентификатор работал как клиент. Это значение раскрывается,
и результат используется как секретная строка, когда вычисляется ответ.
Для различных серверов могут использоваться
разные имера пользователей и пароли, используя опции
$host и $host_address. Принудительная неудача любой
раскрываемой строки обрабатывается как признак, индицирующий что этот
аутентификатор не готов обработать этот случай. Exim двигается к следующему
сконфигурированному клиентскому аутентификатору. Любые другие ошибки
раскрытия заставляют exim прекратить попытки отправить
сообщение текущему серверу. Простая конфигурация аутентификатора
cram_md5, использующая фиксированные строки, такова:
35. Аутентификатор cram_md5
35.1. Использование cram_md5 как сервера
Имя
Использование
Тип
Значение по умолчанию server_secret
cram_md5 string†
не задана
fixed_cram:
driver = cram_md5
public_name = CRAM-MD5
server_secret = ${if eq{$auth1}{ph10}{secret}fail}
server_set_id = $auth1
lookup_cram:
driver = cram_md5
public_name = CRAM-MD5
server_secret = ${lookup{
$auth1}lsearch{/etc/authpwd}{$value}fail}
server_set_id = $auth1
35.2. Использование cram_md5 как клиента
Имя
Использование
Тип
Значение по умолчанию client_name
cram_md5 string†
первичное имя хоста
Имя
Использование
Тип
Значение по умолчанию client_secret
cram_md5 string†
не задана
fixed_cram:
driver = cram_md5
public_name = CRAM-MD5
client_name = ph10
client_secret = secret
Найди своих коллег! |