Kerberos的感知/实际优势是什么?有没有任何可行的替代技术?

问题描述:

我们正在计划在我们的架构中使用Kerberos。我想知道这种技术具有哪些优势或实际优势,以及是否有其他选择。Kerberos的感知/实际优势是什么?有没有任何可行的替代技术?

请注意,我们有一个.net客户端和java服务器端。通信将通过消息传递总线和SOA

+1

不知道你的要求,我不认为任何人都可以提出有意义的替代方案。 – lothar 2009-05-21 18:18:02

如果您在大多数Windows环境(即Windows Server 2k3,域控制器,Active Directory等)内工作,尤其是可以使用通过.NET的impersonation分离的网络服务器和数据库服务器。使用旧的NTLM方法,你不能做一个“双跳”。


让我们来看一个例子:

  • 你有一个Web服务器(WEB1)
  • 你有一个单独的机器(DB1)的数据库服务器
  • 你有一个用户访问您的网站(USER1)

USER1点击显示订单列表的页面。您的WEB1服务器必须查询DB1,才能将此信息显示在页面上。您想根据用户的凭据和访问权限限制看到的订单。因此,您设置了活动目录组并相应地分配用户。在您的数据库中,您为不同的组提供不同的安全性(例如,GROUP1可能只有选择,GROUP2可能会选择,插入和更新)。

NTLM不支持完成此操作所需的双跳。 WEB1必须将USER1的凭证发送到DB1(否则,WEB1必须使用硬编码到web.config中的已知专用用户标识和密码登录到DB1,例如,通常必须具有完全访问权限才能支持所有可能的用户角色)。你可以想象,如果WEB1受到攻击,这可能会带来安全隐患,所以你不能这样做,否则任何获得WEB1控制权的人(可能通过sql注入)都可以做任何专用用户帐号,或者模拟任何他们想要的东西。 Kerberos通过Windows Server上的委派支持通过保持来自域服务器的加密凭据密钥完整并传递,并验证是否允许执行此第二次跳转(两端都有,请参阅下面的内容,以便在服务器上进行设置因为它必须被明确地允许)。

在开发具有数据库后端的Intranet Web应用程序(这种情况的99%时间是正确的)并且您希望通过Windows集成安全性控制授权和身份验证时,这样做非常有用。除非您的Web服务器和数据库服务器位于同一台计算机上,否则Kerberos确实是您唯一的选择,这意味着不需要传输凭据并且不需要模拟。

参见:

+1

这是如何回答关于Kerberos优点的OP问题?鉴于Active Directory是Kerberos实现的事实,它也几乎不可替代Kerberos。 – lothar 2009-05-21 20:01:01