我在 Windows 服务器上编写和托管 Web 应用程序以供内部网使用。我的服务器堆栈使用 Sinatra(使用 Rack)、Thin 和(在某些情况下)Apache 仅用于反向代理。
我想在我们的 ActiveDirectory 支持的域中支持单点登录(使用 NTLM 或 Kerberos)。我已经看到我可以使用 mod_ntlm
或 mod_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
设置为浏览器提交的任何内容。
要实现此功能,必须将浏览器设置为向服务器发送 NTLM 内容。在我的环境中,这仅在服务器地址位于受信任域列表中时才会发生。对于 Firefox,域必须添加到分配给键 network.automatic-ntlm-auth.trusted-uris
的列表中,可以通过 about:config
访问。
关于ruby - Ruby/Rack 中的单点登录服务器身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5688080/