我有以下场景:我有一个在 Oracle 数据库(使用 Java SE 6)中运行的服务器,它使用 Apache HTTP 客户端(Java 中)连接到 Web 服务。需要使用 Kerberos 保护 Web 服务,即使用 SPNEGO 身份验证。
我的服务器有一个 Kerberos 主体,随机密钥导出到密钥表,然后导入到数据库表中。因此,我有一个 KerberosPrincipal,其中包含许多关联的 KerberosKey 对象(每种加密方法一个),所有这些信息都是我在主题中收集的。
我希望下一步是联系 KDC 以获取 TGT 并将其存储在主题中。我怎么做?我在此找到的所有文档都假设这发生在登录模块中,但在我的场景中没有登录。或者以下人员之一会为我致电 KDC?
现在我需要调用 GSSManager.createCredential 来创建一个 GSSCredential,我可以将它包装到一个 KerberosCredentials 和一个 BasicCredentialsProvider 中,我可以将它们添加到 HttpClientContext 中,这样 HttpClient 就可以进行 SPNEGO 身份验证。
但是如何将我的主题中的信息获取到 GSSCredential 中?