JWT4 [도착 알리미 SUFY] 3. 카카오 로그인 구현 및 jwt토큰 (2) (1)에 이어서, 이번에는 클라이언트에서 받은 토큰을 검증하는 로직을 만들어 보겠다. 사실 이걸 어떻게 구현해야 할 지 되게 고민이 많았는데... 웹페이지를 이동할 때마다 GET요청을 보내서 토큰의 만료 여부를 확인하는 방식으로 짜려고 한다. 훨씬 더 효율적인 방법이 있을 것 같아서 카카오 API 설명을 열심히 둘러봤는데 나는 모르겠더라....ㅜㅜ 일단 토큰들과 만료 시간을 헤더로 받는 GET 컨트롤러를 만들어 주었다. @GetMapping("/tokenVerify") public int tokenVerify(@RequestHeader("Authorization") String accessToken, @RequestHeader("Refresh-Token".. 2024. 2. 6. [도착 알리미 SUFY] 2. 카카오 로그인 구현 및 jwt토큰 (1) SUFY의 기본적인 흐름이 지하철이 종착역에 다다르면 카카오톡으로 알림을 보내는 서비스이기 때문에, 카카오 로그인을 사용하고 굳이 다른 로그인 로직을 구현하지 않기로 했다. 사실 카카오 로그인 자체는 OAuth2 라이브러리를 사용하면 크게 어렵지 않게 구현할 수 있다. 문제는 Jwt토큰을 발급하고 클라이언트에 전달하는 과정이 좀 복잡했었는데... 저번에 페이스북 로그인을 구현하면서 한 번 겪어봤던 문제이기 때문에 이번에는 아마 나름대로 쉽게 구현할 수 있을 듯? 여튼 일단 OAuth2와 Spring Security, JWT를 build.gradle에 추가해 주었다. // Spring Security, JWT implementation 'org.springframework.b.. 2024. 2. 6. [내멋대로 만드는 Kimstagram] 10. Jwt Refresh Token 발급하기 사실 지금까지 애써 외면해 왔었는데, 아무래도 이제 슬슬 리프레시 토큰을 활용해야 할 것 같다. 테스트하는데 계속 10분이 지나면 팅겨버려서... 이게 사소한데 너무 귀찮아서 그냥 리프레시 토큰 발급에 도전하게 됐다. 리프레시 토큰의 로직은 대충 아래와 같이 구상했다. 로그인 시 액세스 토큰(기존의 JWT토큰)과 함께 리프레시 토큰을 생성한다. 액세스 토큰과 리프레시 토큰은 헤더에 담아서 클라이언트에 전송하고, 리프레시 토큰은 DB에 따로 저장해 둔다. 클라이언트의 매 요청 시 마다 액세스 토큰과 리프레시 토큰을 보내며, 액세스 토큰으로 인증과 권한을 검사한다. 그런데 만약 액세스 토큰의 만료 시간이 다 지났다면? DB에 해당 유저의 리프레시 토큰이 존재하는지 확인한다. 만약 리프레시 토큰의 만료 기간이.. 2024. 1. 28. [내멋대로 만드는 Kimstagram] 3.Spring Security + JWT 로그인 구현하기 Spring Security 인증과 권한 관리를 용이하게 해주는 라이브러리 build.gradle에서 Spring Security의 주석을 해제해보자. 이제 그 어떤 페이지로도 들어갈 수 없다. Security에서 해당 주소로 오는 주소는 모두 /login으로 보내기 때문이다. 여기서 로그인을 하면 들어갈 수는 있지만… 우리가 기껏 만들어 놓은 로그인 페이지가 있는데, 그걸 활용해야지 무슨 듣도 보도 못한 폼에다가 로그인 하라는 걸까…? 그래서 Spring Security의 설정을 조금 변경해 주었다. @Override protected void configure(HttpSecurity http) throws Exception { // csrf 토큰 비활성화 http.csrf().disable(); //.. 2024. 1. 9. 이전 1 다음 반응형