kerberos - AcceptSecurityContext (Kerberos) 返回 SEC_E_LOGON_DENIED

标签 kerberos

我正在尝试编写一个执行 Kerberos 身份验证的简单应用程序(目前没有相互身份验证)。

操作系统为Windows server 2003标准版。 我已经设置了 Active Directory 并使用 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 设置中的某些内容?如有任何帮助,我们将不胜感激。

问候,大卫。

最佳答案

是的,问题如下:

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

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

您可以以 SYSTEM 身份运行您的服务器(google 了解如何操作)或(更好)使用以下命令为管理员(或任何其他)帐户注册 SPN:setspn -A MyService/COMP DOMAIN\Administrator

关于kerberos - AcceptSecurityContext (Kerberos) 返回 SEC_E_LOGON_DENIED,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2476786/

相关文章:

.net - WCF委派有什么好的资源吗?

linux - 在 Linux 上使用 Centrify 将 SPN 设置为与 UPN 相同

ssl - 带有 https 和 kerberos 的 HAProxy

java - IBM JDK 将 GSSCredential 转换为主题

java - SPARK 1.4.0 文件未找到信任库异常

ruby - 使用CORS方法访问受Kerberos保护的REST服务

hadoop - 使用 Kerberos 安全连接到 Mapper 中的 HIVE

python - WinRM - 指定的凭据被服务器拒绝

java - HttpClient 检查 Kerberos 安全网页。 NTLM 登录无效

spring - Angular 2 和 Spring Kerberos