【发布时间】:2015-03-31 20:12:01
【问题描述】:
我已经有一段时间没有用 Java 编码了,所以我可能遗漏了一些明显的东西。我想通过 JDBC 连接到数据库(我需要支持很多 - SQL Server、MySQL 等)。但是,我想使用在 Java 8 中添加的 Microsoft S4U Java 扩展支持来实现 Kerberos 委托。我不希望用户必须在我的中间层服务器上输入他们的凭据。我想使用 S4U 代表用户获取我的中间层服务器的票证,并使用它通过 doAs 函数(Subject.doAs 或 doAsPrivileged)调用 JDBC 代码。
我在 Windows 上使用 C++ 和 ODBC 添加了对协议转换和约束委派的支持。但我不知道如何对 Java 做同样的事情。 Java 上的 S4U 文档很少。此页面似乎包含最多的信息 - http://docs.oracle.com/javase/8/docs/technotes/guides/security/jgss/jgss-features.html。该页面显示“一个新的公共方法 (GSSCredential::impersonate) 已添加到 com.sun.security.jgss 包中以实现这些扩展。”基于http://docs.oracle.com/javase/7/docs/technotes/guides/security/jgss/single-signon.html,我在想我需要使用类 LoginContext 和 Subject 在 JDBC 连接调用上调用 doAs,以便连接在 Subject 的凭据下通过。但是如何在混合中使用 GSSCredential::impersonate?
谢谢, 埃德
【问题讨论】:
标签: java sql-server jdbc java-8 kerberos