为什么可以通过LDAP进行身份验证和授权,还需要使用Kerberos?

10

我们正在讨论在我们的大数据集群中使用Kerberos的问题。我们的管理员想要使用LDAP进行身份验证和授权。我在互联网上查阅了一些信息,得到了不同的回复,但是没有明确理解为何要使用Kerberos。

我知道你可以将Kerberos与LDAP一起使用,但我没有清晰地了解到使用Kerberos+LDAP相比仅使用LDAP的好处。有人能解释一下吗?


我猜Kerberos是用于安全和监控更多协议,如LDAP身份验证等的设置会在那里进行...关于LDAP + Kerberos还是只用LDAP的问题,我真的无法回答,因为它们不是同一回事。 - user8556290
1
好问题。为什么微软在Active Directory身份验证中使用Kerberos?也许是因为它很古老,经过了实战考验,并且安全 - 特别是如果您不能信任您的网络(数据包嗅探,中间人攻击,重放攻击等)。 - Samson Scharfrichter
1个回答

29

Kerberos是企业内部网络行业标准的单点登录协议。LDAP一直更多地是一个目录查找协议。然而,LDAP也可以进行认证,因为认证方面是在该协议本身构思数年之后加入的。使用LDAP认证,每次认证尝试都会对目录身份验证服务器产生负载,因此在这个意义上,它可能经常影响您的目录身份验证服务器。使用Kerberos,第一次认证后,客户端持有一张有效期默认为10小时的票据,因此不需要再次过载您的目录身份验证服务器进行其他认证尝试。并且客户端将负责获取身份验证“票证”到目标资源,而不是应用程序服务器代表客户端执行此操作,这是那些使用LDAP身份验证机制的应用程序服务器必须执行的操作。此外,如果未正确配置,LDAP将以明文形式发送认证尝试。即使您配置了通过LDAPS进行加密身份验证,那么您还需要获得SSL证书来执行此操作,然后您还需要解决在任何应用程序服务器上以明文形式存储用户名/密码的问题,除非有人采取额外的步骤对其进行加密。简而言之,作为身份验证协议,Kerberos比LDAP更加安全、分散,并且对您的目录身份验证服务器产生的负载更少。在纯微软活动目录环境中,Kerberos将为您执行身份验证和授权,而目录查找始终使用LDAP。此外,LDAP不是单点登录。用户必须始终手动输入用户名/密码,而使用Kerberos则不必这样做。

如果您使用Kerberos进行身份验证,使用LDAP进行目录查找和/或基于组的授权,则最佳实践是这样做,因为RFC中LDAP最初是作为仅目录查找协议而设计的。实际上,当您使用诸如“Active Directory用户和计算机”实用程序之类的工具时,当您使用它时会发生什么情况,就是您通过传递Kerberos身份验证来允许自己查询AD LDAP服务,然后从那一点开始,您的LDAP查询就是纯粹的LDAP。在由Windows和Linux等不同操作系统组成的混合环境中,您始终可以使用Kerberos进行身份验证,但这需要在应用程序端进行更多的操作,例如您需要由AD管理员为您生成一个keytab,但基于组的授权必须是LDAP,当然目录查找始终是LDAP。
您的管理员可能希望您完全使用LDAP,因为这是更容易设置的路线-他只需提供AD用户帐户凭据,然后您必须在应用程序端进行配置,以允许用户登录,然后允许基于组的授权,然后通过LDAP查询目录。
这个问题实际上涉及对Kerberos与LDAP的深入理解,还有很多要说和阅读的,但我现在需要停在这里并为您提供一个链接:Kerberos与LDAP进行身份验证

5
如果AD账户是随机密码生成的,例如用于服务账户,那么确实需要由AD管理员为您生成一个keytab。但如果您知道自己的密码,无论是在Linux上使用ktutil(与kinitklist一同安装)还是在Windows上使用ktab.exe(与Sun/Oracle JRE一同安装),都可以创建一个keytab。 - Samson Scharfrichter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接