我相信我们可以让Firefox将NTLM数据发送到SharePoint网站进行自动身份验证,我认为这对IIS来说是可行的。
我想对内部Rails网站做同样的事情。
有没有人知道我可以通过Apache / mongrel设置验证NTLM类型的用户信息(当然,它已经在Active Directory域的Windows框中运行)?
答案 0 :(得分:10)
我在Linux上为Apache创建了tutorial on how to install patched mod_ntlm module以及如何将经过NTLM身份验证的用户名传递给Rails以及如何从中创建Rails会话。因此,您不需要Windows服务器来运行Rails应用程序。
在那里你还可以找到如何在Firefox中启用自动NTLM身份验证 - 在位置字段中输入“about:config”,然后搜索“network.automatic-ntlm-auth.trusted-uris”。在那里,您可以输入要使用自动NTLM身份验证的服务器。
答案 1 :(得分:4)
有些额外的信息,以防万一有人偶然发现。
我想做一些我认为应该非常简单的事情 - 使用运行在Mongrel / Windows上的Rails应用程序(实际上是InstantRails)使用NTLM提取用户窗口用户名。编写基本代码后,管理各种握手操作(在http://rubyforge.org/projects/rubyntlm/使用了很棒的NTLMRuby库)并让它在Firefox中运行得非常好,我发现IE无法工作有点沮丧。
Mongrel在type1 / 2/3消息交换期间不支持keep-alives(至少在本地,我相信有一个hack / fix for it),IE要求和Firefox没有。
因此,针对远程NTLM服务(例如Sharepoint或其他网站)对Windows上运行的Rails服务器进行身份验证是相当直接的,但是针对运行在Windows上的Rails服务器而不是使用Mongrel来验证IE浏览器。 IIS可能是一个选项,可能是基本的Apache与FastCGI。前者感觉有点笨拙而后者不会像Mongrel那么快。
答案 2 :(得分:2)
我假设您已经确定了需要发送哪些HTTP头,以便让firefox和IE发回NTLM身份验证的东西,并且只需要在服务器端处理它?</ p >
您可以使用某些ruby的win32 libraries来访问处理NTLM的基础Windows身份验证函数。
我建议阻力最小的路径可能是查看是否有可以为您进行身份验证的COM组件,如果是,则使用Win32OLE ruby库来使用它。
如果没有COM组件,您可以在其中一个库中找到可以为您调用本机win32方法的内容。
如果你找不到,你必须写一个ruby C扩展。我在linux上做过这个,扩展ruby非常简单,但你可能会发现微软认证API有点痛苦。
希望能让你开始走上正轨: - )
答案 3 :(得分:2)
您还可以使用Apache ntlm module,它应该使用经过身份验证的用户的用户名向您的应用程序传递标头。该模块看起来有点旧,但建议一些其他模块可能适合您的需求。
答案 4 :(得分: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身份验证所需要的。
答案 5 :(得分:2)
这个特别的项目看起来很有前途,正在寻找贡献者:
我还没试过这个。目前我计划实施Raimonds的解决方案,因为它似乎取得了很大的成功。
答案 6 :(得分:0)
结帐Waffle。它使用Win32 API在Windows上为Java服务器提供SSO。有许多已实现的过滤器(servlet,tomcat valve,spring-security)。