gpt4 book ai didi

java - 移植 WebSphere 代码以获取 Tomcat 的远程凭证

转载 作者:行者123 更新时间:2023-11-28 22:30:50 24 4
gpt4 key购买 nike

有人要求我研究从 IBM WAS 7 下的 Web 应用程序移植一些代码,以便它可以在 Tomcat 7 下运行。

这是更大的 SPNEGO/Kerberos SSO 系统的一部分,但出于讨论的目的,我将代码提炼为以下代码,显示了对两个 WebSphere 类 AccessController 和 WSSubject 的依赖关系:

GSSCredential clientCreds = (GSSCredential) com.ibm.ws.security.util.AccessController.doPrivileged(new java.security.PrivilegedAction() {
public Object run() {
javax.security.auth.Subject subject = com.ibm.websphere.security.auth.WSSubject.getCallerSubject();
GSSCredential clientCreds = (GSSCredential) subject.getPrivateCredentials(GSSCredential.class).iterator().next();
return clientCreds;
}
});

我希望能够在 Tomcat 中执行此操作。

[编辑]我认为上面的提炼代码可能没有清楚地解释需要什么。我不需要配置 Tomcat 来控制对 Web 应用程序的访问,也不需要模拟远程用户。我真正需要的是未加密的 Kerberos 票证,这样我就可以将它传递给另一个将完成身份验证的进程。这是一个更完整的片段:

com.ibm.ws.security.util.AccessController.doPrivileged(new java.security.PrivilegedAction() {
public Object run() {
Oid krb5Mechanism = new Oid("1.2.840.113554.1.2.2");
Oid krb5PrincipalNameType = new Oid("1.2.840.113554.1.2.2.1");
GSSManager manager = GSSManager.getInstance();
GSSName serverName = manager.createName("HOST/my.host.org", krb5PrincipalNameType);
javax.security.auth.Subject subject = com.ibm.websphere.security.auth.WSSubject.getCallerSubject();
GSSCredential clientCreds = (GSSCredential) subject.getPrivateCredentials(GSSCredential.class).iterator().next();
GSSContext secContext = manager.createContext(serverName, krb5Mechanism, clientCreds, GSSContext.DEFAULT_LIFETIME);
// After this the Kerberos ticket is extracted from secContext, converted to a String and passed to the other process for authentication
}
});

最佳答案

这段代码基本上做的是从(大概)以前经过身份验证的 JAAS 主题中提取凭据。在 Tomcat 的上下文中,它没有任何用处,因为它只是处理部分 SSO 的特定于服务器的方式。

您应该了解如何为 Tomcat 实现基于 Kerberos 的 SSO。根据Windows Authentication How-To这个有可能。然而,我自己并没有尝试过。

关于java - 移植 WebSphere 代码以获取 Tomcat 的远程凭证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19483317/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com