Аутентификация Windows в Firebird 2.5

Могу ли я войти в базу данных firebird с помощью пользователя Windows вместо использования учетных данных SYSDBA и MASTERKEY? Если да, сообщите мне, как подключиться к базе данных Firebird.

Я использую Delphi XE3 и Firebird 2.5. Мне нужно аутентифицировать пользователя вошедшим в систему пользователем после обновления файла конфигурации для «доверенного» вместо «собственного» по умолчанию, как указано здесь: https://firebirdsql.org/file/documentation/release_notes/html/en/2_5/rnfb25-fbconf-authent.html

Это мой код:

SQLConnection1.LoginPrompt := False;
//SQLConnection1.Params.add('user_name='); 
//SQLConnection1.Params.add('password='); 
SQLConnection1.Params.add('os authentication=True') ; 
SQLConnection1.Connected:= True

Он по-прежнему запрашивает учетные данные.


person Vinod_cmdl    schedule 23.05.2017    source источник
comment
Какой клиент БД вы используете — FireDAC, UniDAC, Interbase, ADO или...? Очень важно получить конкретный ответ.   -  person Victoria    schedule 24.05.2017
comment
Я использую DbExpress. Необходимо получить доступ к данным таблицы базы данных Firebird без указания имени пользователя и пароля. Просто хочу использовать аутентификацию Windows для доступа к таблице. Большое спасибо.   -  person Vinod_cmdl    schedule 24.05.2017
comment
Я использовал следующий код, но запрашивал учетные данные: //SQLConnection1.Params.add('user_name='); //SQLConnection1.Params.add('password='); SQLConnection1.Params.add('проверка подлинности ОС=Истина') ; SQLConnection1.Connected:= Истина;   -  person Vinod_cmdl    schedule 24.05.2017
comment
Вы установили значение False для свойства LoginPrompt SQLConnection1?.   -  person Marc Guillot    schedule 25.05.2017
comment
@MarcGuillot Да, я установил для LoginPrompt значение false.   -  person Vinod_cmdl    schedule 25.05.2017
comment
Я попытался обновить ваш пост, потому что он явно касается клиентской стороны, а не сервера (stackoverflow.com/review/suggested-edits /16221614).   -  person Victoria    schedule 25.05.2017
comment
@VictoriaMarotoSilva Хорошо. Итак, на стороне клиента, пожалуйста, дайте мне знать, как получить доступ к firebird, используя аутентификацию Windows. Огромное спасибо.   -  person Vinod_cmdl    schedule 26.05.2017
comment
Вы пробовали не включать user_name= и password=?   -  person Mark Rotteveel    schedule 26.05.2017
comment
@MarkRotteveel, кажется, это происходит (обратите внимание на // символы комментариев). Редактирование неточно. Отклоненный у меня скопировал их.   -  person Victoria    schedule 26.05.2017
comment
@MarkRotteveel Я использовал двойную косую черту (//), что означает отсутствие имени пользователя = и пароля =   -  person Vinod_cmdl    schedule 26.05.2017
comment
Затем я предлагаю вам отредактировать свой вопрос, чтобы показать фактический код.   -  person Mark Rotteveel    schedule 26.05.2017
comment
@MarkRotteveel, я сделал. Но он был отклонен stackoverflow.com/review/suggested-edits/16221614 :( Я пытался сделать все возможное с этим вопросом.   -  person Victoria    schedule 26.05.2017
comment
@VictoriaMarotoSilva Я обращался к ОП, так как он должен был сделать это, когда изначально задавал вопрос. Я добавлю их сам через секунду   -  person Mark Rotteveel    schedule 27.05.2017
comment
@MarkRotteveel, я знаю. Я пытался сообщить вам о неправильном результате проверки;) В любом случае спасибо за обновление этого вопроса.   -  person Victoria    schedule 27.05.2017
comment
@ Виктория, у меня нет возможности отменить уже принятое решение, и я полагаю, Марк тоже не может, но если вы действительно хотите поднять этот вопрос, я думаю, вы можете сделать это на META.stackexchange.net   -  person Arioch 'The    schedule 01.06.2017


Ответы (2)


(V.2.1) Начиная с версии Firebird 2.1, для аутентификации пользователей Firebird на хосте Windows можно применять систему безопасности «Доверенный пользователь» Windows. Контекст безопасности доверенного пользователя передается на сервер Firebird и, в случае успеха, используется для определения имени пользователя безопасности Firebird.

Простое исключение параметров пользователя и пароля из DPB/SPB автоматически приведет к применению проверки подлинности Windows Trusted User почти во всех случаях. Исключения см. в разделе «Окружающая среда» ниже.

из официальной документации

Также взгляните на этот вопрос - https://dba.stackexchange.com/questions/154735/how-to-enable-windows-authentication-in-firebird-2-5

person RBA    schedule 23.05.2017
comment
Я знаю, как использовать ISC_USER & ISC_PASSWORD: C:\Pr~\bin›set ISC_USER=user1 C:\Pr~\bin›set ISC_PASSWORD=12345. Как добавить новый параметр isc_dpb_trusted_auth в DPB? Какой синтаксис мне нужно использовать? Спасибо. - person Vinod_cmdl; 26.05.2017
comment
@Vinod_cmdl прочитайте исходники dbExpress и найдите функцию, которая создает DPB, и проверьте, какое имя строки она использует. Единая библиотека Interbase использует имя trust_auth — stackoverflow.com/a/44311652/976391 - person Arioch 'The; 01.06.2017

Если параметр User_Name объекта TSQLConnection не установлен (User_Name= ), используется режим подключения Windows Authentication.

Также установите Authentication = mixed или доверенный файл firebird.conf, и перезапустите службу FirebirdServer.

Если вы не установили параметры user_name и «пароль» в коде (в вашем коде есть комментарии), добавьте их во время разработки. Достаточно добавить только User_Name.

Если вы хотите использовать:

SQLConnection1.Params.add('user_name='); // this is enough
SQLConnection1.Params.add('password='); 

удалите параметры user_name и password из SQLConnection.Params во время разработки.

Примечание. Не используйте:

SQLConnection1.Params.Values['User_Name'] := '';

Это просто удаляет параметр из списка.

Обновить

введите здесь описание изображения

Это работает для меня. Как вы видите в файле firebird.conf, аутентификация является доверительной. Параметры SQLConnection: имя пользователя и пароль пусты. И SQLConnection подключен.

Попробуйте повторить эту картинку.

Я использую Делфи 2010.

person Val Marinov    schedule 27.05.2017
comment
Мартин, я не хочу с тобой связываться. Не волнуйтесь. В любом случае, я сделал то, что должен был сделать в первую очередь, и попробовал свой код с аутентификацией сервера = доверенным. Он не может подключиться, выдавая сообщение об ошибке, указанное OP. Поэтому я удалил свой ответ. - person MartynA; 27.05.2017
comment
@Val Marinov Я пытался, но получил это сообщение. Ваше имя пользователя и пароль не определены. Попросите администратора базы данных настроить учетную запись Firebird. Любая помощь? - person Vinod_cmdl; 01.06.2017
comment
Это перестанет работать, если он установит имя пользователя и пароль в качестве переменных среды Windows. Я не уверен, есть ли в DBX необходимая константа для обеспечения доверенной аутентификации. Однако у Unified Interbase есть - stackoverflow.com/a/44311652/976391 - person Arioch 'The; 01.06.2017
comment
Должен ли я добавить пользователя Windows в базу данных security2.fdb или где-то еще? Я получаю Ваше имя пользователя и пароль не определены. Попросите вашего администратора базы данных настроить сообщение для входа в Firebird. - person Vinod_cmdl; 08.06.2017
comment
@Vinod_cmdl Нет. - person Val Marinov; 08.06.2017
comment
@Вал Маринов Спасибо. Это сработало для меня. Мое приложение также использует компонент DbGo. Итак, может ли кто-нибудь помочь мне узнать, как ADOConnection1 подключиться с использованием проверки подлинности Windows. Спасибо. - person Vinod_cmdl; 22.08.2017