team-HF / HF_backend

0 stars 0 forks source link

Refactor: Spring Security 고치기 #4

Closed rudeh1253 closed 2 weeks ago

rudeh1253 commented 3 weeks ago

이 애플리케이션의 기존 Spring Security 코드는 Spring Security OAuth 2 Client 모듈을 사용한다. 본인 또한 Spring Security에 대한 공부가 미진하여 Spring Security OAuth 2 Client를 정확히 어떻게 활용해야 하는지는 잘 모르지만, 내가 알기로는 Spring Security OAuth 2 Client는 Spring 애플리케이션을 통해 로그인을 수행하기 위해 사용하는 걸로 알고 있다. 그러나 내가 생각하는 Spring Security를 통한 OAuth 2.0 구조는 다음과 같다.

  1. 클라이언트에서 카카오/구글 로그인을 수행한다.
  2. Redirect URI (Spring 백엔드 서버)로 이동
  3. Redirect URI에서 매핑된 컨트롤러에서 Authorization Server에서 받아온 3rd party 정보를 데이터베이스에 저장하고, Access Token (과 Refresh Token)을 반환한다.
  4. 이후 클라이언트에서 Resource Server (Spring 백엔드 서버)로 접근할 때 Authorization Server에서 발급받은 Access Token으로 Authentication과 Authorization을 수행한다. Access Token을 통해 Authorization Server에서 이메일 등 사용자 ID를 가지고 오면 ID를 Search Key로 하여 데이터베이스에서 우리 서비스에 저장된 회원 정보를 가져온다. 회원 정보의 인가 권한을 확인하여 허용된 리소스에 대한 접근인지 검증한다.

이는 Spring Security OAuth2 Resource Server 모듈로 구현할 수 있다. 미리 이 모듈을 사용해 연습 삼아 카카오 로그인을 구현해 보았다. 이 레포지토리에서 확인할 수 있다 (아 맞네, 이 레포지토리 private으로 해 놨네)

내가 생각한 구조를 구현하기 위해 다음을 수행한다.

아직 백엔드 팀원이 오지 않았으므로 일단 컨벤션은 임의로 한다.