避免使用不推荐使用的 WSSecurityHelper revokeSSOCookies 和 getLTPACookieFromSSOToken 方法

此规则会标记以下不推荐使用的方法: com.ibm.websphere.security.WSSecurityHelper 类:

在传统 WebSphere Application Server 版本 8.5 中不推荐使用这些方法,在将来的发行版中可能会将其除去。 它们在 Liberty上不可用。

提供的功能 WSSecurityHelper.revokeSSOCookies(HttpServletRequest req, HttpServletResponse res) 替换为 Java Servlet-3.0 规范 logout() 设置。 Java Servlet-3.0 logout() 方法将执行所有工作, WSSecurityHelper.revokeSSOCookies(HttpServletRequest req, HttpServletResponse res) 执行以及执行其他状态清除,例如,使会话失效和清除安全性 Subject 从线程中获取。

在二进制扫描程序中,自动修订将替换调用 revokeSSOCookies(HttpServletRequest req, HttpServletResponse res) 通过呼叫 logout() 设置。 例如,以下代码

import javax.Servlet.http.HttpServletRequest;
...
WSSecurityHelper.revokeSSOCookies(req, res);

替换为

import javax.Servlet.http.HttpServletRequest;
...
req.logout();

提供的功能 WSSecurityHelper.getLTPACookieFromSSOToken() 替换为新方法 com.ibm.websphere.security.web.WebSecurityHelper.getSSOCookieFromSSOToken(). 请注意,这个新方法在类中 com.ibm.websphere.security.web.WebSecurityHelper, not com.ibm.websphere.security.WSSecurityHelper. 此方法将从当前线程的主体中抽取 SSO 令牌,并从 SSO 令牌构建 SSO cookie 以在下游 Web 调用上使用。

在二进制扫描程序中,自动修订会将调用替换为 WSSecurityHelper.getLTPACookieFromSSOToken() 通过呼叫 WebSecurityHelper.getSSOCookieFromSSOToken() 设置。 以下对象的 import 语句 com.ibm.websphere.security.web.WebSecurityHelper 添加 (如果需要)。 例如,以下代码

import javax.servlet.http.Cookie;
import com.ibm.websphere.security.WSSecurityHelper;
...
Cookie ltpaCookie = WSSecurityHelper.getLTPACookieFromSSOToken();

替换为

import javax.servlet.http.Cookie;
import com.ibm.websphere.security.WSSecurityHelper;
import com.ibm.websphere.security.web.WebSecurityHelper;
...
Cookie ltpaCookie = WebSecurityHelper.getSSOCookieFromSSOToken();

使用新方法在 WebSphere Application Server Traditional 和 Liberty上兼容。 另请注意, logout() getSSOCookieFromSSOToken() 正在使用的方法,应用程序需要 WebSphere Application Server V8.0 或更高版本。

此规则具有自动修订。 将定制配置复制到应用程序构建文件以将其启用。

有关更多信息,请参阅: