AcceptSecurityContext(Kerberos)返回SEC_E_LOGON_DENIED

时间:2010-03-19 11:26:09

标签: kerberos

我正在尝试编写一个执行Kerberos身份验证的简单应用程序(暂时不进行相互身份验证)。

操作系统是Windows Server 2003,标准版。 我已经设置了Active目录并使用setspn工具创建了一个SPN。

AcquireCredentialsHandle在客户端和服务器上返回SEC_E_OK。

客户端的InitializeSecurityContext返回SEC_E_OK。

服务器端的AcceptSecurityContext返回SEC_E_LOGON_DENIED。

我确信我的代码没有任何问题,因为我在使用以下MSDN文章中的示例应用程序时看到了相同的行为:http://msdn.microsoft.com/en-us/magazine/dvdarchive/bb985043.aspx

所以我猜我的设置有问题。但我找不到什么。也许我错过了SPN设置中的一些东西?任何帮助表示赞赏。

问候,大卫。

1 个答案:

答案 0 :(得分:3)

是的,问题如下:

说,您的计算机名称为COMP,域名NetBios名称为DOMAIN,您要注册的SPN是MyService / COMP。

“setspn -A MyService / COMP COMP”命令为SYSTEM帐户注册SPN!当您的属于另一个帐户(例如管理员)的流程想要充当该SPN的服务器时,它理解为失败。

您可以使用以下命令将服务器作为SYSTEM(谷歌如何操作)或(更好)为管理员(或任何其他)帐户注册SPN:setspn -A MyService / COMP DOMAIN \ Administrator