Как использовать activerecord-sqlserver-адаптер с TinyTDS * и * подключением Integrated Security в Windows * без * сохранения пароля в виде простого текста - PullRequest
10 голосов
/ 05 октября 2011

Я пытаюсь использовать Rails 3.1. с помощью activerecord-sqlserver-adapter (3.1.1) и tiny_tds (0.4.5) на компьютере с Windows. Читая о TinyTDS и его использовании FreeTDS, похоже, что я могу использовать Integrated Security (иначе говоря, Windows Integrated security / NTLM), указав в качестве имени пользователя доменное имя (например DOMAIN \ userbob). Но документы все еще хотят, чтобы я набрал пароль пользователя моего домена в файле database.yml. Это плохая практика, потому что она небезопасна и не использует преимущества единого входа, что является неотъемлемой частью интегрированной безопасности.

Могу ли я подключиться без сохранения пароля в виде простого текста в файле? например,

developement:
    adapter: sqlserver
    mode: dblib
    dataserver: localhost
    database: dev_db
    username: DOMAIN\userbob
#    password: no_no_please_dont_make_me_type_it_here

Но даже если я введу пароль, я получу следующую ошибку:

TinyTds::Error: Unable to connect: Adaptive Server is unavailable or does not exist
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/tiny_tds-0.4.5-x86-mingw32/lib/tiny_tds/client.rb:60:in `connect'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/tiny_tds-0.4.5-x86-mingw32/lib/tiny_tds/client.rb:60:in `initialize'

Я знаю, что мой сервер работает, и текущий пользовательский контекст может подключиться, потому что это работает:

sqlcmd -S localhost -d dev_db -E

Есть идеи? Является ли это возможным? Если нет, то должно быть.

Ответы [ 4 ]

2 голосов
/ 12 декабря 2011

Включите TCP / IP в «Конфигурация сети SQL Server» в утилите диспетчера конфигурации SQL Server.Затем перезапустите службу SQL Server.

Что касается безопасности, вам нужно будет указать свои собственные учетные данные, иначе она будет использовать учетную запись sa.

2 голосов
/ 02 ноября 2012

Очевидно, что SQL Server 2008 по умолчанию настроен на ТОЛЬКО разрешение проверки подлинности Windows.Чтобы изменить это, вы должны открыть Management Studio, щелкните правой кнопкой мыши на своем сервере и выберите Свойства.Выберите «Безопасность» и нажмите «Режим проверки подлинности SQL Server и Windows» в разделе «Проверка подлинности сервера».Это по крайней мере позволит вам напрямую подключаться к серверу, пока TinyTDS не внесет необходимые изменения, чтобы разрешить аутентификацию Windows.

1 голос
/ 24 ноября 2011

Я думаю, что код, устанавливающий соединение, пытается заставить процесс олицетворять контекст безопасности, предоставленный учетными данными, вместо передачи учетных данных по умолчанию на сервер SQL.

Это позволит вам указать разные учетные данные для текущего контекста безопасности. Я использовал этот трюк для подключения к серверу, требующему SSIS из ненадежного домена.

Я не знаю TinyTDS / FreeTDS, возможно, нулевые или пустые учетные данные заставят его использовать контекст безопасности по умолчанию. Попробуйте:

developement:
    adapter: sqlserver
    mode: dblib
    dataserver: localhost
    database: dev_db

или

developement:
    adapter: sqlserver
    mode: dblib
    dataserver: localhost
    database: dev_db
    username:
    password:
0 голосов
/ 28 ноября 2012

Попробуйте использовать

developement:
    adapter: sqlserver
    mode: dblib
    dataserver: localhost\SQLEXPRESS
    database: dev_db
    username: DOMAIN\userbob

или вы установили 2 варианта аутентификации на вашем сервере sql? затем попытайтесь связаться с пользователем sa ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...