SSPI авторизация

Имеется следующая проблема.

Дано:
1. Windows домен, через который все пользователи авторизуются.
2. PostgreSQL 8.4.0, установленный на машине, отличной от контроллера домена.

Требуется:
Настроить авторизацию пользователей в PostgreSQL через Windows домен.

Настроить пытаюсь следующим образом:

1. Первая попытка.

В файле pg_hba.conf ввожу следующую строку:

host  all all 192.168.0.0/16 sspi

Перезапускаю сервер (для верности).
Запускаю (на той же машине) psql так:

psql -p 5432 -h MYHOST mydatabase

Получаю ответ:

psql: FATAL: could not get token from SSPI security context
ПОДРОБНО: Указанная функция не поддерживается
  (80090302)

2. Вторая попытка

В файле pg_hba.conf ввожу следующую строку:

host  all all 192.168.0.0/16 gss krb_realm=MYDOMAIN

Перезапускаю сервер (для верности).
Запускаю (на той же машине) psql так:

psql -p 5432 -h MYHOST mydatabase

Получаю ответ:

psql: SSPI continuation error: Указано неизвестное расположение или оно недоступно
  (80090303)

Не подскажут ли товарищи, в какую сторону копать, по поводу этой проблемы?

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Во-первых, было бы неплохо

Во-первых, было бы неплохо понять скомпилирован ли ваш PostgreSQL с поддержкой того типа авторизации который вы хотите.
Во-вторых, в pg_hba.conf вы описали, а как насчёт postgresql.conf? В мануал заглядывали:
http://postgresql.ru.net/manual/runtime-config-connection.html#RUNTIME-C...
вот сюда конкретно?

Спасибо за ответ. Установлен

Спасибо за ответ.

Установлен бинарник, скачанный с официального сайта. Сам я его не компилил.

Забыл указать, что PostgreSQL установлен на сервере под Windows 2003 Server и на рабочей станции под Windows XP Professional. Результат всюду одинаков.

В postgresql.conf пытался устанавливать параметры krb_realm и krb_caseins_user. Эффекта это не дало (чему я не удивился). Остальные параметры менять не пробовал, так как судя по документации они для указанных методов подключения не играют роли. Если я ошибся, буду признателен за указание на ошибку.

Указанную страницу документации почитал раньше и еще раз прочитал только что.

По поводу компиляции. Я не смог найти в configure ключа, который включает/выключает sspi-авторизацию. Буду признателен, если меня ткнут носом в нужное место. (Список ключей выводил посредством configure --help.)

Насколько я понимаю, sspi -

Насколько я понимаю, sspi - это авторизация с участием Kerberos. Таким образом нужно, чтобы PostgreSQL был скомпилен с Kerberos. Можно попробовать посмотреть вот так в Linux:

$ldd -v /usr/bin/postmaster

libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x00e41000)
libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x005d3000)
libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0x00e2a000)
libgssapi_krb5.so.2 (gssapi_krb5_2_MIT) => /usr/lib/libgssapi_krb5.so.2
libkrb5.so.3 (krb5_3_MIT) => /usr/lib/libkrb5.so.3
libkrb5.so.3 (krb5_3_MIT) => /usr/lib/libkrb5.so.3
/usr/lib/libkrb5.so.3:
libkrb5support.so.0 (krb5support_0_MIT) => /usr/lib/libkrb5support.so.0
/usr/lib/libgssapi_krb5.so.2:
libkrb5support.so.0 (krb5support_0_MIT) => /usr/lib/libkrb5support.so.0
libkrb5.so.3 (krb5_3_MIT) => /usr/lib/libkrb5.so.3
libgssapi_krb5.so.2 (gssapi_krb5_2_MIT) => /usr/lib/libgssapi_krb5.so.2
libkrb5support.so.0 (krb5support_0_MIT) => /usr/lib/libkrb5support.so.0
/usr/lib/libkrb5support.so.0:


А вот как в Винде - это вопрос.


Нет, sspi -- это не с

Нет, sspi -- это не с участием Kerberos. Это авторизация в домене Windows через NTLM, то есть без участия Kerberos. С участием Kerberos --- это либо krb (устарело), либо gss (по-современному).

Судя по документации, gss работает по схеме: если доступен Kerberos, оно авторизуется через Kerberos. В противном случае --- через NTLM. Из этого следует, что те ошибки, которые у меня возникали в первом и втором случае --- это разные проявления одной и той же ошибки, именно, невозможности авторизоваться через NTLM.

Мне кажется вы не совсем

Мне кажется вы не совсем правы:
http://postgresql.ru.net/manual/auth-methods.html#SSPI-AUTH

Написано:

SSPI is a Windows technology for secure authentication with single sign-on. PostgreSQL will use SSPI in negotiate mode, which will use Kerberos when possible and automatically fall back to NTLM in other cases. SSPI authentication only works when both server and client are running Windows.

Т.е. всё-таки первым пытается использоваться Kerberos, если он доступен. Также обратите внимание на выделенное жирным - это условие соблюдается?

Если вы используете kerberos то нужно указывать realms в postgresql.conf как минимум (я так думаю) и возможно и остальные параметры.

Также ещё по ссылкам можно найти про маппинг имён пользователей в PostgreSQL с именами в Windows через файл pg_indent.conf

В общем надо прочитать доку и попробовать разные варианты - ничего более определённого посоветовать не могу.

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023