我正在本地域上测试 JGSS 示例,但基于主机的服务存在问题。下面是设置:
获取从命令生成的密钥表
ktpass -princ myservice/host.my.example.com@MY.EXAMPLE.COM -mapuser krbsrv@my.example.com -crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCILAL -pass krbpass -out myservice-host.keytab
系统管理员运行
setspn -S myservice/host.my.example.com krbsrv
以设置活动目录的 SPN。从 GssClient.java 通过以下方式创建 serverprincipal:
GSSName serverName = manager.createName(serverPrinc, GSSName.NT_HOSTBASED_SERVICE);
这将导致
java.security.PrivilegedActionException: GSSException: No valid credentials provided (Mechanism level: Server not found in Kerberos database (7))
异常。但如果我打电话
createName()
就GSSName.NT_USER_NAME
不会出错。我已经询问了系统管理员并验证了
setspn -L krbsrv
和没有重复setspln-X myservice/host.my.example.com
。
那么我有什么事情搞砸了吗?服务器在 Solaris 上运行,客户端在 Windows 上运行,两者都在 Java 6u27 上。
非常感谢您的建议。