이 포스트는 데어 프로그래밍님의 유튜브 강의를 듣고 나서 정리한 글입니다. Adapter 패턴을 이용하여 UserDetails 구현 User 클래스는 UserDetails를 구현한 클래스입니다. 우리는 Adapter 패턴을 이용하여 User 클래스를 상속받을 것입니다. public class AccountAdapter extends User { private Account account; public AccountAdapter(Account account) { super(account.getUsername(), account.getPassword(), getAuthorities(account.getRoles())); this.account = account; } public static Collection
이 포스트는 데어 프로그래밍님의 유튜브 강의를 듣고 나서 정리한 글입니다. 토큰을 검증 할 필터 생성 필터를 이용하여 토큰 검증을 했을 때, 유효하지 않다면 해당 컨트롤러로 더 이상 접근하지 못하도록 할 수 있습니다. public class MyFilter3 implements Filter { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) servletRequest; HttpServletR..
이 포스트는 데어 프로그래밍님의 유튜브 강의를 듣고 나서 정리한 글입니다. Spring Security Filter 구조 필터를 등록하기 전 SpringFilterChain 구조에 대해서 먼저 알면 좋습니다. Filter를 생성해보자 public class MyFilter1 implements Filter { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { System.out.println("Filter 1"); filterChain.doFilter(servletReque..
이 포스트는 데어 프로그래밍님의 유튜브 강의를 듣고 나서 정리한 글입니다. Token 인증 방식 세션을 사용했을 때의 서버에 두는 세션 저장소, 또 여러 서버일 때의 처리해야 할 문제들을 한방에 해결할 수 있습니다. 쿠키를 사용하지 않아도 되므로 쿠키를 탈취 당했을 때의 보안 취약점들도 사라지게 됩니다. 서버가 여러 대 이어도 Secret_key 값만 알고 있으면 토큰을 Valid 할 수 있습니다. Session은 동일 도메인에서만.. 만일 동일 도메인에서의 요청이 아니라면, 쿠키가 안 날라간다! (서버에서 쿠키를 거부!) 그렇다면, javascript에서 Ajax로 헤더에 쿠키를 강제로 담아서 보낼 수가 있는데, 서버에서는 HTTP Only 설정을 통해 외부에서 HTTP 요청이 아닌 javascript..
이 포스트는 데어 프로그래밍님의 유튜브 강의를 듣고 나서 정리한 글입니다. JWT란? jwt.io에 가보면 JWT를 이렇게 설명합니다. JWT로 주고받는 정보는 디지털 서명이 되어있으므로 확인하고 신뢰할 수 있다. JWT는 HMAC SHA256 (HS256) 알고리즘을 사용한다. JWT는 정보를 암호화하여 주고받을 수 있지만, 서명된 토큰에 중점을 둘 것. ("이건 내가 보낸게 맞아!" 라는 서명, 인증에 중점을 두었다.) JWT 구조 (.)을 기준으로 세가지 부분으로 나뉜다. Header Payload Signature 완성된 토큰은 이렇다. xxxxx.yyyyy.zzzzz Header { "alg": "HS256", "typ": "JWT" } 어떤 알고리즘으로 암호화를 했는지 토큰의 타입이 무엇인지 ..