인증과 승인은 각각 ID와 리소스에 대한 액세스를 확인하는 데 사용되는 메커니즘입니다. 이 문서에서는 앱에서 인증과 승인을 구현하기 전에 알아야 하는 주요 용어를 설명합니다.
인증은 요청을 보낸 사람을 식별합니다. 승인은 요청자가 액세스할 수 있는 리소스와 요청자가 보유한 액세스 수준을 식별합니다. 인증은 승인을 위한 기본 요건입니다. 먼저 요청자의 ID를 설정해야 액세스할 리소스를 결정할 수 있습니다. 자세한 정의는 중요 용어 섹션을 참조하세요.
다음과 같이 호텔 예약의 간단한 예를 살펴보겠습니다. 호텔에 도착하면 프런트 데스크 직원이 예약 확인을 위해 신분증을 요청합니다. 신분증을 통해 호텔에 인증됩니다. 프론트 데스크 점원이 호텔 키를 증정합니다. 이 키를 사용하면 호텔 객실, 헬스장, 비즈니스 센터와 같은 호텔 내 특정 리소스에 액세스할 수 있습니다. 호텔 키는 해당 리소스에 대한 액세스를 승인합니다.
프로세스 개요
다음 다이어그램은 Google Workspace API의 인증 및 승인 단계를 대략적으로 보여줍니다.
![높은 수준의 인증 및 승인 구현 단계](https://developers-dot-devsite-v2-prod.appspot.com/workspace/images/auth-overview.png?authuser=7&hl=ko)
Google Cloud 프로젝트 및 앱 구성: 개발 중에 Google Cloud 콘솔에 앱을 등록하여 API 키, 최종 사용자 인증 정보 또는 서비스 계정 사용자 인증 정보로 앱을 인증하기 위한 승인 범위와 액세스 사용자 인증 정보를 정의합니다.
액세스를 위해 앱 인증: 앱이 실행되면 등록된 액세스 사용자 인증 정보가 평가됩니다. 앱이 최종 사용자로 인증하는 경우 로그인 메시지가 표시될 수 있습니다.
리소스 요청: 앱에서 Google 리소스에 액세스해야 하는 경우 이전에 등록한 관련 액세스 범위를 사용하여 Google에 요청합니다.
사용자 동의 요청: 앱이 최종 사용자로 인증하는 경우 Google은 OAuth 동의 화면을 표시하여 사용자가 요청된 데이터에 대한 액세스 권한을 앱에 부여할지 결정할 수 있도록 합니다.
승인된 리소스 요청 전송: 사용자가 액세스 범위에 동의하면 App Bundle에서 사용자 인증 정보와 사용자가 승인한 액세스 범위를 요청으로 번들로 묶습니다. 액세스 토큰을 얻기 위해 Google 승인 서버로 요청이 전송됩니다.
Google이 액세스 토큰을 반환: 액세스 토큰에는 부여된 액세스 범위 목록이 포함됩니다. 반환된 범위 목록이 요청된 액세스 범위보다 더 제한되면 앱은 토큰에 의해 제한된 모든 기능을 사용 중지합니다.
요청된 리소스에 액세스: 앱이 Google의 액세스 토큰을 사용하여 관련 API를 호출하고 리소스에 액세스합니다.
갱신 토큰 가져오기 (선택사항): 앱에서 단일 액세스 토큰의 수명 이후에 Google API에 액세스해야 하는 경우 갱신 토큰을 얻을 수 있습니다.
추가 리소스 요청: 추가 액세스가 필요한 경우 앱에서 사용자에게 새 액세스 범위를 부여해 달라고 요청하므로 액세스 토큰을 얻기 위한 새로운 요청이 발생합니다 (3~6단계).
중요 용어
다음은 인증 및 승인과 관련된 용어 목록입니다.
- 인증
사용자 또는 사용자를 대신하는 앱일 수 있는 주 구성원이 본인이 맞는지 확인하는 행위입니다. Google Workspace 앱을 작성할 때는 다음 유형의 인증에 유의해야 합니다.
- 사용자 인증
- 사용자가 앱에 인증 (로그인)하는 작업입니다. 사용자 인증은 일반적으로 사용자가 사용자 이름과 비밀번호의 조합을 사용하여 앱에 대한 자신의 신원을 확인하는 로그인 프로세스를 통해 이루어집니다. Google 계정으로 로그인을 사용하여 사용자 인증을 앱에 통합할 수 있습니다.
- 앱 인증
- 앱을 실행하는 사용자를 대신하여 Google 서비스에 직접 인증하는 앱 동작입니다. 앱 인증은 일반적으로 앱 코드에 미리 생성된 사용자 인증 정보를 사용하여 수행됩니다.
- 승인
주 구성원이 데이터에 액세스하거나 작업을 수행할 수 있는 권한 또는 '권한'. 승인 작업은 앱에 작성하는 코드를 통해 실행됩니다. 이 코드는 앱이 사용자를 대신하고 싶어 한다고 사용자에게 알리고, 허용되는 경우 앱의 고유한 사용자 인증 정보를 사용하여 데이터에 액세스하거나 작업을 실행하는 데 사용되는 Google로부터 액세스 토큰을 얻습니다.
- 사용자 인증 정보
소프트웨어 보안에 사용되는 식별 형식입니다. 인증에서 사용자 인증 정보는 사용자 이름과 비밀번호의 조합인 경우가 많습니다. Google Workspace API 승인 측면에서 사용자 인증 정보는 일반적으로 앱 개발자와 인증 서버 사이에만 알려진 고유한 보안 비밀 문자열과 같은 식별 수단입니다. Google은 API 키, OAuth 2.0 클라이언트 ID, 서비스 계정과 같은 사용자 인증 정보를 지원합니다.
- API 키
- 지도 API를 사용하여 제공된 데이터 또는 Google Workspace 공유 설정에서 '이 링크가 있는 인터넷의 모든 사용자' 설정을 사용하여 공유된 Google Workspace 파일과 같은 공개 데이터에 대한 액세스를 요청하는 데 사용되는 사용자 인증 정보입니다.
- OAuth 2 클라이언트 ID
- 사용자 소유 데이터에 대한 액세스를 요청하는 데 사용되는 사용자 인증 정보입니다. 이 사용자 인증 정보는 Google Workspace API를 사용하여 데이터 액세스를 요청할 때 사용되는 기본 사용자 인증 정보입니다. 이 사용자 인증 정보에 사용자 동의가 필요합니다.
- 클라이언트 비밀번호
- 애플리케이션과 승인 서버에서만 알고 있어야 하는 문자열입니다. 클라이언트 보안 비밀번호는 승인된 요청자에게만 토큰을 부여하여 사용자의 데이터를 보호합니다. 암호화되지 않은 클라이언트 보안 비밀번호는 앱에 포함해서는 안 되며 클라이언트 보안 비밀번호를 안전하게 저장하는 것이 좋습니다. 자세한 내용은 클라이언트 사용자 인증 정보를 안전하게 처리를 참고하세요.
- 서비스 계정 키
- Google 서비스에 대한 승인을 얻기 위해 서비스 계정에서 사용됩니다.
- 서비스 계정
- 서버 간 상호작용에 사용되는 사용자 인증 정보(예: 일부 데이터에 액세스하거나 일부 작업을 실행하는 프로세스로 실행되는 얼굴 없는 앱)입니다. 서비스 계정은 일반적으로 클라우드 기반 데이터 및 작업에 액세스하는 데 사용됩니다. 그러나 도메인 전체 권한 위임과 함께 사용하면 사용자 데이터에 액세스하는 데 사용될 수 있습니다.
- 범위
앱에 부여된 리소스 또는 작업에 대한 액세스 수준을 정의하는 OAuth 2.0 URI 문자열입니다. Google Workspace의 경우 승인 범위 URI에는 Google Workspace 앱 이름, 액세스하는 데이터의 종류, 액세스 수준이 포함됩니다. 앱 사용자는 요청된 범위를 검토하고 부여할 액세스 권한을 선택할 수 있습니다. 그러면 Google의 인증 서버가 허용된 범위를 액세스 토큰을 통해 앱에 반환합니다. 자세한 내용은 앱의 범위를 선택하는 방법을 참고하세요.
- 승인 서버
앱에서 요청된 데이터 및 작업에 액세스 토큰을 사용하여 액세스 권한을 부여하는 Google 서버
- 승인 코드
액세스 토큰을 얻는 데 사용되는 승인 서버에서 전송된 코드 애플리케이션 유형이 웹 서버 앱이거나 설치된 앱인 경우에만 코드가 필요합니다.
- 액세스 토큰
Google Workspace API에 대한 액세스 권한을 부여하는 토큰입니다. 단일 액세스 토큰은 여러 API에 대한 다양한 수준의 액세스 권한(범위)을 부여할 수 있습니다. 앱의 승인 코드는 액세스 토큰을 요청하고 이를 사용하여 Google Workspace API를 호출합니다.
- 리소스 서버
앱에서 호출하려는 API를 호스팅하는 서버입니다.
- OAuth 2.0 프레임워크
앱에서 '안전한 위임 액세스' 또는 앱 사용자를 대신하여 데이터 및 작업에 대한 액세스 권한을 제공하는 데 사용할 수 있는 표준입니다. 앱에서 사용하는 인증 및 승인 메커니즘은 OAuth 2.0 프레임워크의 구현을 나타냅니다.
- 주 구성원
리소스에 대한 액세스 권한을 부여받을 수 있는 항목(ID라고도 함)입니다. Google Workspace API는 사용자 계정과 서비스 계정이라는 두 가지 유형의 주 구성원을 지원합니다. 자세한 내용은 주 구성원을 참조하세요.
- 데이터 유형
인증 및 승인과 관련하여 데이터 유형은 앱이 액세스하려는 데이터를 소유한 항목을 나타냅니다. 데이터 유형에는 세 가지가 있습니다.
- 공개 도메인 데이터
- 일부 Google 지도 데이터와 같이 누구나 액세스할 수 있는 데이터입니다. 이 데이터는 일반적으로 API 키를 사용하여 액세스합니다.
- 최종 사용자 데이터
- 특정 사용자의 Google Drive 파일과 같이 특정 최종 사용자 또는 그룹에 속하는 데이터입니다. 이 데이터 유형은 일반적으로 OAuth 2 클라이언트 ID 또는 서비스 계정을 사용하여 액세스합니다.
- 클라우드 데이터
- Google Cloud 프로젝트에서 소유한 데이터입니다. 이 데이터 유형은 일반적으로 서비스 계정에서 액세스합니다.
- 사용자 동의
앱 사용자에게 앱이 사용자 대신 데이터에 액세스하고 작업을 실행하도록 승인하도록 요구하는 승인 단계입니다.
- 애플리케이션 유형
만들려는 앱의 유형입니다. Google Cloud 콘솔을 사용하여 사용자 인증 정보를 만들 때 애플리케이션 유형을 선택하라는 메시지가 표시됩니다. 애플리케이션 유형은 웹 애플리케이션 (자바스크립트), Android, Chrome 앱, iOS, TV, 제한된 입력 기기, 데스크톱 앱('설치된 앱'이라고도 함), 범용 Windows 플랫폼 (UWP)입니다.
- 서비스 계정
데이터에 액세스하려면 인증과 승인이 필요한, 사람이 아닌 사용자를 나타내는 특수한 유형의 Google 계정입니다. 애플리케이션은 서비스 계정의 ID를 사용하여 Google API를 호출하므로 사용자가 직접 관여하지 않습니다. 서비스 계정은 그 자체로 사용자 데이터에 액세스하는 데 사용할 수 없으며 데이터는 일반적으로 Workspace API를 사용하여 액세스합니다. 그러나 서비스 계정은 권한의 도메인 전체 위임을 구현하여 사용자 데이터에 액세스할 수 있습니다. 자세한 내용은 서비스 계정 이해를 참조하세요.
- 도메인 전체 권한 위임
Google Workspace 조직의 사용자를 대신하여 사용자 데이터에 액세스하도록 애플리케이션을 승인할 수 있는 관리 기능입니다. 도메인 전체 위임은 사용자 데이터에 대한 관리자 관련 작업을 실행하는 데 사용할 수 있습니다. 이러한 방식으로 권한을 위임하기 위해 Google Workspace 관리자는 OAuth 2.0으로 서비스 계정을 사용합니다. 이 기능으로 인해 최고 관리자만 도메인 전체 권한 위임을 사용 설정할 수 있습니다. 자세한 내용은 서비스 계정에 도메인 전체 권한 위임을 참조하세요.
다음 단계
앱의 OAuth 동의 화면을 구성하여 사용자가 데이터에 대한 앱의 액세스 권한을 이해하고 승인할 수 있도록 합니다.