2010-03-15 95 views
1

我正在尝试编写一个执行Kerberos委派的概念验证应用程序。我编写了所有的代码,并且它似乎正在工作(我正在进行身份验证),但是生成的安全上下文没有设置ISC_REQ_DELEGATE标志。关于Kerberos,委派和SPN的混淆

所以我在想,也许其中一个端点(客户端或服务器)被禁止委托。但是,我没有对SPN进行身份验证。只有一个域用户针对另一个域用户。作为InitializeSecurityContext()的SPN,我传递了“[email protected]”(这是运行服务器应用程序的用户帐户)。据我所知,域用户默认启用了委托。无论如何,我要求管理员检查,并且“帐户敏感且无法委派”复选框已关闭。

我知道如果我的服务器是作为NETWORK SERVICE运行的,并且我使用SPN连接到它,那么我需要AD中的计算机帐户才能选中“信任计算机委派”复选框默认),但是......情况并非如此,对吗?或者是?

此外 - 当设置了计算机帐户中的复选框时,立即进行更改,还是必须重新启动服务器PC或等待一段时间?

+0

Vilx也在[ServerFault]上发布了这个(http://serverfault.com/questions/122552/confusion-about-kerberos-delegation-and-spns)。为了他人的利益而链接到这里。 :) – Chiramisu 2012-11-09 21:57:07

回答

2

根据this如果您使用约束委派,ISC_REQ_DELEGATE仅被忽略。我非常肯定会发生受限委派,您必须明确说明允许帐户在Active Directory中委派的服务(AD管理单元中的用户或计算机的委派选项卡)。

我不确定使用UPNs和SPNs的规则。您是否试过打开Kerberos event logging并查看事件日志?这些消息通常是隐秘的,但通常可以解密。

您对NETWORK SERVICE方案的描述是准确的。委派信任默认关闭,但NETWORK SERVICE可能有权自行注册SPN(我认为这可以由组策略确定)。

当您勾选框时,更改立即发生,但可能必须在域中的所有域控制器中传播(我通常在测试域中使用单个DC进行测试)。因此,重新启动您的服务应用程序就足够了,您无需重新启动。

遏制票据驻留在客户机上。这些都有到期时间,并且可以使用klist或kerbtray手动刷新。