我需要在 unix 机器上使用 kerberos 登录才能使用 windows 网络调用 URL。我可以在 Windows 中使用 useTicketCache=true 并且一切正常。如何从 unix 框中执行此操作,然后将用户/传递给我的 java 程序而不是使用票证缓存?
1 回答
            1        
        
		
这不是你应该走的路。人自己应该在 Windows 登录时获得 TGT。您访问 TGT,然后从 KDC 获得服务票证。如果您的 unix 设置不使用 winbind 执行身份验证,因此您无权访问预填充的凭据缓存,您有三个选项:
- 在 AD 中使用 winbind 管理您的 unix 用户
 - 执行一个unix
kinit - 将 a
Username和/或传递PasswordCallback给new LoginContext. 
我倾向于1或2。
选项二在 Java 中的工作方式如下:
Runtime.exec("kinit " + upn);
// Obtain the input stream of the forked process
is.write(password);
// Check exit code
现在,您的凭证缓存中有一个本机有效的 TGT。Java 现在可以选择它并请求进一步的服务票证。
于 2012-11-14T21:29:36.667   回答