본문 바로가기

Spring/Security

📝 OAuth란?

OAuth를 사용하는 이유

  • 보안의 수준을 알 수 없는 애플리케이션에서 일일히 계정을 만들어 사용하면 ID/PW 관리가 어렵고 개인정보가 유출되면 연쇄적으로 피해가 심각하기에, 보안 수준이 어느정도 검증된 사이트(ex, google, facebook)의 API를 이용해서 인증을 받는 방법이 보안상 좋기 때문이다.

OAuth2 동장 방식

  • OAuth 인증 방식은 인증의 과정을 '타 서비스에게 위임'하는 인증방식.
  • 예를 들어 내 사이트에 구글 로그인 인증을 넣었다고 해서 사용자가 구글 웹사이트에 직접 로그인하는 것이 아니라, 사용자의 정보는 내 사이트에서 관리하고, 구글 로그인 기능을 통해 구글에게 전송한 구글 계정 정보가 유효한지 확인한 후, 유효하다면 해당하는 구글 유저 정보 중 일부를 내 사이트에 제공해 주는 '인증' 과정만 처리한다.

OAuth2 용어 정리

  • **Resource owner(자원 소유자)**→ Resource server(구글, 페이스북, 카카오 등)의 계정을 소유하고 있는 사용자
  • Client→ 구글, 페이스북, 카카오 등의 API 서비스를 이용하는 제 3의 서비스
  • **Authorization Server(권한 서버)**→ 권한을 관리해주는 서버, Access Token, Refresh Token등을 발급, 재발급해주는 역할
  • Resource Server→ OAuth2 서비스를 제공하고, 자원을 관리하는 서버
  • Access Token→ Authorization Server로부터 발급받은 인증 토큰, Resource Server에 전달하여 서비스 제공받을 수있다