如何在Windows*上使用带有TinyTDS*和*集成安全连接的activerecord-sqlserver-adapter,而无需在纯文本中保存密码

Rus*_*l B 10 windows sql-server activerecord ruby-on-rails

我正在尝试使用Rails 3.1.在Windows机器上使用activerecord-sqlserver-adapter(3.1.1)和tiny_tds(0.4.5).在阅读有关TinyTDS及其使用FreeTDS时,看起来我可以通过将域限定名称作为用户名(例如DOMAIN\userbob)来使用集成安全性(也称为Windows集成安全性/ NTLM). 但是文档仍然要我在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
Run Code Online (Sandbox Code Playgroud)

但是,即使我输入密码,我也会收到以下错误:

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'
Run Code Online (Sandbox Code Playgroud)

我知道我的服务器正在运行,当前用户上下文可以连接,因为这有效:

sqlcmd -S localhost -d dev_db -E
Run Code Online (Sandbox Code Playgroud)

任何见解?可能吗?如果没有,它应该是.

Ste*_*ner 1

我认为建立连接的代码试图使进程模拟凭据提供的安全上下文,而不是将默认凭据传递到 SQL Server。

这将允许您为当前安全上下文指定不同的凭据。我已经使用这个技巧从不受信任的域连接到需要 SSIS 的服务器。

我不知道 TinyTDS/FreeTDS,也许 null 或空凭据会使其使用默认安全上下文。尝试:

developement:
    adapter: sqlserver
    mode: dblib
    dataserver: localhost
    database: dev_db
Run Code Online (Sandbox Code Playgroud)

或者

developement:
    adapter: sqlserver
    mode: dblib
    dataserver: localhost
    database: dev_db
    username:
    password:
Run Code Online (Sandbox Code Playgroud)