Http'ед

Заголовок топика составлен из двух слов — http и велосипед. Дело в том, что ни в одной сфере веб-программирования не изобретено столько велосипедов, сколько в аутентификации пользователей при входе на сайт. Что ни «движок» — то своя система. Сам я грешен, написал нечто подобное и прекрасно представляю, сколько факторов нужно учесть при создании простенького, казалось бы, механизма с двумя полями (логин и пароль) и одной кнопкой.

Между тем, стандартный протокол HTTP предоставляет для этой цели готовые средства, поддерживаемые как на уровне любого уважающего себя браузера, так и на уровне любого уважающего себя веб-сервера. Причем на стороне сервера, как правило, предлагается широкий диапазон способов проверки корректности введенных пользователем учетных данных: от простого текстового файла до сервера LDAP.


Ввод пароля и логина осуществляется в специальное диалоговое окно, из которого информация, упакованная в формат base64 (на случай присутствия нелатинских букв) и передается на сервер, где предусмотрены алгоритмы проверки. Вот, например, как делается проверка по базе данных LDAP в lighttpd (фрагмент конфига):

auth.backend = "ldap"
auth.backend.ldap.hostname = "localhost"
auth.backend.ldap.base-dn  = "dc=mycoolserver,dc=info" 
auth.backend.ldap.bind-dn  = "cn=Odmin"
auth.backend.ldap.bind-pw  = "borodaswiter" 
auth.backend.ldap.filter   = "(cn=$)" 

auth.require = ("/odminko" => (
		"method"     => "basic",
		"realm"      => "Password for Odmin",
		"require"    => "user=Odmin"
	)
)


Для тех, кто не хочет городить огород с LDAP, есть еще более простые строчки.

auth.backend = "plain"
auth.backend.plain.userfile="lighttpd.users"

Вторая из них указывает на имя файла, в котором хранятся пары логин/пароль в формате

odmin:borodaswiter

Конечно для сайтов, где помимо всего прочего нужно соблюсти еще и высококачественный товарный вид, такое решение не очень подходит. Но для небольших проектов, а также для всевозможных систем управления контентом, которыми пользуются 5-10 человек — самое оно. Преимуществом такого решения является и то, что организовать его может админ без привлечения программистов. Естественно, что в любом случае передача логина и пароля на сервер должна осуществляться по протоколу https. Но это уже отдельная тема.
  • +8
  • 05 июля 2010, 01:12
  • yababay

Комментарии (2)

RSS свернуть / развернуть
+
0
lighttpd мне нравится все больше )
довольно серьезная вещь делается так просто
avatar

Sergei_T

  • 05 июля 2010, 08:57
+
0
Полезно!
avatar

Markony

  • 06 июля 2010, 20:06

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.