개발자신301
50
2019-09-11 18:53:42
1
172

주소창에 jsessionid 값을 없애는 방법아나요?


@RequestMapping(value ="/ssoTest.do", method = RequestMethod.GET)

public String addSampleView2(ServletRequest req,HttpServletResponse response,RedirectAttributes redirectAttributes, Model model) throws Exception {

StringBuffer sb = new StringBuffer();


URL url = new URL("https://cauweb.cau.ac.kr/causso/JSP/GetEID.jsp");

        

try {

TrustManager[] trustAllCerts = new TrustManager[]{

                new X509TrustManager() {

                    public java.security.cert.X509Certificate[] getAcceptedIssuers() {

                        return null;

                    }

                    public void checkClientTrusted(

                        java.security.cert.X509Certificate[] certs, String authType) {

                    }

                    public void checkServerTrusted(

                        java.security.cert.X509Certificate[] certs, String authType) {

                    }

                }

            };

 

        SSLContext context = SSLContext.getInstance("SSL");

        context.init(null, trustAllCerts, new java.security.SecureRandom());

        

        HttpsURLConnection .setDefaultSSLSocketFactory(context.getSocketFactory());

        HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();

        BufferedInputStream bis = new BufferedInputStream(conn.getInputStream());

        BufferedReader reader = new BufferedReader(new InputStreamReader(bis));

        String line = null;

        while ((line = reader.readLine()) != null) { 

        sb.append(line).append("\n"); 

        }

        System.out.println(sb.toString());


        bis.close();

        reader.close(); 

        conn.disconnect();

} catch (Exception e){ 

System.out.println(e.toString()); 

}


        UUID one = UUID.randomUUID();

        

        aes128 aes = new aes128();

        String key =  RandomStringUtils.randomNumeric(16);

        //String key = "euoruowlseieuroewo";

        String encode = aes.encrypt(sb.toString(),key );

        String decode = aes.decrypt(encode, key);

        

        SsoCheckVo ssoCheckVo = new SsoCheckVo();

        ssoCheckVo.setUuid(one.toString());

        ssoCheckVo.setEmpNo(encode);

        ssoCheckVo.setEncryptKey(key);

        

        sampleService.insertPfCheckVo(ssoCheckVo);

        

        model.addAttribute("uuid", one.toString());

        model.addAttribute("secretKey", encode);

        model.addAttribute("secretKey2", decode);

        model.addAttribute("empNo", sb.toString());

System.out.println("UUid........ : "+one.toString());

System.out.println("secretKey Encrypt........ : "+encode+"\n\r");

System.out.println("secretKey Decrypt....... : "+decode);

 

redirectAttributes.addAttribute("uuid", one.toString());

redirectAttributes.addAttribute("emp_no", encode);


String requestURI = req.getScheme() + "://"+req.getServerName()+"/cautest/iwarunner.html";

System.out.println("requestURI  ....... : "+requestURI);

Cookie kc = new Cookie("jsessionid", null); // jsessionid(쿠키 이름)에 대한 값을 null로 지정


kc.setMaxAge(0); // 유효시간을 0으로 설정


response.addCookie(kc);


return "redirect:"+requestURI;

}


해당 소스 인데 return 하면 아래 requestURI 로 redirect 하는데요..


18:38:12,086 INFO  [stdout] (default task-3) requestURI  ....... : http://localhost/cautest/iwarunner.html


위의 로그 처럼 해당 url이 찍힙니다. 그리고 제가 uuid , emp_no 파라메터를 넣고요..


근데 실행하면 아래 와같이 url이 찍힙니다.

http://cautestweb.cau.ac.kr/cautest/iwarunner.html;jsessionid=4oHDK9AEQ0KZ9NQ8fn57vNuvoKNDqCijC8sYSAzT.genwastest?uuid=3db2f8c5-6791-4095-9669-41b42e22e4db&emp_no=%2FUZW%2FEghatM2rQ1uUG6dHg%3D%3D


jsessoionid 라는 놈이 왜 들어가는 지 모르겠네요.. 구글 검색해보니 쿠키가 없으면 jsessoinid 라는 쿠키가 들어가서 그런다고해서 , 위의 소스 보시면 쿠키까지 제거하는데도 들어갑니다.


고수님들의 답변 부탁드립니다.




0
0
  • 답변 1

  • John Suhr
    1k
    2019-09-12 01:48:02

    redirect 경로가 get일 경우 리다이렉트 애트리뷰트의 파라미터가 쿼리 스트링으로 들어가는 것은 당연하다고 봅니다. jsessionid는 컨테이너에 의해 요청을 고유 식별하기 위해 자동으로 생성하여 쿠키에 넣습니다 현재 컨트롤러에서 제거한다 해도 응답이 redirect이므로 다음 요청시 다시 생성합니다. stateless한 상태를 원한다면 SessionCreationPolicy를 STATELESS로 변경하는 방법이 있습니다.

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.