본문 바로가기
프로그램 (PHP,Python)

OAuth 2.0 워크플로우 이해 및 구글 서비스 인증 토큰

by 날으는물고기 2024. 2. 18.

OAuth 2.0 워크플로우 이해 및 구글 서비스 인증 토큰

Workflow of OAuth 2.0

OAuth 플로우는 인터넷 사용자가 하나의 서비스(예: 웹사이트나 앱)가 다른 서비스의 정보에 접근할 수 있도록 허용하는 표준화된 프로세스입니다. OAuth를 사용하면 사용자가 자신의 자격 증명(예: 아이디와 비밀번호)을 제3의 서비스에 제공하지 않고도 두 서비스 간의 안전한 데이터 공유를 허용할 수 있습니다. 이 과정에서 주로 두 가지 유형의 토큰(액세스 토큰과 리프레시 토큰)이 사용됩니다.

액세스 토큰 (Access Token)

  • 목적: 액세스 토큰은 사용자가 서비스에 로그인한 후, 이 서비스가 다른 서비스에 접근할 수 있도록 하는 짧은 기간의 토큰입니다.
  • 유효 기간: 일반적으로 짧은 기간(예: 몇 시간) 동안만 유효합니다.
  • 사용 방식: 사용자가 로그인을 완료하면, 서비스는 액세스 토큰을 받고, 이 토큰을 사용해 사용자를 대신하여 다른 서비스의 리소스에 접근합니다.

리프레시 토큰 (Refresh Token)

  • 목적: 리프레시 토큰은 액세스 토큰이 만료되었을 때 새로운 액세스 토큰을 받기 위해 사용됩니다.
  • 유효 기간: 리프레시 토큰은 액세스 토큰보다 훨씬 긴 기간 동안 유효합니다(예: 몇 주 또는 몇 달).
  • 사용 방식: 액세스 토큰이 만료되면, 서비스는 리프레시 토큰을 사용하여 새 액세스 토큰을 요청합니다. 이를 통해 사용자가 반복적으로 로그인하는 번거로움을 줄일 수 있습니다.

OAuth 플로우의 단계

  1. 사용자 인증: 사용자가 서비스 A에 로그인하고 서비스 B에 대한 접근 권한을 부여합니다.
  2. 토큰 요청: 서비스 A는 사용자의 인증을 바탕으로 서비스 B에 액세스 토큰을 요청합니다.
  3. 토큰 발급: 서비스 B는 서비스 A에 액세스 토큰(및 리프레시 토큰)을 발급합니다.
  4. 리소스 접근: 서비스 A는 받은 액세스 토큰을 사용하여 사용자를 대신해 서비스 B의 리소스에 접근합니다.
  5. 토큰 갱신: 액세스 토큰이 만료되면, 서비스 A는 리프레시 토큰을 사용해 새로운 액세스 토큰을 요청합니다.

이 프로세스는 사용자의 데이터를 보호하면서도 편리한 서비스 이용을 가능하게 합니다.

 

리프레시 토큰도 기한이 있기는 하지만, 이 기한은 액세스 토큰의 기한보다 훨씬 길어서 사용자가 자주 로그인할 필요가 없도록 설계되어 있습니다. 리프레시 토큰의 갱신 과정은 다음과 같습니다.

  1. 리프레시 토큰의 기한: 리프레시 토큰은 일반적으로 수 주에서 수 개월에 걸쳐 유효합니다. 특정 서비스에서는 리프레시 토큰의 유효 기간을 더 길게 설정할 수도 있습니다.
  2. 자동 갱신: 액세스 토큰이 만료될 때, 서버는 리프레시 토큰을 사용하여 새로운 액세스 토큰을 자동으로 발급받습니다. 이 과정에서 일반적으로 사용자 인증이 다시 필요하지 않습니다. 리프레시 토큰이 유효하면 서버는 사용자의 추가 인증 없이 새 액세스 토큰을 발급받을 수 있습니다.
  3. 리프레시 토큰의 갱신: 일부 OAuth 구현에서는 새 액세스 토큰과 함께 새로운 리프레시 토큰도 발급합니다. 이렇게 하면 리프레시 토큰의 유효 기간이 연장됩니다. 다른 구현에서는 원래의 리프레시 토큰을 계속 사용할 수 있습니다.
  4. 리프레시 토큰 만료: 리프레시 토큰이 만료되면, 사용자는 새로운 액세스 토큰과 리프레시 토큰을 받기 위해 다시 로그인해야 합니다.

