개발일지/League Linker

🤦🏻‍♀️고민하기 - Spring Security_API 경로에 따른 인증 및 역할 관리(1)

기억지기 개발자 2024. 9. 4. 18:52

🌑 상황

최근 팀 기능을 개발하면서 각 기능별로 보안 설정에 대해 고민해 보게 되었다.

특히, API의 보안 설정을 어떻게 관리할지에 대해 여러가지 방법을 검색해 보고 고려하게 되었는데 가장 대표적인(?) 

API 네이밍 컨벤션 Spring Security를 활용하는 방법 중에서 고르기로 했다.

 

🌗 과정

API 네이밍 컨벤션

가장 먼저 생각이 든건 API 네이밍 컨벤션을 통해 인증이 필요한 경로를 구분 짓고 싶었다.

예를 들어, /api/team/secure/** 이런 식으로 인증이 필요한 경로라는 것을 config 파일에 등록하여 직관적으로 표현하는 것이 한눈에 보기 좋다는 생각이 들었다.

 

하지만 이 방식으로 진행했을 때의 단점

  1. 모든 보안 요구상을 경로에 반영하면 복잡해질 위험이 있다.
  2. 역할별 접근 권한까지 생각한다면 경로 이름만으로 구분하는 것은 비효율적일 수 있다는 점도 문제이다.

 

🌕 결과

Spring Security로 보안 설정

이번에 고민을 결정하느라 알아보던 와중에 @PreAuthorize, @PostAuthorize 이러한 어노테이션의 존재를 알게 되었고, 

시큐리티가 생각할 수 있는 기능은 다 만들어 놓은 거 같아서 놀라웠다..

그리고 대부분은 해당 방식을 사용하고, 추후에 더 유연하게 메소드 수준에서 보안 설정을 할 수 있을 거 같아서 해당 방법으로 진행해 보기로 했다.

 

 

💡느낀점

이번에 새롭게 프로젝트를 진행하면서 예전부터 익숙해져 보려고 노력했어도 멀게만 느껴졌던 Spring Security를 이번에는 완전히 혼자서 책임을 가지고 활용해 보려고 애쓰다 보니 조금씩 친숙해지고 있는 거 같다. 

여전히 내가 모르는 기능들과 인터페이스, 함수들이 존재하지만 점차 성장하고 있다는 느낌이 들어서, 공부할 욕심이 더 생기는 과정 중에 있는 거 같다.