擦除 websphere 中的 cookie - 如何注销

Posted

技术标签:

【中文标题】擦除 websphere 中的 cookie - 如何注销【英文标题】:Erase cookie in websphere- how to log out 【发布时间】:2015-02-12 12:44:33 【问题描述】:

我正在使用另一个网页,该网页通过 URL 将用户身份验证(AD 登录)传递给 WebSphere。当我注销时,我将重定向到登录页面并且已经登录,因为我的会话从未关闭。我尝试了一些方法来禁用 WebSphere 的 cookie,但没有任何效果。当我按下注销按钮时,是否有一种简单的方法可以使用 java 代码删除 cookie?非常感谢任何帮助。

【问题讨论】:

【参考方案1】:

如果您使用的是 WebSphere 8.x,则在重定向到注销页面之前,您应该使用 servlet 3.0 api 和 request.logout() 方法。此方法将删除会话和身份验证 cookie。

对于较旧的 WebSphere 版本/servlet api,请使用以下内容(在 WAS v8 中已弃用):

try 
    WSSecurityHelper.revokeSSOCookies(req, res);
     catch(Exception e) 
    ...

更新 对于 v7,我建议使用 form-logout。 如果您想注销表单应用程序,您可以创建以下注销表单,或创建自定义帖子到ibm_security_logout,您可以在注销后使用logoutExitPage 重定向到所需页面:

<h2>Sample Form Logout</h2>
<FORM METHOD=POST ACTION="ibm_security_logout" NAME="logout">
    <input type="submit" name="logout" value="Logout">
    <INPUT TYPE="HIDDEN" name="logoutExitPage" VALUE="/login.html">
</form>

更多详情见Customizing login/logout

如果您无法使用此表单注销,请在您的 servlet 中使用如上所示的WSSecurityHelper.revokeSSOCookies(req, res)

【讨论】:

是否有任何额外的类需要添加到 WebSphere 或更改任何安全参数?我正在使用版本 7.X @Dusty 我已经更新了答案。我不完全理解额外课程或安全参数的含义。通常,您应该在 WebSphere 中打开应用程序安全性,并使用表单登录,以便创建 LTPA cookie。如果您使用的是 HTTP Basic 身份验证,则无法在不关闭浏览器的情况下注销,因为用户凭据存储在标头中并在每次请求时重新发送。 websphere 9 怎么样?我尝试了你的两个想法,都没有奏效。还有你指的这个注销页面是什么? @johnktejik 请创建单独的问题并详细描述您的问题。这两种解决方案都适用于 v9,因此您必须描述什么不适合您以及您在做什么。

以上是关于擦除 websphere 中的 cookie - 如何注销的主要内容,如果未能解决你的问题,请参考以下文章

cookie-parser中间件的使用

如何测试 httpOnly cookie 标志

OSGi 包中的 Websphere 8.5 + CXF。是不是可以?

WebSphere 中的单元配置文件

WebSphere 中的上下文根文件夹位置

Websphere 8.5.5 中的 Corba NameService 配置