Пользовательская аутентификация

Модуль: mod_auth

Автор: Jan Kneschke
Дата: 2004-11-03
Версия: 1.3

Суть

Модуль аутентификации предостовляет ...

Содержание

Описание

Поддерживаемые методы

lighttpd поддерживает оба метода аутентификации описанные в RFC 2617:

basic

Basic метод передаёт имя пользователя и пароль по сети в открытом виде(закодированными в base64), что способствует возникновению проблемы безопастности в случае если соединение между клиентом и сервером не шифруется.

digest

Digest метод передаёт только хешированную информацию, что значительно повышает конфидециальность аутентификационных данных в незащищённых сетях.

Backends

В зависимости от метода lighttpd позволяет использовать различные методы хранения данных необходимых для аутентификации.

для basic аутентификации:

для digest аутентификации:

plain

Файл содержит строки с именами пользователей и паролями в открытом виде. Имя пользователя и пароль разделяются двоеточием. :

например:
agent007:secret

htpasswd

Файл содержит строки с именами пользователей и зашифрованными с помощью crypt() паролями. Имя пользователя и пароль разделяются двоеточием.

например:
agent007:XWY5JwrAVBXsQ

Для работы с такими файлами вы можете использовать программу htpasswd, входящую в состав apache.

$ htpasswd lighttpd.user.digest agent007

htdigest

Файл содержит строки с именами пользователей, realm'ом и зашифрованными с помощью md5() паролями. Имя пользователя, realm и пароль разделяются двоеточием.

например:
agent007:download area:8364d0044ef57b3defcfa141e8f77b65

Для работы с такими файлами вы можете использовать программу htdigest, входящую в состав apache.

$ htdigest src/lighttpd.user.digest 'download area' agent007

Использование md5sum также может использоваться для создания хэша пароля:

$ echo -n "agent007:download area:secret" | md5sum -
8364d0044ef57b3defcfa141e8f77b65  -

ldap

ldap backend обычно выполняет следующие действия для аутентификации пользователя

  1. анонимное соединение (при загрузке plugin'а)
  2. получение DN для фильтрации = username
  3. аутентификация на ldap сервере
  4. рассоединение

если четвёртый шаг проходит без ошибок, то пользователь считается авторизированным

Конфигурация

## отладка
# 0 для выключения, 1 для 'auth-ok' сообщений, 2 для подробных сообщений
auth.debug                 = 0

## тип backend'а
# plain, htpasswd, ldap или htdigest
auth.backend               = "htpasswd"

# имя файла в котором хранится информация необходимая
# для plain аутентификации
auth.backend.plain.userfile = "lighttpd-plain.user"

## для htpasswd
auth.backend.htpasswd.userfile = "lighttpd-htpasswd.user"

## для htdigest
auth.backend.htdigest.userfile = "lighttpd-htdigest.user"

## для ldap
# знак $ в auth.backend.ldap.filter заменяется на
# 'имя пользователя' из login диалога
auth.backend.ldap.hostname = "localhost"
auth.backend.ldap.base-dn  = "dc=my-domain,dc=com"
auth.backend.ldap.filter   = "(uid=$)"

## ограничения
# выставление ограничений:
#
# ( <left-part-of-the-url> =>
#   ( "method" => "digest"/"basic",
#     "realm" => <realm>,
#     "require" => "user=<username>" )
# )
#
# <realm> это значение которое будет показано в диалоговом окне
#               и также будет использоваться для digest-алгоритма и
#               должно совпадать с realm'ом в htdigest файле (если используется)
#

auth.require = ( "/download/" => 
                 ( 
                   "method"  => "digest",
                   "realm"   => "download archiv",
                   "require" => "user=agent007|user=agent008"
                 ),
                 "/server-info" => 
                 ( 
                   "method"  => "digest",
                   "realm"   => "download archiv",
                   "require" => "user=jan"
                 )
               )

Ограничения