해당 글은 Spring으로 구현한 프로젝트를 SpringBoot로 리팩토링 하는 과정을 담은 글입니다.
- Index -
[SpringSecurity] SpringSecurity + JWT 로그인 구현_1
[SpringSecurity] SpringSecurity + JWT 로그인 구현_2
[SpringSecurity] SpringSecurity + JWT 로그인 구현_3
[SpringSecurity] SpringSecurity + JWT 회원가입, 테스트 코드 작성
[번외]JwtAuthorizationFilter에서 상속받을 필터에 대한 고민
Postman을 사용하여 로그인 기능이 작동되는지 확인한다.
1. DB에 회원 정보 확인
2. controller에 요청 보낼 SignInDto 구현
@Getter
@Setter
@ToString
@NoArgsConstructor
public class SignInDto {
private String username;
private String password;
}
3. MemberController 구현
@Slf4j
@RestController
@RequiredArgsConstructor
@RequestMapping("/members")
public class MemberController {
private final MemberService memberService;
@PostMapping("/sign-in")
public JwtToken signIn(@RequestBody SignInDto signInDto) {
String username = signInDto.getUsername();
String password = signInDto.getPassword();
JwtToken jwtToken = memberService.signIn(username, password);
log.info("request username = {}, password = {}", username, password);
log.info("jwtToken accessToken = {}, refreshToken = {}", jwtToken.getAccessToken(), jwtToken.getRefreshToken());
return jwtToken;
}
@PostMapping("/test")
public String test() {
return SecurityUtil.getCurrentUsername();
}
}
members/sign-in : 모든 사용자에게 허용한다.
members/test : USER 권한이 있는 사용자만 접근이 가능하다.
4. 테스트 과정
1. DB에 저장된 MEMBER 테이블 속 username, password를 body에 json 형태로 담아 members/sign-in에 요청한다.
2. 서버에서 JWT 토큰을 발급한다.
3. JWT 코튼에서 Access Token을 header에 넣어서 members/test에 요청한다.
4-1,2. Postman으로 member/sign-in에 요청
해당 회원이 정상적으로 인증되어 Jwt 토큰을 반환한다.
grantType(토큰인증타입), accesToken, refreshToken을 발급한다.
4-3. 발급받은 Access Token으로 test API 호출
member/test로 요청 허용을 위해선 roles에 USER가 포함되어 있어야 함.(DB MEMBER_ROLES 테이블 roles에 USER 저장)
서버로 부터 발급 받은 Acess Token을 Header의 키와 값 형태로 Authorization 와 Bearer[Access Token] 로 요청을 보낸다.
요청 결과는 success로 인가 허용이 된다.
참고 블로그
[Spring] Spring Security + JWT 로그인 구현하기 - 3
📝 지난 포스팅 ➡︎ Spring Security + JWT 로그인 구현하기 - 2 [Spring] Spring Security + JWT 로그인 구현하기 - 2 Spring Security + JWT 로그인 구현 1️⃣ 라이브러리 설정 Spring Security와 JWT를 사용하기 위해 다
suddiyo.tistory.com
'Spring > SpringSecurity' 카테고리의 다른 글
JwtAuthorizationFilter에서 상속받을 필터에 대한 고민 (3) | 2024.12.01 |
---|---|
[SpringSecurity] SpringSecurity + JWT 회원가입, 테스트 코드 작성 (0) | 2024.03.19 |
[SpringSecurity] SpringSecurity + JWT 로그인 구현_2 (0) | 2024.03.16 |
[SpringSecurity] SpringSecurity + JWT 로그인 구현_1 (0) | 2024.03.11 |