CS/웹개발

OAuth

hyunji1109 2025. 1. 6. 14:49

이미지 출처: https://goteleport.com/blog/how-oauth-authentication-works/

 

제3자 애플리케이션이 사용자의 자원에 접근할 수 있도록 허가하는 인증 표준 프로토콜이다.
사용자가 애플리케이션에 직접 비밀번호를 제공하지 않고 다른 서비스와 안전하게 데이터를 주고받을 수 있다.

 

장점

  • 보안 강화
    • 비밀번호를 공유하지 않아도 서비스 간 데이터 공유가 가능하다.
  • 편리함
    • 다양한 서비스가 하나의 계정을 통해 사용자 정보를 가져올 수 있다.
  • 제한적 접근 허용
    • 사용자는 특정 범위의 데이터 접근 권한만 허용할 수 있다.

 

단점

  • 초기에 구현이 복잡하다.
  • Refresh Token과 Access Token 관리가 필요하다.
  • 권한을 잘못 설정하면 데이터 유출 가능성이 있다.

 


 

OAuth의 동작 방식

  • 사용자(User)
    • 서비스를 이용하려는 사용자
  • 클라이언트(Client)
    • 사용자가 이용하는 애플리케이션(예: 소셜 로그인)
  • 리소스 소유자(Resource Owner)
    • 사용자의 데이터가 저장된 서비스 제공자(예: 구글, 페이스북)
  • 리소스 서버(Resource Server)
    • 데이터를 저장하고 관리하는 서버
  • 인증 서버(Authorization Server)
    • 권한을 부여하는 서버
  • Access Token(액세스 토큰)
    • 제한된 시간 동안 특정 리소스에 접근할 수 있는 임시 인증 정보이다.
    • 클라이언트가 리소스 서버에 요청을 보낼 때 사용된다.
  • Refresh Token(리프레시 토큰)
    • 액세스 토큰이 만료되었을 때, 새 액세스 토큰을 발급받을 수 있는 토큰이다.

 

① 사용자가 클라이언트 요청

  • 사용자가 클라이언트 애플리케이션에 로그인하거나, 서비스를 요청한다.

② 클라이언트가 권한 요청

  • 클라이언트는 인증 서버에 권한 승인 요청을 보낸다.

③ 사용자 승인

  • 사용자는 인증 서버에서 클라이언트가 요청한 권한을 승인한다.

④ 인증 서버가 액세스 토큰 발급

  • 인증 서버는 클라이언트에게 Access Token(접근 토큰)을 발급한다.

⑤ 클라이언트가 리소스 요청

  • 클라이언트는 리소스 서버에 액세스 토큰을 전달해 자원을 요청한다.

⑥ 리소스 서버 응답

  • 리소스 서버는 액세스 토큰을 검증한 뒤 요청된 데이터를 반환한다.

 


 

 

예시
구글 계정을 사용하여 다른 애플리케이션에 로그인한다.
페이스분 계정의 데이터를 다른 애플리케이션에 제공한다.
  1. 사용자가 애플리케이션에서 구글로 로그인 버튼을 클릭한다.
  2. 구글의 인증 서버로 리디렉션되어 사용자가 로그인하고 권한을 승인한다.
  3. 구글은 클라이언트 애플리케이션에 Access Token을 전달한다.
  4. 클라이언트는 이 토큰을 사용해 사용자 정보를 요청하고 로그인을 완료한다.