-
[프로젝트 개발] spring-security JWT 인증과정 HTTP Only 쿠키 서버에서 쿠키를 설정할 때 HTTP Only로 설정한다면 브라우저 콘솔에서는 해당 쿠키의 값을 볼 수 있지만 자바스크립트 API로 호출하면 빈 문자열이 리턴됨(설정된 것이 없음) HTTP 통신 과정에서만 사용됨 서버 측에서의 설정 application.properties에서도 설정가능하지만 쿠키 전체에 대한 설정이라 해당 쿠키에 대해서만 설정한다면 쿠키 객체에 설정해줘야함 : 각각의 상태값 Cookie cookie = new Cookie(COOKIE_NAME_AUTH, generator.generate(account)); cookie.setHttpOnly(true); response.addCookie(cookie); JWT 만료기간 체크 현재는 씨큐리티에 많은 시간을 쏟고 있는 관계로 리프레시 토큰에 대해...
-
[프로젝트 개발] spring-security OAuth2 - jwt 리팩토링 다른 객체의 상태값을 get해서 바깥에서 상태를 가지고 무언가를 만드는 작업을 하지말고 해당 객체에 메세지를 보내서 일 시키기 get해서 가공하는 쪽으로 가면 코드의 의존성이 커지기때문에 get해오는 쪽에서 변경이 생기면 가공하는 쪽에서도 변경이 생기게 됨 현재의 방법(전략)이 앞으로 고정될 것이라고 생각하고 코딩하면 안됨 : 언제든지 변경이 생길 수 있다는 점을 생각하고 코딩하기 한가지 방법으로 고정시켜두면 테스트하기도 힘들어질 때가 있음 : DI할 수 있도록 코딩을 해두면 테스트하기 편한 전략으로 교체할 수...
-
서블릿과 스프링 그리고 스프링5 서블릿 리퀘스트에 대한 처리를 동적으로 만들어줄 때 사용하는 자바로 만들어진 API HTTP 한단계 추상화해서 표준화(인터페이스)한 것 : 서블릿을 구현하면 됨 서블릿을 추상화한 것이 스프링 : HTTP > 서블릿 > 스프링 톰캣(WAS) 서버에서 관리됨 : 서블릿의 구현체는 서블릿 컨테이너에서 라이프사이클(컨테이너의 역할)을 관리 - 초기화부터 제거까지 서블릿이라는 표준이 있어서 좋은 점은 서블릿 컨테이너를 다른 것으로 바꿔도 똑같이 동작할 수 있음 : jetty가 있음 톰캣은 HttpServlet을 상속받아야 컨테이너에서 관리하고, 스프링 컨테이너는 POJO를 어노테이션으로 설정하면...
-
[프로젝트 개발] spring-security OAuth2 - JWT 어제까지 개발한 것 정리 어제까지 클라이언트가 인증서버에 인증을 하면 redirect 되어서 액세스코드가 서버로 가게 해놨음, 어플리케이션 서버는 인증서버에 액세스코드 검증 후 JWT를 발급해주는 것까지 만듦 오늘은 만든 JWT를 클라이언트가 응답받아서 어떻게 보관할지에 대해서 공부하고 개발하면 됨 - 두가지 방법 중 1가지를 택, 장단점을 확실히 파악해야함 secure, HttpOnly 쿠키 사용 클라이언트(브라우저) 로컬 스토리지 사용 XSS와 HTTP Only 쿠키 그리고 CSRF XSS 크로스 사이트 스크립팅(XSS) : 악의적인 사용자가 스크립트를 심어놓고(게시판 등)...
-
[프로젝트 개발] Spring Security - OAuth 인증서버, JWT 액세스토큰과 JWT 액세스토큰 : 인증서버에서 발급해주는 토큰으로 해당 서버에서 발급했다는 증명과도 같은 String값 즉, 아무런 데이터가 들어있지않음 인증 작업을 인증서버에 어플리케이션 서버가 위임한 것 JWT(json web token) : 어플리케이션 서버는 클라이언트에 대한 정보를 가지고 있지않고, 클라이언트가 자신이 인증받은 사용자임을 알리려고 토큰을 준다고 할 때 인증서버가 발급해준 액세스토큰만으로는 클라이언트의 정보를 알 수가 없기때문에 액세스토큰을 가진 클라이언트에 한 해 json 형식을 빌려 필요한 최소한의 정보를 담고 암호화 시켜 만들어서...