概念:Kerberos delegation允许一台服务器,模拟客户的身份,代表客户去访问远程的资源。Delegation 指得是服务器进程帐户(用于服务器进程运行的User帐户或者本地SYSTEM帐户)代表客户端帐户(客户端访问服务器的帐户)去访问远程资源。

实例:一台 IIS 服务器,一台 Exchange 服务器,一台域控制器。客户端有一个帐户(假设为 test\clienttest ,是 test 域的一个用户)需要访问远程 Exchange 服务器取得相应的信息(如邮件,日历,任务等信息)。由于进程是在 IIS 服务器上运行的,服务器上的帐户(假设为 test\servertest ,也是 test 域的一个用户)和客户端的帐户一般是不同的,而访问的过程是通过服务器上的帐户,显然是不能验证通过的。

解决方案:通过 Kerberos delegation 。让 test\servertest 帐户模拟 test\clienttest 帐户,去访问 Exchange 服务器上的资源。验证过程是这样的: test\servertest 帐户取得 test\clienttest 帐户的 Credential ,利用这个 Credential Exchange 服务器上验证,显然是能通过的。验证通过以后,将取回的信息返回给客户端。

      注意的问题:
1test\servertest帐户模拟test\clienttest帐户去访问远程服务器(假设名为Exch),此时Exch看到的是一个空Session,而不是test\servertest帐户的一个登录。
2 Kerberosdelegation 要求客户端和服务器端的时间保持同步,如果不同步,验证将不能通过。所以造成有时候能通过验证有时候(往往是就几个小时以后)能够通过的可能原因是: 与精确性低的时间源同步或网络条件不太好造成了服务器和客户端之间的时间差。