Web/BackEnd

· Web/BackEnd
1. 문제점SpringSecurity/JWT를 사용한, 인증/인가 과정에서 발생하는 Exception을 처리하고 에러를 표준화하는 과정에서 문제가 발생했다.JWT 로그인 구현 중 UsernameNotFoundException 처리가 안 되는 현상이 발생한 것중요한 것은우리가 원하는 것은 로그인 실패 응답을 두 가지 케이스로 나누는 것."존재하지 않는 회원의 이메일입니다.""비밀번호가 일치하지 않습니다."하지만, 포스트맨을 통해 확인한 결과 모두, 잘못된 자격증명으로 답변이 온다...2. 원인파악코드를 순서대로 따라가보자.UsernamePasswordAuthenticationFilter를 확장하여 커스터마이징한, LoginFilter를 살펴보자.여기서, 실패한 경우 @Override protec..
· Web/BackEnd
1. 사건의 발단날씨 앱을 만드는 과정에서사용자가 설정창에서 ON 해놓은 정보들만 메인 화면에 띄울 수 있는 기능이 있다. 그래서 dto를 이렇게 잡고 시작했다.public record DisplayDto( boolean precipitation, boolean wind, boolean dust) {} 자.. 이제 수정 하기 위해 코드를 짰다.// 메인 화면 날씨 상세 정보 보기 (강수량, 퓽향/풍속, 미세먼지)@PutMapping("/display")public ApiResponse updateDisplay(@AuthUser User user, @RequestBody SettingReqDto.DisplayDto displayDto) { settingServic..
· Web/BackEnd
해당 포스트 (1) ~ (7) 과정의 코드를 리펙토링 한 것이다! Spring Boot에서 JWT 프로젝트 세팅하기 / Filter 테스트 (1)VERSION springboot : '3.2.3' java : '17' 1. build.gradle에 Dependecy 추가 plugins { id 'java' id 'org.springframework.boot' version '3.2.3' id 'io.spring.dependency-management' version '1.1.4' } group = 'com.example' version = '0.0.1-SNAPSHOT' java { sjinhos-devlog.tistory.com수정한 부분만 설명하겠다! 0. 프로젝트 설명해당 구조로 이루어지며,- co..
· Web/BackEnd
자 모든 기능 구현이 끝났다. POSTMAN으로 테스트를 해보자! 1. 아무 인가/인증도 걸려있지 않은 http://localhost:8080/ 에 접근 - Filter - Controller - .anyRequest().permitAll() 에 걸리게 되어 인증하지 않아도 통과할 것이다! 1-1. Success Case 2. 로그인 없이 http://localhost:8080/user에 접근 - Filter - Controller - .requestMatchers("/user/**").authenticated() 가 걸려기에 User 권한을 가진 사용자가 로그인 하지 않으면, Error가 날 것! 2-1. Error Case 3. 로그인 테스트 3-1. Success Case : Body에 DB에 있는..
· Web/BackEnd
JWT 토큰 서버 구축하기 (인가/인증) (5) - RefreshToken으로 토큰 재발급 JWT 토큰 서버 구축하기 (인가/인증) (4) - 인가 처리 필터 JWT 토큰 서버 구축하기 (인가/인증) (3) - 엑세스토큰 발급하기 JWT 토큰 서버 구축하기 (인가/인증) (2) - 로그인 과정 처리 해당 POST 보고 오 jinhos-devlog.tistory.com 이어서... 1. 로그아웃 처리에 대한 고민... 1-1. 이미 발급한 토큰의 상태 변화 우리는 로그아웃을 할 때 발급했던 AccesToken과 RefreshToken을 강제로 만료시켜야 한다. 참, Stateless한 토큰을 사용할 때 항상 고민되는 부분이다. 문제점 : 이미 발급한 토큰의 상태 변화에 대응하기 어렵다! 즉, statel..
· Web/BackEnd
JWT 토큰 서버 구축하기 (인가/인증) (4) - 인가 처리 필터 JWT 토큰 서버 구축하기 (인가/인증) (3) - 엑세스토큰 발급하기 JWT 토큰 서버 구축하기 (인가/인증) (2) - 로그인 과정 처리 해당 POST 보고 오시길 바랍니다. Spring Boot에서 JWT 프로젝트 세팅하기 / JWT jinhos-devlog.tistory.com 이어서... 1. 왜 Refresh Token을 사용하는가? AccessToken만을 사용했을 때의 단점이 있기 때문! 1) 일단, 탈취의 경우에 보안에 취약하다는 점 2) 그럼 그냥 ATK의 만료기간을 짧게 두면 되는 거 아니야? 3) 그러면 사용자 입장에서 매우 귀찮게 된다.... 만약... 10분이라고 치면, 우리는 10분마다 재로그인을 해야 한다 ㅠ..
· Web/BackEnd
JWT 토큰 서버 구축하기 (인가/인증) (3) - 엑세스토큰 발급하기 JWT 토큰 서버 구축하기 (인가/인증) (2) - 로그인 과정 처리 해당 POST 보고 오시길 바랍니다. Spring Boot에서 JWT 프로젝트 세팅하기 / JWT 테스트 gradle 기준 1. build.gradle에 Dependecy 추가 implementation 'io.jso jinhos-devlog.tistory.com 이어서... 1. 토큰의 유효성 검사 (Authorization) 이제 로그인 할 때 토큰을 발급해주었으니 클라이언트가 이후 엑세스 토큰을 들고 요청 오면, 해당 토큰의 유효성을 검사한 뒤 요청을 처리해주고, 엑세스 토큰이 만료되었을 경우, 클라이언트는 리프레시 토큰을 사용하여 새로운 엑세스 토큰을 얻을 ..
· Web/BackEnd
JWT 토큰 서버 구축하기 (인가/인증) (2) - 로그인 과정 처리 해당 POST 보고 오시길 바랍니다. Spring Boot에서 JWT 프로젝트 세팅하기 / JWT 테스트 gradle 기준 1. build.gradle에 Dependecy 추가 implementation 'io.jsonwebtoken:jjwt-api:0.11.1' implementation 'io.jsonwebtoken:jjwt-impl:0.11.1' jinhos-devlog.tistory.com 이어서... attemptAuthentication 인증이 완료되면 -> successfulAuthentication (인증 후 후처리) attemptAuthentication 인증이 실패하면 -> unsuccessfulAuthenticati..
dog-pawwer
'Web/BackEnd' 카테고리의 글 목록