这里的问题是我们如何强制tomcat服务器验证智能卡在任何api被击中时仍然存在。或者,如果卡被移除,如何强制重新协商SSL以及引脚验证。 我正在处理一个应用程序并使用tomcat作为服务器。 我们必须通过智能卡对用户进行身份验证。因此,当用户点击Web应用程序浏览器时,要求选择证书并请求该智能卡的引脚。 以上功能正常。 现在的情况是,每当移除智能卡时,tomcat服务器应该知道它的移除并要求选择证书并再次验证引脚。
I have tried below different codes on logout API call, but nothing seems to work:-
1. sc = SSLContext.getInstance("SSL");
int i = sc.getServerSessionContext().getSessionTimeout();
sc.getServerSessionContext().setSessionTimeout(0);
2) Object sslSessionMgr = paramHttpServletRequest.getAttribute("javax.servlet.request.ssl_session_mgr");
//SSLSessionManager sslSessionMgr = (SSLSessionManager) paramHttpServletRequest.getAttribute("javax.servlet.request.ssl_session_mgr");
if (sslSessionMgr != null) {
try {
Method invalidateSession = Class.forName("org.apache.tomcat.util.net.SSLSessionManager").getMethod("invalidateSession");
invalidateSession.setAccessible(true);
invalidateSession.invoke(sslSessionMgr);
SSLSessionManager a = (SSLSessionManager) sslSessionMgr;
a.invalidateSession();
paramHttpServletResponse.setHeader("Connection", "close");
} catch (Exception e) {
e.printStackTrace();
}
3. Cookie removal
if(paramHttpServletRequest.getCookies() !=null && paramHttpServletRequest.getCookies().length > 0) {
for (Cookie cookie : paramHttpServletRequest.getCookies()) {
if(cookie.getName().equals("JSESSIONID")) {
cookie.setMaxAge(0);
Calendar.getInstance();
paramHttpServletResponse.setHeader("Set-Cookie", "JSESSIONID="+cookie.getValue()+";path=/capehenry;Secure;HttpOnly;expires = Friday, 04-Feb-07 22:03:38 GMT;");
}
}
4) httpSession.setMaxInactiveInterval(1);
请建议如何解决此问题。