OAuth의 이러한 메커니즘은 사용자 경험을 개선하고 보안을 유지하는 데 중요한 역할을 합니다. 사용자는 빈번한 로그인 없이 서비스를 지속적으로 이용할 수 있고, 서비스 제공자는 사용자의 자격 증명을 안전하게 보호할 수 있습니다.

 

많은 OAuth 구현에서는 액세스 토큰을 갱신할 때 리프레시 토큰의 기한도 함께 연장됩니다. 이는 다음과 같이 작동합니다.

  1. 리프레시 토큰의 재발급: 액세스 토큰이 갱신될 때, 서비스는 새로운 액세스 토큰뿐만 아니라 새로운 리프레시 토큰도 받을 수 있습니다. 이 새로운 리프레시 토큰은 원래 토큰보다 더 긴 유효 기간을 가질 수 있습니다.
  2. 연속적인 사용: 새 리프레시 토큰을 통해 사용자는 지속적으로 서비스를 사용할 수 있으며, 정기적인 로그인 절차 없이 액세스 토큰을 갱신할 수 있습니다.
  3. 보안 유지: 이 방식은 사용자 경험을 향상시키는 동시에 보안을 유지합니다. 리프레시 토큰이 갱신되면 이전 토큰은 무효화되어 보안 위험을 줄일 수 있습니다.

그러나 이는 OAuth를 구현하는 서비스의 정책과 설정에 따라 다를 수 있습니다. 일부 서비스는 새 액세스 토큰 발급 시 새로운 리프레시 토큰을 발급하지 않을 수도 있습니다. 따라서 사용 중인 특정 서비스의 OAuth 구현 방식을 확인하는 것이 좋습니다.

 

OAuth에서 리프레시 토큰의 처리 방식은 구현에 따라 다를 수 있습니다. 두 가지 일반적인 접근 방식은 다음과 같습니다.

  1. 리프레시 토큰 재발급: 일부 구현에서는 액세스 토큰을 갱신할 때마다 새로운 리프레시 토큰도 함께 발급합니다. 이 경우, 새 리프레시 토큰은 새로운 유효 기간을 가지며, 기존 리프레시 토큰은 무효화됩니다. 이 방식은 보안을 강화할 수 있지만, 서버와 클라이언트 양쪽에서 추가적인 관리가 필요합니다.
  2. 기존 리프레시 토큰의 유효 기간 연장: 다른 구현에서는 액세스 토큰을 갱신할 때 기존 리프레시 토큰을 그대로 유지하고, 그 유효 기간을 연장합니다. 이 방식은 새로운 토큰을 발급하고 관리하는 부담을 줄여주지만, 보안에 덜 엄격할 수 있습니다.

어느 방식을 사용하느냐는 서비스 제공자의 보안 요구 사항과 사용 편의성 사이의 균형에 따라 결정됩니다. 일부 서비스는 보안을 강화하기 위해 리프레시 토큰을 자주 교체하는 반면, 다른 서비스는 사용자 편의성을 위해 리프레시 토큰의 장기 사용을 허용할 수 있습니다.

 

따라서 특정 서비스의 OAuth 구현 세부 사항을 이해하려면 해당 서비스의 문서나 API 가이드라인을 참조하는 것이 좋습니다. Google의 OAuth 시스템에서 리프레시 토큰은 일반적으로 다음과 같이 관리됩니다.

  1. 리프레시 토큰의 유효 기간: Google은 리프레시 토큰의 유효 기간을 액세스 토큰의 유효 기간보다 약간 더 길게 설정하는 것을 권장합니다. 예를 들어, 액세스 토큰의 유효 기간이 30분이라면, 리프레시 토큰의 유효 기간은 24시간 이상으로 설정하는 것이 좋습니다.
  2. 리프레시 토큰의 사용과 만료: 사용자가 토큰을 6개월 이상 사용하지 않을 경우, 다시 사용자 인터페이스를 통해 접근 권한을 부여받는 것이 좋습니다. 리프레시 토큰은 언제든지 무효화될 수 있습니다.

