我需要在 unix 机器上使用 kerberos 登录才能使用 windows 网络调用 URL。我可以在 Windows 中使用 useTicketCache=true 并且一切正常。如何从 unix 框中执行此操作,然后将用户/传递给我的 java 程序而不是使用票证缓存?
问问题
734 次
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 回答