如何检查智能卡是否仍然连接(tomcat服务器)

时间:2018-03-28 13:36:51

标签: ssl tomcat8 smartcard cac

这里的问题是我们如何强制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);

请建议如何解决此问题。

0 个答案:

没有答案