이 정보에 따르면, Google의 리프레시 토큰은 액세스 토큰을 갱신할 때마다 자동으로 유효 기간이 연장되는 방식이 아닙니다. 대신, 리프레시 토큰은 설정된 유효 기간 동안 유효하며, 사용자가 오랜 기간 동안 토큰을 사용하지 않을 경우 새로운 인증 절차를 거쳐야 할 수도 있습니다.

 

구글에서 제공하는 서드 파티 앱 및 서비스 인증 권한 부여 방식과 구글 API 서비스를 사용하는 OAuth 권한 부여 방식은 다음과 같은 주요 차이점이 있습니다.

서드 파티 앱 및 서비스 인증 권한 부여

  1. 목적: 사용자가 구글 계정을 사용하여 다른 서비스나 애플리케이션(예: 소셜 미디어, 게임, 생산성 도구 등)에 로그인할 수 있도록 허용합니다.
  2. 절차: 사용자는 서드 파티 앱이나 서비스에 구글 계정으로 로그인하면서 특정 권한(예: 프로필 정보 접근, 이메일 주소 사용 등)을 부여합니다.
  3. 보안: 이 방식은 OAuth 2.0 프로토콜을 기반으로 하며, 사용자의 구글 계정 정보는 서드 파티 앱이나 서비스에 직접 노출되지 않습니다.
  4. 관리: 사용자는 구글 계정 설정에서 언제든지 이러한 서드 파티 앱에 대한 권한을 관리하거나 철회할 수 있습니다.

구글 API 서비스에서의 OAuth 권한 부여

  1. 목적: 개발자가 구글의 API 서비스(예: Google Drive API, Gmail API 등)를 자신의 애플리케이션에 통합하여 사용할 수 있도록 합니다.
  2. 절차: 개발자는 구글 API 콘솔을 통해 자신의 애플리케이션을 등록하고, 필요한 API에 대한 접근 권한을 요청합니다. 사용자는 애플리케이션 사용 시 이러한 권한을 부여합니다.
  3. 보안: 이 방식 역시 OAuth 2.0 프로토콜을 사용하여, 사용자의 구글 계정 정보를 안전하게 보호합니다. API 접근은 액세스 토큰을 통해 관리됩니다.
  4. 관리: 개발자는 API 콘솔을 통해 자신의 애플리케이션과 관련된 설정을 관리할 수 있으며, 사용자는 구글 계정 설정에서 API 접근 권한을 관리할 수 있습니다.

주요 차이점

  • 용도: 서드 파티 인증은 주로 사용자 인증 및 기본 정보 접근에 초점을 맞추고 있으며, 구글 API 서비스는 개발자가 특정 구글 서비스의 기능을 자신의 애플리케이션에 통합하는 데 사용됩니다.
  • 관리 및 설정: 서드 파티 인증은 주로 사용자 중심으로 관리되며, 구글 API 서비스는 개발자 중심으로 관리됩니다.

두 방식 모두 OAuth 2.0 프로토콜을 사용하여 사용자의 계정 정보와 데이터를 안전하게 보호하는 공통점이 있습니다.

 

서드 파티 앱 및 서비스 인증을 통해 권한을 부여받아 애플리케이션에 통합하는 경우와 OAuth를 사용하는 경우의 차이점을 이해하기 위해서는, 두 방식이 어떻게 사용되는지에 대한 기본적인 이해가 필요합니다.

서드 파티 앱 및 서비스 인증을 통한 권한 부여

