Skip to content

[API 구현] Spring Security 없이 인증인가 구현하기

YoonTaeMin edited this page Mar 26, 2023 · 2 revisions

Intro.

  • Spring Security를 사용하지 않고 인증/인가를 검증합니다.
  • JWT를 사용해서 구현했습니다.

@Auth

내용

  • 인증/인가를 검증하고, AOP를 커스텀해 구현하였습니다.
  • 해당 어노테이션은 컨트롤러 메소드에 사용할 수 있습니다.
  • 컨트롤러 메소드가 실행되기 전에 HTTP 요청 Authorization 헤더에 담긴 JWT에 대해 검증합니다.
  • 해당 어노테이션에 사용자의 Authority(권한)값을 넣어 권한 체크를 할 수 있습니다.
    기본값은 USER(일반 사용자)이며 관리자에 대한 검증을 하고 싶다면 @Auth(Authority.ADMIN)의 형태로 사용할 수 있습니다.
  • @Auth → Authority.USER, Authority.ADMIN 접근가능
  • @Auth(Authority.ADMIN) → Authority.ADMIN 접근가능

이슈

  • 초기에는 Filter를 통해 인증에 대해 구현하려 했으나 따로 예외처리 과정을 거쳐야 했고, 무엇보다 인가에 대해 검증을 할 부분이 없었기 때문에 해당 방법을 선택했습니다.

개선사항

  • 현재는 컨트롤러 메소드에 @Auth 어노테이션을 붙혀 적용할 수 있습니다. 추후에 중복된 코드를 개선하기 위해 메소드 뿐만 아니라 컨트롤러 단위에 붙혀서 사용할 수 있게 개선할 예정입니다.

@AuthUser

내용

  • ArgumentResolver를 커스텀해 구현하였습니다.
  • 해당 어노테이션은 컨트롤러 메소드의 Argument중 User객체에 사용할 수 있습니다.
  • 컨트롤러 메소드가 실행되기 전에 HTTP 요청 Authorization 헤더에 담긴 JWT토큰을 사용해, 토큰값에 담긴 사용자의 아이디로 User를 찾은 후 반환합니다.
Clone this wiki locally