개발자가 소프트웨어를 빌드할 때는 웹 서버에서 실행되는 모듈, 브라우저에서 실행되는 기타 모듈, 네이티브 모바일 앱으로 실행되는 기타 모듈을 일상적으로 포함합니다. 개발자와 소프트웨어 사용자 모두 일반적으로 이러한 모든 모듈을 단일 앱의 일부로 생각합니다.
Google의 OAuth 2.0 구현은 이러한 세계관을 지원합니다. OAuth2.0 기반 서비스를 사용하려면 Google API Console에서 소프트웨어를 설정해야 합니다. API Console 의 조직 단위는 '프로젝트'이며 이는 다중 구성요소 앱에 해당할 수 있습니다. 각 프로젝트에 브랜딩 정보를 제공할 수 있으며 앱이 액세스할 API를 지정해야 합니다. 다중 구성요소 앱의 각 구성요소는 API Console에서 생성되는 고유한 문자열인 클라이언트 ID로 식별됩니다.
클라이언트 간 승인 목표
앱이 승인에 OAuth 2.0을 사용하는 경우 앱은 사용자를 대신하여 리소스에 대한 액세스를 위해 OAuth 2.0 액세스 토큰을 요청하며, 앱은 하나 이상의 범위 문자열로 리소스를 식별합니다. 일반적으로 사용자에게 액세스를 승인하라는 메시지가 표시됩니다.
사용자가 특정 범위의 앱에 대한 액세스 권한을 부여하면 Google API Console에서 설정한 프로젝트 수준의 제품 브랜딩이 포함된 사용자 동의 화면이 표시됩니다. 따라서 Google은 사용자가 프로젝트의 모든 클라이언트 ID에 특정 범위에 대한 액세스 권한을 부여한 경우, 해당 범위의 전체 애플리케이션에 대한 사용자의 신뢰를 나타냅니다.
그 결과, 현재 웹 앱, Android 앱, Chrome 앱, iOS 앱, 네이티브 데스크톱 앱, 제한된 입력 장치가 포함된 Google의 승인 인프라에서 애플리케이션 구성요소를 안정적으로 인증할 수 있을 때마다 사용자에게 동일한 논리적 애플리케이션에 대한 리소스 액세스를 한 번 이상 승인하라는 메시지가 표시되어서는 안 됩니다.
교차 고객 액세스 토큰
소프트웨어가 코드가 실행되는 플랫폼에 따라 다양한 방법으로 OAuth 2.0 액세스 토큰을 가져올 수 있습니다. 자세한 내용은 OAuth 2.0을 사용하여 Google API에 액세스를 참조하세요. 일반적으로 액세스 토큰을 부여할 때는 사용자 승인이 필요합니다.
다행히 Google 승인 인프라는 동일한 프로젝트의 다른 사용자를 승인할지 평가할 때 특정 프로젝트 내 클라이언트 ID의 사용자 승인에 관한 정보를 사용할 수 있습니다.
그 결과 Android 앱이 특정 범위에 대한 액세스 토큰을 요청하고 요청한 사용자가 동일한 프로젝트의 웹 애플리케이션에 동일한 범위에 대해 이미 승인을 부여한 경우 사용자에게 다시 승인하도록 요청하지 않습니다. 이 방법은 두 가지 방식으로 작동합니다. 즉, Android 앱에서 범위에 대한 액세스 권한이 부여되면 웹 애플리케이션과 같은 동일한 프로젝트의 다른 클라이언트에서 다시 이 액세스 권한을 요청하지 않습니다.