Попробую описать задание, но для начала очень советую посмотреть на опции mod_auth_form, тк я вижу задачу &quot;со своей колокольни&quot; и запросто могу не знать о более глобальных вещах.<br><br>Итак, задача:<br><br>Реализовать опцию аутентификации для ресурсов расположенных по указанному под-url (location) которая позволяет делать следующее:<br>
<br>1) Требовать аутентификации для доступа к ресурсам расположенным по этому location при помощи формы.<br><br>Для этого должна указаться открытая страница на которой расположена форма с аутентификацией и имена полей для login/password. <br>
<br>Сервер должен перенаправлять все запросы для неаутентифицированных сессий на эту форму и отслеживать все сабмиты этой формы. Как только поля формы содержат правильные поля см пункт 3.<br> <br>Если поля заполнены неправильными данными (неправильный пароль) см пункт 2.<br>
<br>2) Должна быть указан URL страницы на которую переходить при ошибке аутентификации. Тут важно передать странице с ошибкой полную информацию об аутентификации - логин, пароль, тип ошибки (если возможно). В Apache этого нет, поэтому когда происходит ошибка аутентификации и пользователя требуют заново ввести пароль совсем непонятно по какой причине: его аккаунт заблокирован, задан неправильный пароль etc. Это очень неудобно.<br>
<br>3) Если пользователь ввел правильные логин и пароль фронт-энд сервер позволяет пользователю доступиться до внутренних ресурсов текущего location при этом модифицируя его http request. Сам сервер запоминает то, что пользователь успешно аутентифицирован добавляя куку в сессию пользователя. Возможно что тут можно использовать что-то еще - я просто не специалист.<br>
<br>В куке содержится кодировнный хеш который позволяет серверу сопоставить имя и пароль пользователя с хранимыми сервером внутри (в памяти) данными. Возможно что кука может содержать и сам логин и пароль в закодированном виде. Тут вариантов много и в этом и есть отличие разных реализация для Апача. Не уверен какое тут решение будет лучше.<br>
<br>Каждый раз когда пользователь обращается к ресурсу по заданному location нужно на фронт-энд сервере проверять наличие SSO куки и либо пропускать запрос пользователя либо нет. При этом важно учесть следующее: можно либо для каждого запроса проверять пользователя на валидность, либо верить первой аутентификации в течение всей сессии. В апаче эта опция называется AuthFormSitePassphrase.<br>
<br>После того как у пользователя истечет время сессии - запросить его ввести логин и пароль заново. <br><br>4) Логаут: иметь определенный в config URL перейдя по которому пользовательская cookie будет удалена и сессия закончена<br>
<br><br>Еще важные пункты которых не хватает в Apache: <br><br>А) Трекинг активной сессии. Действительно если пользователь ходит по части сайта которая обслуживается одним engine (например svnviewer на php) а я хочу узнать активен ли пользователь в данный момент из другого приложения (Java) то единственный шанс это сделать - модифицировать код php приложения и записывать лог в базу. Если таких приложений много - нужно будет делать много патчей. Хотелось бы чтобы front-end сервер имел возможность выполнять custom script передавая ему параметры о пользователя для каждого запроса. Тогда можно будет логировать активность с front-end<br>
<br>Б) Насильное завершение сессии. Хотелось бы иметь возможность насильно завершить сессию пользователя из приложения A, когда он аквтивен в приложении B. Это можно сделать, например, приняв результат работы скрипта описанного в пункте A, либо через его возвращаемое значение либо предоставив для скрипту API)<br>
<br>! Вообще если дать возможность модифицировать параметры изначального запроса при помощи вызова пользовательской подпрограммы на фрон-энд сервере передав этой подпрограмме некоторый API для доступа к пользовательским данным и модификации их - то можно большую часть всего этого функционала свести к возможности вызова этого самого скрипта + набору sample утилит которые реализуют часто используемые паттерны. Как думате? После этого остается только написать оптимизированное ядро для самой тяжелой и общей для всех сценарием операции - аутентификации по правилам SSO.<br>
<br><br><br>Михаил.<br><br><br><br><div class="gmail_quote">2010/2/24 Daniel Podolsky <span dir="ltr">&lt;<a href="mailto:onokonem@gmail.com">onokonem@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="im">&gt; А есть пример как это делается?<br>
</div>Нет, примера нету. Но мне интересно. Так что могу написать. С вас тех.<br>
задание и документация к готовому модулю. Который будет, естественно,<br>
опенсорс.<br>
<div><div></div><div class="h5">_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org">nginx-ru@nginx.org</a><br>
<a href="http://nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://nginx.org/mailman/listinfo/nginx-ru</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Mikhail Fursov<br>