Ruby / Rack中的单点登录服务器验证

我在 Windows服务器上编写和托管Web应用程序,用于Intranet的使用.我的服务器堆栈使用Sinatra(使用Rack),Thin,(在某些情况下)Apache仅用于反向代理.

我希望在我们的ActiveDirectory支持的域中支持单点登录(使用NTLM或Kerberos).我看到我可以使用mod_ntlm或mod_auth_kerb,当我在Apache后面执行我的NTLM身份验证.我还没有尝试过,但我认为它会奏效.

我的问题是关于NTLM或Kerberos认证,当我不在Apache后面,只使用Thin和Sinatra.我看过rack-ntlm,但使用细节却非常稀疏.

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

编辑:强调所需的答案,因为迄今没有答案接近提供这个问题要求的明确的帮助.用户应该可以找到这个答案,并有一个工作的解决方案,而不是指向外部库,他们必须弄清楚如何使用.

解决方法

我写了一个实现NTLM SSO的Rack :: Auth模块.这可能有点粗糙,但它适用于我.它完成了所有这些挑战/响应的东西,这是NTLM所必需的,并将REMOTE_USER设置为浏览器提交的任何内容.

Here’s the code.

为了使这个工作,浏览器必须设置为将NTLM的东西发送到服务器.在我的环境中,这只发生在服务器地址在可信域列表中时.对于Firefox,域必须添加到分配给关键网络的名称.automatic-ntlm-auth.trusted-uris,可通过以下方式访问:config.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...