이 방식은 사용자가 자신의 구글 계정을 사용하여 다른 서비스나 애플리케이션에 로그인하고, 해당 서비스가 사용자의 구글 데이터에 접근할 수 있도록 권한을 부여하는 과정입니다.

  • 사용 사례: 예를 들어, 사용자가 소셜 미디어 사이트나 온라인 게임에서 구글 계정을 사용하여 로그인하고, 이러한 서비스가 사용자의 이름, 이메일 주소 등의 정보에 접근하는 것입니다.
  • 절차: 사용자는 서비스에 로그인하면서 구글 계정을 사용하여 인증하고, 해당 서비스에 특정 데이터에 접근할 수 있는 권한을 부여합니다.
  • 토큰 사용: 인증이 완료되면, 서비스는 구글로부터 액세스 토큰을 받아 사용자의 데이터에 접근할 수 있습니다.

OAuth 인증 방식

OAuth는 인터넷 사용자가 서드 파티 애플리케이션에 자신의 계정 데이터에 대한 접근을 허용할 수 있도록 하는 프로토콜입니다.

  • 사용 사례: 예를 들어, 개발자가 구글 드라이브 API를 사용하여 사용자가 자신의 애플리케이션에서 구글 드라이브의 파일에 접근하고 관리할 수 있게 하는 것입니다.
  • 절차: 애플리케이션은 사용자의 인증을 받고, 사용자는 애플리케이션에 자신의 구글 계정 데이터에 대한 특정 권한을 부여합니다.
  • 토큰 사용: 애플리케이션은 구글로부터 액세스 토큰을 받아 사용자의 데이터에 접근할 수 있습니다.

차이점

  • 사용 목적: 서드 파티 앱 및 서비스 인증은 주로 사용자가 다른 서비스에 로그인하는데 사용되며, OAuth는 애플리케이션 개발자가 특정 구글 서비스의 기능을 자신의 애플리케이션에 통합하는 데 사용됩니다.
  • 통합 수준: 서드 파티 인증은 주로 사용자 인증과 기본 정보 접근에 초점을 맞추고 있습니다. 반면, OAuth는 보다 광범위한 API 접근과 통합을 가능하게 하며, 개발자가 구글의 다양한 서비스와 기능을 자신의 애플리케이션에 직접 통합할 수 있도록 합니다.
  • 접근 방식: 서드 파티 인증은 사용자가 다른 서비스나 애플리케이션에 로그인할 때 사용됩니다. OAuth는 애플리케이션 내에서 구글의 서비스에 접근할 수 있는 권한을 요청하고 관리하는 데 사용됩니다.

결국, 두 방식은 모두 OAuth 프로토콜을 사용하지만, 그 목적과 적용 범위에서 차이가 있습니다. 서드 파티 앱 및 서비스 인증은 주로 사용자 인증과 기본 정보 접근에 초점을 맞추고 있으며, OAuth는 애플리케이션의 구글 서비스 통합과 관련된 보다 복잡한 시나리오에 사용됩니다.

 

서드 파티 앱 및 서비스 인증과 OAuth 인증 방식 사이의 주요 차이점을 요약하면 다음과 같습니다.

  1. 서드 파티 앱 및 서비스 인증: 이 방식은 사용자가 다른 서비스(예: 소셜 미디어, 온라인 쇼핑, 게임 등)를 이용하면서 자신의 구글 계정 정보를 해당 서비스와 통합하도록 허용합니다. 여기서 사용자는 자신이 직접 해당 서비스를 이용하고, 자신의 구글 계정 데이터(예: 이름, 이메일 주소, 프로필 사진 등)를 해당 서비스와 공유합니다.
  2. OAuth 인증: OAuth는 주로 애플리케이션 개발자가 사용자로부터 일부 권한을 받아, 그 사용자의 구글 서비스 데이터(예: Google Drive 파일, Gmail, Google Calendar 등)에 접근하도록 허용하는 데 사용됩니다. 이 경우, 사용자는 자신이 아닌 다른 사람(애플리케이션 개발자 또는 해당 애플리케이션)에게 자신의 데이터에 대한 접근 권한을 부여합니다.

이렇게 보면, 서드 파티 인증은 주로 개인 사용자가 자신의 경험을 향상시키기 위해 다른 서비스와 정보를 공유하는 데 초점을 맞추고 있으며, OAuth는 타인이 개발한 애플리케이션을 통해 사용자의 구글 서비스를 활용할 수 있도록 권한을 부여하는 데 사용됩니다.

728x90

댓글