我想通过 Kerberos/Negotiate 协议代表用户在代理上进行身份验证。用户将通过服务器的表单登录进行身份验证,服务器知道用户是谁,并且服务器必须代表用户使用 kerberos 对后端服务器进行身份验证。
请帮助我提供示例代码或指出一些好的参考资料。
先感谢您
-csr
我想通过 Kerberos/Negotiate 协议代表用户在代理上进行身份验证。用户将通过服务器的表单登录进行身份验证,服务器知道用户是谁,并且服务器必须代表用户使用 kerberos 对后端服务器进行身份验证。
请帮助我提供示例代码或指出一些好的参考资料。
先感谢您
-csr
Michael:OP 询问的是 MS 所谓的“约束委派”,即他们发明的 S4U Kerberos 扩展,而不是您所指的标准委派(TGT 转发)。
CSR:首先:用户是否在您的“表单登录”中提供了他们的 Kerberos 密码?如果是,则不需要使用 S4U;您可以使用密码启动并直接获取凭据。
如果不是,那么这确实是 S4U 的一个用例。您没有说,但我假设您在 Windows 环境中,尽管 S4U 也已添加到 MIT Kerberos。
与让客户端转发 TGT 不同,S4U 允许域管理员授权服务主体独立地模拟任何用户使用一组有限的其他服务。要为约束委派启用服务:
在您的情况下,您还需要设置“使用任何身份验证协议;” 这使“协议转换”成为可能。如果您的服务正在使用 Kerberos 对用户进行身份验证,您可以让 DC 要求该服务提供来自客户端的最新票证,证明它有一些业务这样做。但是,由于您使用的是不同的身份验证方法,因此您必须放弃该检查;这就是协议转换所做的。
我将从这里开始了解 S4U: http: //msdn.microsoft.com/en-us/library/cc246071 (PROT.13).aspx 。
我为 Apache mod_auth_kerb 编写了一个补丁,为 Unix Web 服务实现了约束委派,所以它确实有效。:)
让客户向您发送可转发的(OK-AS-DELEGATE)票证。您可以从中提取 TGT 并模拟执行您的任务。当我从 IE 或 FF 收到服务票证并为用户绑定 AD 时,这适用于我的情况。