Phr*_*ogz 15 ruby rack ntlm kerberos active-directory
我在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).
编辑:强调了所需的答案,因为到目前为止还没有答案提供这个问题要求的明确帮助.用户应该能够找到这个答案并拥有一个可行的解决方案,而不是指向外部库的指针,他们必须弄清楚如何使用.
我写了一个Rack::Auth实现NTLM SSO 的模块.它可能有点粗糙但它对我有用.它完成NTLM所需的所有挑战/响应内容,并设置REMOTE_USER为浏览器提交的内容.
要使其工作,必须将浏览器设置为将NTLM内容发送到服务器.在我的环境中,这只发生在服务器地址位于受信任域列表中时.对于Firefox,必须将域添加到分配给network.automatic-ntlm-auth.trusted-uris可通过其访问的密钥的列表中about:config.
虽然我没有任何代码可以共享,也没有AD服务器进行测试,但我会发布一些其他人在使用rack-ntlm时可能会发现有用的一般信息(这是此时最好的路径) .
首先要明白的是,NTLM实际上从未向您提供用户密码.您无需在应用内验证用户身份.NTLM已经做到了.rack-ntlm会给你一个域名+用户,你可以使用它.
rack-ntlm会对那些可能对您有价值的信息做一些额外的工作.您为它提供AD服务器,端口和一组凭据.它将采用该用户对象(缺少更好的单词)并通过LDAP调用在AD中查找它们.
rack-ntlm在设置中要求的凭据将是您的凭据(或者最佳地,在域中具有有限查询访问权限的特定于应用程序的凭据).使用该查询,您可以从AD中获取该用户的详细信息(组成员身份,电子邮件地址等).您可以使用它来进一步使用用户详细信息填充数据库.
需要注意的一点是,如果您使用IE以外的任何浏览器(在某些情况下,甚至使用IE),您的用户将获得HTTP身份验证对话框.根据您的站点是否在"Intranet"上,IE将自动通过NTLM凭据.这是基于每个浏览器控制的,因此您可能无法控制.在firefox中,有一个"about:config"设置可以让你填充可信站点.
因此,如果我们回到rack-ntlm,流程将如下所示:
如果需要,可以将AD组映射到某个容量的应用程序角色,以便将域管理员自动添加到您的管理角色中.
| 归档时间: |
|
| 查看次数: |
9202 次 |
| 最近记录: |