Kerberos /代表用户协商S4U2proxy身份验证

时间:2012-08-14 18:26:28

标签: kerberos

我想通过Kerberos / Negotiate协议代表用户在代理进行身份验证。 用户将使用表单登录服务器进行身份验证,服务器知道用户是谁,服务器必须代表用户使用kerberos对后端服务器进行身份验证。

请帮我提供示例代码或指出一些好的参考资料。

提前谢谢

-CSR

2 个答案:

答案 0 :(得分:1)

迈克尔:OP正在询问MS所谓的“约束委派”,即他们发明的S4U Kerberos扩展,而不是你所指的标准委托(TGT转发)。

CSR:首先:用户是否在“表单登录”中提供了Kerberos密码?如果是这样,您不需要使用S4U;您可以使用密码进行操作并直接获取凭据。

如果没有,那么这确实是S4U的一个用例。你没有说,但我会假设你在Windows环境中,虽然S4U也被添加到MIT Kerberos中。

而不是让客户端转发TGT,S4U允许域管理员授权服务主体独立模仿任何用户到一组有限的其他服务。为受约束的委派启用服务:

  • MMC“用户和计算机”管理单元
  • 选择服务帐户的属性
  • “委派”标签
  • “trust ... for delegation to specified services”

在您的情况下,您还需要设置“使用任何身份验证协议”;这可以实现“协议转换”。如果您的服务使用Kerberos对用户进行身份验证,您可以让DC要求服务从客户端提供最近的票证,证明它有一些业务这样做。但是,由于您使用的是不同的身份验证方法,因此您必须放弃检查;这就是协议转换的作用。

我从这里开始理解S4U:http://msdn.microsoft.com/en-us/library/cc246071(PROT.13).aspx

我已经为Apache mod_auth_kerb编写了一个补丁,为Unix Web服务实现约束委派,所以它确实有用。 :)

答案 1 :(得分:0)

让客户端向您发送可转发(OK-AS-DELEGATE)票证。您可以从中提取TGT并模拟执行任务。当我从IE或FF收到服务票据并为用户绑定AD时,这适用于我的情况。