OpenSSO
Материал из Eludia.
| Тема этой заметки имеет некоторое отношение к компьютерной так называемой "безопасности". |
Если вы разрабатываете Eludia-приложение для организации, в которой развёрнут OpenSSO-сервер, то им вполне можно воспользоваться для авторизации.
Для этого достаточно включить в conf/httpd.conf LDAP-секцию и добавить в неё один дополнительный параметр: opensso.
ldap => {
host => 'ldap.my_corporation.ru',
base => 'dc=my_corporation,dc=ru',
pk => 'uid',
fields => {
login => 'uid',
label => 'cn',
mail => 'mail',
},
opensso => 'http://opensso.my_corporation.ru:8080',
},
После перезапуска система начинает вести себя следующим образом: неавторизованных пользователей без OpenSSO cookie отправляет на форму OpenSSO-авторизации, а для неавторизованных (в смысле, с пустым $_REQUEST {sid}) автоматически заводит сессию.
Запись пользователя обнаруживается (или генерируется) в таблице users по значению поля login. При этом берётся значение того OpenSSO-атрибута, который задан как $preconf -> {ldap} -> {fields} -> {login}.
Остальные поля записи заполняются не из OpenSSO-атрибутов, а из результата LDAP-запроса на тот же самый login. Это может показаться излишним, но если кто-нибудь знает, как обеспечить выдачу результата identity/attributes в кодировке, отличной от ISO-8859-1 — сообщите, пожалуйста.
В текущей реализации предусмотрена одна закладка (поддержка которой в дальнейшем не гарантируется): предполагается, что таблица users содержит поля f, i, o и is_female соответственно. Первые 3 — это ФИО, их значение получается из label нарезкой по пробелу; is_female — как можно догадаться, 0 для М и 1 для Ж, пол определяется по окончанию отчества.

