6

我相信我们可以让 Firefox 将 NTLM 数据发送到 SharePoint 网站以进行自动身份验证,我认为这在 IIS 上是可行的。

我想对内部 Rails 站点做同样的事情。

有谁知道我可以通过 Apache/mongrel 设置验证 NTLM 类型用户信息的方式(当然前提是它已经在 Active Directory 域内的 Windows 机器上运行)?

4

7 回答 7

10

我创建了有关如何在 Linux 上为 Apache 安装修补的 mod_ntlm 模块以及如何将经过 NTLM 身份验证的用户名传递给 Rails 以及如何从中创建 Rails 会话的教程。因此,您不需要 Windows 服务器来运行 Rails 应用程序。

在那里,您还可以找到如何在 Firefox 中启用自动 NTLM 身份验证 - 在位置字段中输入“about:config”,然后搜索“network.automatic-ntlm-auth.trusted-uris”。在那里,您可以输入要使用自动 NTLM 身份验证的服务器。

于 2008-12-02T16:20:05.847 回答
4

一些额外的信息,以防有人偶然发现。

我想做一些我认为应该很简单的事情——使用 NTLM 从运行在 Mongrel/Windows 上的 Rails 应用程序(实际上是 InstantRails)中提取用户 Windows 用户名。编写了管理各种握手操作的基本代码(使用http://rubyforge.org/projects/rubyntlm/上的伟大 NTLMRuby 库)并让它在 Firefox 中出色地工作后,我发现 IE 无法正常工作有点沮丧。

Mongrel 在 type1/2/3 消息交换期间不支持 keep-alives(至少在本机上,我相信它有一个 hack/fix),这是 IE 要求的,而 Firefox 没有。

因此,针对远程 NTLM 服务(例如 Sharepoint 或其他网站)对运行在 Windows 上的 Rails 服务器进行身份验证是相当直接的,但是针对在 Windows 上运行的 Rails 服务器验证 IE 浏览器的身份并没有使用 Mongrel 那么多。IIS 将是一个选项,可能是带有 FastCGI 的基本 Apache。前者感觉有点笨拙,后者不会像 Mongrel 那样快。

于 2009-09-17T17:08:07.100 回答
2

我假设您已经确定了需要发送哪些 HTTP 标头才能让 firefox 和 IE 发回 NTLM 身份验证内容,并且只需要在服务器端处理它?

您可以使用一些 ruby​​ 的win32 库来访问处理 NTLM 的底层 Windows 身份验证功能。

我建议阻力最小的路径可能是查看是否有可以为您进行身份验证的 COM 组件,如果有,请使用 Win32OLE ruby​​ 库来使用它。

如果没有 COM 组件,您可能会在其他库之一中找到可以为您调用本机 win32 方法的内容。

如果找不到,则必须编写一个 ruby​​ C 扩展。我在 linux 上做过这个,扩展 ruby​​ 很容易,但是你可能会发现 microsoft authentication API 有点痛苦。

希望这能让你走上正确的道路:-)

于 2008-09-29T21:13:29.160 回答
2

您还可以使用Apache ntlm 模块,它应该使用经过身份验证的用户的用户名将标头向前传递给您的应用程序。该模块看起来有点旧,但建议了一些其他可能适合您需求的模块。

于 2008-09-30T15:10:26.653 回答
2

我知道的老问题,但我在寻找类似的答案时遇到了这个问题。

您可以使用此处描述的方法(http://blog.rayapps.com/2008/12/02/ntlm-windows-domain-authentication-for-rails-application/)。但是 mod_ntlm 用于 UNIX/linux 机器上的 Windows 身份验证。mod_auth_sspi 是您在 windows 下从 apache 进行 winNT 身份验证所需要的。

于 2009-03-16T19:08:48.063 回答
2

这个特定的项目看起来很有希望,并且正在寻找贡献者:

我还没有尝试过。目前我计划实施 Raimonds 的解决方案,因为它似乎取得了很大的成功。

于 2010-04-08T16:58:47.850 回答
0

看看华夫饼。它使用 Win32 API 在 Windows 上向 Java 服务器提供 SSO。有许多实现的过滤器(servlet、tomcat 阀、spring-security)。

于 2010-07-27T13:43:41.050 回答