- 앱의 디자인과 인증을 처리하는 방식은 상호 의존적입니다. 이페이지는 Marketplace 앱의 인증 작동 방식에 대해 설명합니다.
- 앱에서 싱글 사인온을 사용해야 사용자가 다시 인증 할 필요가 없습니다.
- 싱글 사인온 (SSO)을 구현하면 앱이 Google API와 보다 잘 통합되고, 사용자가 쉽게 설치하고 사용할 수있게됩니다.
OAuth2 및 범위(Scopes)
- 모든 G Suite 애플리케이션은 OAuth 2.0을 사용하여 인증 및 권한 부여를 처리합니다.
- 자세한 내용은 Google Identity Cookbook – OAuth 2.0 을 참조하십시오 .
- 앱은 하나 이상의 범위 (액세스해야하는 리소스를 식별하는 문자열)를 지정합니다.
- 이러한 범위는 토큰 집합과 함께 사용되어 사용자가 리소스에 액세스하는 것을 보호합니다.
- 범위는 단일 리소스 또는 리소스 그룹에 대한 특정 액세스 형식을 나타냅니다. 예를 들면 다음과 같습니다.
- Google 드라이브에서 파일 읽기
- Google 캘린더 데이터 읽기 또는 쓰기
- 사용자 계정 만들기
- 액세스 토큰을 사용하여 리소스에 대한 사용자의 액세스 권한을 부여 받습니다 .
- 앱의 아키텍처 스타일에 따라 다양한 방식으로 액세스 토큰을 얻을 수 있습니다 (아래 참조).
- 웹 서비스 인증 호출을 명시 적으로 코딩 할 수 있지만 일반적으로 많은 프로그래밍 언어에서 사용할 수 있는 Google API 클라이언트 라이브러리를 사용하여 앱을 단순화해야합니다.
- 또한 많은 클라이언트 측 자바 스크립트 앱에서 Google+ 로그인 버튼을 포함하고 Google API 클라이언트 자바 스크립트 라이브러리를 사용하여 대부분의 프로세스를 처리 할 수 있습니다 .
앱 아키텍처 스타일
Google Marketplace 앱은 세 가지 아키텍처 스타일로 나눌 수 있습니다.
- 웹 서버 응용 프로그램 : 서버 측에서 실행되며 종종 서비스 계정을 사용하여 오프라인 액세스 인증 흐름을 포함합니다 (아래 참조)
- 클라이언트 측 앱 : 브라우저에서 실행되는 자바 스크립트 앱으로, 로그인 정보 버튼을 사용하여 인증 세부 정보를 캐시하는 경우가 많습니다.
- 서비스 계정 :이 앱은 (1) 시스템 간 관리 작업 및 통합을 구현하거나 (2) 웹 서버 앱에 대한 오프라인 액세스를 지원하도록 사용자를 가장합니다.
이러한 각 스타일에는 다음 섹션에서 설명하는 것처럼 관련 인증 흐름이 있습니다.
인증 흐름
다음 설명은 방금 정의 된 각 아키텍처 스타일에 대한 권한 부여 플로우를 설명합니다.
웹 서버 응용 프로그램
- PHP, Java, Python 또는 Ruby와 같은 언어를 사용하는 웹 서버 앱은 적절한 Google API 클라이언트 라이브러리를 사용하여 권한을 처리해야합니다.
- 승인 순서는 앱이 브라우저를 Google URL로 리디렉션 할 때 시작됩니다.
- URL은 요청되는 액세스 유형을 나타내는 쿼리 매개 변수를 포함합니다.
- 성공한 경우 응답에는 앱이 액세스 토큰과 새로 고침 토큰을 교환 할 수있는 인증 코드가 포함됩니다.
- 오프라인 액세스를 구현하는 앱은 이 흐름을 사용하여 Google ID 및 이메일과 같은 식별 정보를 얻어야합니다.
- 액세스 토큰이 리턴되지만 무시할 수 있습니다.
- 앱은 사용자 ID를 추출하여 서비스 계정 흐름을 사용하여 모든 subsequent calls 을 수행해야합니다.
자세한 내용 은 웹 서버 응용 프로그램 용 OAuth 2.0 사용을 참조하십시오 .
- 클라이언트 측 (자바 스크립트) 앱
- 클라이언트 측 JavaScript 앱은 웹 브라우저에서 실행되며 자바 스크립트 Google API 클라이언트 라이브러리를 사용하여 권한을 처리해야합니다.
- 승인 순서는 앱이 브라우저를 Google URL로 리디렉션 할 때 시작됩니다.
- URL은 요청되는 액세스 유형을 나타내는 쿼리 매개 변수를 포함합니다.
- 요청에 성공하면 클라이언트가 Google API 요청에 포함하기 전에 확인해야하는 액세스 토큰이 응답에 포함됩니다.
- 토큰이 만료되면 앱에서 해당 프로세스를 반복합니다.
- 이 과정 중 일부를 단순화하기 위해 클라이언트 라이브러리와 함께 Google+ 로그인 버튼을 사용할 수 있습니다.
- Google+ 로그인 버튼은 시퀀스를 시작하고 브라우저를 Google URL로 리디렉션하고 필요에 따라 자동으로 새 액세스 토큰을 생성하는 데 도움이됩니다.
- 자세한 내용 은 클라이언트 측 애플리케이션에 OAuth 2.0 사용을 참조하십시오 .
서비스 계정
- 일부 Google Marketplace 앱은 오프라인 액세스를 구현합니다.
- 사용자가 로그인하지 않아도 사용자를 대신하여 처리 할 수 있습니다.
- 이러한 앱은 서비스 계정 을 사용 하여 사용자를 가장하여 사용자를 대신하여 리소스에 액세스합니다.
- 이 유형의 앱은 서버에 안전하게 저장해야하는 개인 키와 클라이언트 ID를 제공하는 Google API 콘솔 에서 구성됩니다.
- 앞서 설명한 “웹 서버 응용 프로그램”에서 설명한대로 응용 프로그램은 액세스 토큰에서 사용자 ID를 가져와야합니다.
- 앱은 개인 키, 클라이언트 ID 및 사용자 ID를 사용하여 Google OAuth 2.0 인증 서버에 액세스 토큰을 요청합니다.
- 응용 프로그램은 토큰을 사용하여 Google API에 액세스 할 수 있습니다. 토큰이 만기되면 응용 프로그램은 프로세스를 반복합니다.
- 자세한 내용은 서비스 계정 설명서를 참조하십시오 .