为什么服务器需要访问Kerberos?

时间:2012-10-04 12:03:04

标签: active-directory kerberos spnego

我正在尝试了解如何向远程服务器验证Active Directory用户。

目标是使用SPNEGO接收Kerberos票证。然后可以解密Kerberos票证,并可以建立用户的身份。

我不明白的是,为什么需要在服务器和Kerberos之间进行访问。由于服务票证包含客户端标识并由TGS私钥加密,因此服务器不需要访问Kerberos TGS。它可以解密Ticket并知道用户身份。 任何人都可以向我解释为什么有必要吗?

http://www.adopenstatic.com/cs/blogs/ken/archive/2007/01/16/1054.aspx

如果我想要的只是客户身份,那么任何身份提供者或WIF等计划似乎都没有必要。

1 个答案:

答案 0 :(得分:1)

事实证明这个问题有很多答案......我甚至不会尝试在这里覆盖所有这些问题(部分是因为简洁的原因,部分是因为细节变得朦胧而我不记得了所有:))。 我将介绍想到的两个人,但同样,还有更多。

首先,你说的是到DC的往返旅行,好像它是关于Curb的,因为DC是KDC。我想这是看待它的一种方式,但整体Windows身份验证堆栈不仅仅是验证Curb票证。例如,需要像SID解析这样的东西,以便在做出authz决定时从进入的票中做出正面或反面。因此,由于许多原因并且使用许多协议,其中一些协议支持authz堆栈,这是大多数人通常感兴趣的协议,因此通信会发生在DC(这是一个KDC等)上。

其次,对于Curb来说......有一些协议的功能,其中返回KDC具有安全值。 PAC验证是第一个想到的。我建议阅读这篇文章......这是涵盖它的众多文章之一:http://blogs.msdn.com/b/openspecification/archive/2009/04/24/understanding-microsoft-kerberos-pac-validation.aspx 我会注意到,在这种情况下,您可以采取一些措施来实际禁用此下游 - > KDC流程(如给出主TCB)。这些事情不能轻易做到......也就是说,它不仅仅是一个需要考虑的“性能修复”。 :)