이 가이드에서는 사용자 승인에 Google ID 서비스 라이브러리를 사용할지 아니면 자체 JavaScript 라이브러리를 구현하는지 선택하는 방법을 설명합니다. 이를 통해 웹 애플리케이션에 가장 적합한 OAuth 2.0 승인 흐름을 결정할 수 있습니다.
이 가이드를 읽기 전에 개요 및 사용자 승인 작동 방식 가이드에 설명된 용어와 개념을 잘 알고 있어야 합니다.
GIS 라이브러리는 사용자 기기의 지원되는 브라우저에서 실행됩니다. Node.js와 같은 서버 측 JavaScript 프레임워크에서는 사용할 수 없으며 대신 Google의 Node.js 클라이언트 라이브러리를 사용합니다.
이 가이드에서는 승인 및 데이터 공유에 대해서만 다룹니다. 사용자 인증은 검토하지 않습니다. 대신 사용자 가입 및 로그인에 관한 Google 계정으로 로그인 및 Google 로그인에서 이전 가이드를 참조하세요.
GIS 라이브러리가 적합한지 판단하기
Google 라이브러리를 사용할지 아니면 니즈에 가장 적합한 자체 라이브러리를 만들지 선택해야 합니다. 특징 및 기능 개요:
- Google의 ID 서비스 JavaScript 라이브러리는 다음을 구현합니다.
- 팝업 기반 동의 흐름을 통해 리디렉션을 최소화하므로 사용자가 승인 프로세스 동안 사이트에 머무를 수 있습니다.
- 크로스 사이트 요청 위조 (CRSF)와 같은 보안 기능
- 개별 범위를 요청하고 사용자 동의를 확인하는 도우미 메서드입니다.
- 엔지니어가 개발 중에 사용하고 나중에 사이트 방문자가 사용할 수 있도록 사람이 쉽게 오류를 처리하고 문서화 링크를 제공합니다.
- ID 서비스 라이브러리 없이 구현하는 경우 다음 작업을 담당합니다.
- 리디렉션을 포함하여 Google의 OAuth 2.0 엔드포인트로 요청 및 응답을 관리합니다.
- 사용자 경험 최적화
- 요청, 응답을 검증하고 CSRF를 방지하기 위한 보안 기능 구현
- 요청된 범위에 사용자가 동의했는지 확인하는 메서드
- OAuth 2.0 오류 코드 관리, 사람이 읽을 수 있는 메시지 작성, 사용자 도움말 링크
요약하면, Google은 빠르고 안전하게 OAuth 2.0 클라이언트를 구현하고 사용자의 승인 환경을 최적화하는 데 도움이 되는 GIS 라이브러리를 제공합니다.
승인 흐름 선택
Google Identity Services JavaScript 라이브러리를 사용할지 아니면 자체 라이브러리를 만들지 여부에 관계없이 두 가지 OAuth 2.0 승인 흐름(암시적 또는 승인 코드) 중 하나를 선택해야 합니다.
두 흐름 모두 Google API를 호출하는 데 사용할 수 있는 액세스 토큰을 생성합니다.
두 흐름의 주요 차이점은 다음과 같습니다.
- 사용자 액션 수
- 사용자 없이도 앱이 Google API를 호출할지 여부
- 엔드포인트를 호스팅하고 개별 사용자 계정의 사용자별 갱신 토큰을 저장하기 위해 백엔드 플랫폼이 필요한 경우
- 보안 수준이 높아지거나 낮아질 수 있습니다.
흐름을 비교하고 보안 요구사항을 평가할 때는 사용자 보안 수준이 선택한 범위에 따라 달라진다는 점을 고려해야 합니다. 예를 들어 캘린더 초대를 읽기 전용으로 보는 것이 읽기/쓰기 범위를 사용하여 Drive에서 파일을 수정하는 것보다 위험성이 적다고 간주될 수 있습니다.
OAuth 2.0 흐름 비교
암시적 흐름 | 승인 코드 흐름 | |
사용자 동의 필요 | 모든 토큰 요청에 대해(만료된 토큰 교체 포함) | 첫 번째 토큰 요청에만 적용됩니다. |
사용자가 있어야 함 | 지원됨 | 아니요, 오프라인 사용을 지원합니다. |
사용자 보안 | 최소 | 대부분은 클라이언트 인증을 가지며 브라우저 내 토큰 처리 위험을 방지합니다. |
액세스 토큰 발급됨 | 지원됨 | 지원됨 |
갱신 토큰 발행 | No | 지원됨 |
지원되는 브라우저 필요 | 지원됨 | 지원됨 |
Google API 호출에 사용되는 액세스 토큰 | 사용자의 브라우저에서 실행되는 웹 앱에서만 발생합니다. | 백엔드 플랫폼에서 실행되는 서버나 사용자의 브라우저에서 실행되는 웹 앱에서 생성됩니다. |
백엔드 플랫폼 필요 | No | 예. 엔드포인트 호스팅 및 스토리지입니다. |
안전한 스토리지 필요 | No | 예, 갱신 토큰 스토리지의 경우 |
승인 코드 엔드포인트를 호스팅해야 함 | No | 예, Google로부터 승인 코드를 받기 위해 필요합니다. |
액세스 토큰 만료 동작 | 새로운 유효한 액세스 토큰을 요청하고 획득하려면 버튼 누르기 또는 링크 클릭과 같은 사용자 동작이 필요합니다. | 초기 사용자 요청 후 플랫폼은 저장된 갱신 토큰을 교환하여 Google API를 호출하는 데 필요한 새로운 유효한 액세스 토큰을 얻습니다. |