powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FireDac + PostgreSQL +SSPI как подружить?
6 сообщений из 6, страница 1 из 1
FireDac + PostgreSQL +SSPI как подружить?
    #39985386
Manfred
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги привестствую!

Есть софт на Delphi XE7 написан. Компоненты доступа к базе - FireDAC.
База Postgres.

Раньше был настроен доступ через логин + пароль и работало норм.

Сейчас есть задача настроить аутентификацию входа в систему по доменному пользователю.

Сервер настроили.SSPI.
SQL Lite Manager for Postgres и PgAdmin - нормально коннектятся.

Клиент падает при попытке установить соединение.

Ошибка:
[FireDAC][Phys][PG][libpq] host name must be specified

Хост, порт - указаны.

Вместо libpq.dll из дистрибутива Postgres взял libpq.dll из комплекта SQL Lite Manager.
Через нее работает. Но она 1.5 МБ против 200кб от стандартных.
Как она собрана и что там внутри - неизвестно. Использовать нельзя.

В чем может быть проблема работы со стандартной?
Может опцию подключения надо прописать какую? Чтоб и с ней завелось?
...
Рейтинг: 0 / 0
FireDac + PostgreSQL +SSPI как подружить?
    #39985389
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ManfredВ чем может быть проблема работы со стандартной?

В том, что на собрана без поддержки SSPI, очевидно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FireDac + PostgreSQL +SSPI как подружить?
    #39985391
Manfred
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Про сборку с поддержкой LDAP видел что нужно ключ -LDAP.

А что нужно для SSPI?
...
Рейтинг: 0 / 0
FireDac + PostgreSQL +SSPI как подружить?
    #39985394
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ManfredА что нужно для SSPI?

Задать вопрос в соответствующем разделе. Лично я могу только повторить за гуглем
https://wiki.postgresql.org/wiki/Configuring_for_single_sign-on_using_SSPI_on_Windows
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FireDac + PostgreSQL +SSPI как подружить?
    #39985411
Manfred
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поковырял исходники

https://github.com/postgres/postgres

В LibPq куча

#ifdef ENABLE_SSPI

но с другой стороны, нашлось и вот это:

/*
* Always build with SSPI support. Keep it as a #define in case
* we want a switch to disable it sometime in the future.
*/
#define ENABLE_SSPI 1
...
Рейтинг: 0 / 0
FireDac + PostgreSQL +SSPI как подружить?
    #39985528
Manfred
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем, проблема решилась правкой исходников FireDac.

Внимательно прочитал доку:
https://postgrespro.ru/docs/postgrespro/11/libpq-connect#LIBPQ-CONNSTRING


Использование hostaddr вместо host позволяет приложению избежать поиска на сервере имён, что может быть важно для приложений, имеющих ограничения по времени. Однако имя компьютера требуется для методов аутентификации GSSAPI или SSPI,

Если указан hostaddr, а host не указан, тогда значение hostaddr даёт сетевой адрес сервера. Попытка подключения завершится неудачей, если метод аутентификации требует наличия имени компьютера.

я передавал имя хоста по IP.

Внес правки в:
Код: pascal
1.
function TFDPhysPgConnection.BuildPgConnectString(const AConnectionDef: IFDStanConnectionDef): String;


Было:
Код: pascal
1.
2.
3.
4.
5.
if AConnectionDef.HasValue(S_FD_ConnParam_Common_Server) then
  if IsIpAddress(oParams.Server) then
    Add('hostaddr=' + oParams.Server)
  else
    Add('host=' + oParams.Server);


стало:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
if AConnectionDef.HasValue(S_FD_ConnParam_Common_Server) then
begin
  // if IsIpAddress(oParams.Server) then
  Add('hostaddr=' + oParams.Server);
  // else
  Add('host=' + oParams.Server);
end;



И заработало со стандартной либой.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FireDac + PostgreSQL +SSPI как подружить?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]