OAuth

OAuth

OAuth는 인가를 위해 생겨났다.

유저가 인증을 하고 권한은 서비스가 갖는다.

OAuth의 풀네임은 **O**pen **Auth**orization • 자신이 소유한 리소스에 소프트웨어 애플리케이션이 접근할 수 있도록 허용해 줌으로써 접근 권한을 위임해주는 개방형 표준 프로토콜 → 접근 권한을 위임(Delegated Authorization)

• 기존 아이디/비번 인증 구조는 보안상 취약할 가능성이 높았다.

용어 정리 - 생선가게 서비스 기준

  1. Resource Server: OAuth2.0 서비스를 제공하며 자원을 관리하는 서버입니다. 이 자원은 클라이언트가 접근하고자 하는 사용자 데이터나 기능을 의미합니다. 예를 들어, **Kakao**는 소셜 로그인, 친구 목록 조회, 메시지 보내기 등 다양한 API를 제공하는 리소스 서버 역할을 합니다.
  2. Resource Owner: 자원을 소유하고 있는 사용자로, 자신의 데이터에 대한 접근 권한을 부여할 수 있습니다. 예를 들면, 카카오로 소셜 로그인을 시도하는 **생선가게 소비자**가 리소스 오너입니다.
  3. Client: 사용자 대신 자원에 접근하고자 하는 애플리케이션입니다. 예를 들어, 생선가게 웹사이트나 앱이 클라이언트가 될 수 있으며, 사용자가 생선가게 사이트에서 카카오 계정으로 로그인하려고 할 때 이 클라이언트를 통해 인증 과정이 진행됩니다.
  4. Authorization Server: 클라이언트가 리소스 서버의 서비스를 사용할 수 있도록 인증하고 토큰을 발급하는 서버입니다. 카카오의 경우, **카카오 자체의 인증 서버**가 이 역할을 합니다.
  5. Authorization Code: 사용자가 로그인에 성공한 후 클라이언트에게 전달되는 일회용 코드입니다. 이 코드는 클라이언트가 리소스 서버로부터 액세스 토큰을 얻기 위해 사용됩니다.
  6. Access Token: 클라이언트리소스 서버에 접근할 때 필요한 토큰입니다. 이 토큰을 사용하여 클라이언트는 사용자의 데이터에 접근하거나 사용자를 대신하여 작업을 수행할 수 있습니다.
  7. Scope: 클라이언트가 접근하고자 하는 리소스의 범위를 정의합니다. 예를 들어, 사용자의 이메일 주소, 프로필 정보, 친구 목록 등 특정 데이터에 대한 접근 권한을 제한할 수 있습니다.
  8. Redirect URI: 클라이언트가 인증을 요청할 때 제공하는 URI로, 인증 서버가 인증 과정이나 토큰 교환 과정을 마친 후 응답을 보내는 주소입니다. 이 URI는 클라이언트가 미리 등록해야 하며, 보안을 위해 인증 서버에서 이 주소를 검증합니다.

Authorization Code Grant 방식

Untitled