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

时间:2009-05-21 18:15:40

标签: authentication protocols network-protocols kerberos

我们计划在我们的架构中使用kerberos。我想知道这项技术的优势或实际优势,以及是否有其他选择。

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

1 个答案:

答案 0 :(得分:4)

如果您在大多数Windows环境(即Windows Server 2k3,域控制器,Active Directory等)中工作,特别是您可以使用impersonation通过.NET与拆分Web服务器和数据库服务器使用旧的NTLM方法,您无法进行“双跳”。


让我们看一个例子:

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

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

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

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

另见: