ruby - Ruby/Rack 中的单点登录服务器身份验证

标签 ruby active-directory rack kerberos ntlm

我在 Windows 服务器上编写和托管 Web 应用程序以供内部网使用。我的服务器堆栈使用 Sinatra(使用 Rack)、Thin 和(在某些情况下)Apache 仅用于反向代理。

我想在我们的 ActiveDirectory 支持的域中支持单点登录(使用 NTLM 或 Kerberos)。我已经看到我可以使用 mod_ntlmmod_auth_kerb当我在 Apache 后面执行我的 NTLM 身份验证时。我还没有尝试过,但我认为它会起作用。

当我不支持 Apache 时,我的问题是关于 NTLM 或 Kerberos 身份验证,仅使用 Thin 和 Sinatra。我看过rack-ntlm ,但那里的使用细节非常稀少。

请在 Sinatra 或 Rack 下提供已知工作代码,展示如何在服务器端使用NTLM 或 Kerberos,使用 ActiveDirectory 进行身份验证(大概通过 net-ldap).

编辑:强调了所需的答案,因为到目前为止还没有答案能够提供该问题所要求的明确帮助。用户应该能够找到这个答案并拥有一个可行的解决方案,而不是指向他们必须弄清楚如何使用的外部库的指针。

最佳答案

我编写了一个实现 NTLM SSO 的 Rack::Auth 模块。这可能有点粗糙,但对我有用。它执行 NTLM 所需的所有挑战/响应内容,并将 REMOTE_USER 设置为浏览器提交的任何内容。

Here's the code.

要实现此功能,必须将浏览器设置为向服务器发送 NTLM 内容。在我的环境中,这仅在服务器地址位于受信任域列表中时才会发生。对于 Firefox,域必须添加到分配给键 network.automatic-ntlm-auth.trusted-uris 的列表中,可以通过 about:config 访问。

关于ruby - Ruby/Rack 中的单点登录服务器身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5688080/

相关文章:

ruby-on-rails - 猴子修补 use_ssl= 方法适用于 Net :HTTP but not for OpenURI in Ruby 1. 9.3?

ruby - Marshal 类,有没有办法找到数据是否已经序列化?

mysql - 在Sequel模型中指定外键

linux - Univention UCS 4.2 - 'Active Directory Takeover' 进程失败 - 故障排除

ruby - 通过 Sinatra 应用程序将选项传递给 rackup

ruby-on-rails - 如何知道模型是否在 Ruby 中设置了关系?

powershell - Get-ADCompter 命令返回空响应

c# - 代码访问 ActiveDirectory 的单元测试

ruby-on-rails - "use"Ruby/Rails/Rack 代码中的关键字/词

ruby-on-rails - Rack Gem::LoadError 即使我使用的是 Bundler