【发布时间】:2023-03-19 15:25:01
【问题描述】:
我在 Windows 7 上遇到了 Kerberos 问题。
我有什么:
- 我使用的是 Windows 7
- 在 system32 下,我有 klist(来自 MS Corp)但我没有 kinit
- 我有来自 jdk8 的 klist 和 kinit,但未包含在 PATH 环境变量中
- 我在 Hortonworks 32 位 ODBC 驱动程序 2.01 之上有一个 ODBC 数据源,并且该数据源依赖于 kerberos 身份验证
我观察到,当我当前的目录是 jdk8/bin 时:
- kinit 启用创建票证,我得到:新票证存储在缓存文件 C:\Users[login]\krb5cc_[login]
- klist 正确检测到该缓存中的所有票证
当我当前的目录不是 jdk8/bin 时,我观察到的情况:
- klist (system32's) 没有从上面的缓存文件中读取
我想做的事:
- 有点:告诉 ODBC 驱动程序读取 Java 的 Krb 缓存而不是系统的 Krb 缓存(此外,它位于哪里???)
我已经尝试过的:
- 添加一个指向缓存文件的环境变量 KRB5CCNAME,但事实并非如此。
有什么解决办法吗?
谢谢
【问题讨论】:
-
Windows 确实 not 将 Windows 会话使用的票证缓存在 file 中——并且 Windows
klist基于 SSPI,它不 是否像 Java 那样遵循 GSSAPI 标准。检查您的 ODBC 驱动程序以查看它是否支持 GSSAPI (例如,使用 Cloudera 驱动程序,不要启用“仅 SSPI”复选框) -
仅供参考,最新版本的 MIT Kerberos (GSSAPI) 有一个声称能够访问 Microsoft 缓存的 Windows 版本,昵称为 MSLSA web.mit.edu/kerberos/krb5-latest/doc/basic/ccache_def.html >> 但我不确定 Java 是否支持。 ..
-
谢谢 Samson Scharfrichter。所以 Windows 使用 SSPI 并且没有缓存文件,而 Java 使用 GSSAPI。没有解决 ODBC 问题,但得到了我的答案。谢谢。
标签: windows hive odbc kerberos