-
Notifications
You must be signed in to change notification settings - Fork 0
[API 구현] Spring Security 없이 인증인가 구현하기
YoonTaeMin edited this page Mar 26, 2023
·
2 revisions
- Spring Security를 사용하지 않고 인증/인가를 검증합니다.
- JWT를 사용해서 구현했습니다.
- 인증/인가를 검증하고, AOP를 커스텀해 구현하였습니다.
- 해당 어노테이션은 컨트롤러 메소드에 사용할 수 있습니다.
- 컨트롤러 메소드가 실행되기 전에 HTTP 요청 Authorization 헤더에 담긴 JWT에 대해 검증합니다.
- 해당 어노테이션에 사용자의 Authority(권한)값을 넣어 권한 체크를 할 수 있습니다.
기본값은 USER(일반 사용자)이며 관리자에 대한 검증을 하고 싶다면 @Auth(Authority.ADMIN)의 형태로 사용할 수 있습니다.
- @Auth → Authority.USER, Authority.ADMIN 접근가능
- @Auth(Authority.ADMIN) → Authority.ADMIN 접근가능
- 초기에는 Filter를 통해 인증에 대해 구현하려 했으나 따로 예외처리 과정을 거쳐야 했고, 무엇보다 인가에 대해 검증을 할 부분이 없었기 때문에 해당 방법을 선택했습니다.
- 현재는 컨트롤러 메소드에 @Auth 어노테이션을 붙혀 적용할 수 있습니다. 추후에 중복된 코드를 개선하기 위해 메소드 뿐만 아니라 컨트롤러 단위에 붙혀서 사용할 수 있게 개선할 예정입니다.
- ArgumentResolver를 커스텀해 구현하였습니다.
- 해당 어노테이션은 컨트롤러 메소드의 Argument중 User객체에 사용할 수 있습니다.
- 컨트롤러 메소드가 실행되기 전에 HTTP 요청 Authorization 헤더에 담긴 JWT토큰을 사용해, 토큰값에 담긴 사용자의 아이디로 User를 찾은 후 반환합니다.