인증과 승인은 각각 ID를 확인하고 리소스에 대한 액세스 권한을 부여하는 데 사용되는 메커니즘입니다. 이 문서에서는 앱에서 인증 및 승인을 구현하기 전에 알아야 하는 주요 용어를 설명합니다.
인증은 요청하는 사용자를 식별합니다. 승인은 요청자가 액세스할 수 있는 리소스 종류와 액세스 수준을 식별합니다. 인증은 승인의 기본 요건입니다. 먼저 요청자의 ID를 확인하지 않으면 액세스할 리소스를 결정할 수 없습니다. 자세한 정의는 중요한 용어 섹션을 참고하세요.
다음과 같은 간소화된 호텔 예약 예시를 살펴보세요. 호텔에 도착하면 프런트 데스크 직원이 예약을 확인하기 위해 신분증을 요청합니다. 신분증은 호텔에서 투숙객을 인증하는 데 사용됩니다. 프런트 데스크 직원이 호텔 키를 제공합니다. 이 키를 사용하면 호텔 객실, 헬스장, 비즈니스 센터와 같은 호텔의 특정 리소스에 액세스할 수 있습니다. 호텔 키는 이러한 리소스에 액세스할 수 있는 권한을 승인합니다.
프로세스 개요
다음 다이어그램은 Google Workspace API의 인증 및 승인 단계를 대략적으로 보여줍니다.
Google Cloud 프로젝트 및 앱 구성: 개발 중에 Google Cloud 콘솔에 앱을 등록하여 API 키, 최종 사용자 사용자 인증 정보 또는 서비스 계정 사용자 인증 정보로 앱을 인증하기 위한 승인 범위 및 액세스 사용자 인증 정보를 정의합니다.
액세스를 위해 앱 인증: 앱이 실행되면 등록된 액세스 사용자 인증 정보가 평가됩니다. 앱이 최종 사용자로 인증하는 경우 로그인 메시지가 표시될 수 있습니다.
리소스 요청: 앱에서 Google 리소스에 액세스해야 하는 경우 이전에 등록한 관련 액세스 범위를 사용하여 Google에 요청합니다.
사용자 동의 요청: 앱이 최종 사용자로 인증하는 경우 Google에서는 사용자가 요청된 데이터에 대한 앱 액세스 권한을 부여할지 결정할 수 있도록 OAuth 동의 화면을 표시합니다.
승인된 리소스 요청 전송: 사용자가 액세스 범위에 동의하면 앱은 사용자 인증 정보와 사용자가 승인한 액세스 범위를 요청에 번들로 묶습니다. 요청은 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 콘솔을 사용하여 사용자 인증 정보를 만들 때 애플리케이션 유형을 선택하라는 메시지가 표시됩니다. 애플리케이션 유형은 웹 애플리케이션 (JavaScript), Android, Chrome 앱, iOS, TV 및 제한된 입력 기기, 데스크톱 앱('설치된 앱'이라고도 함), 유니버설 Windows 플랫폼 (UWP)입니다.
- 서비스 계정
데이터에 액세스하기 위해 인증과 승인을 거쳐야 하며 사람이 아닌 사용자를 나타내기 위한 특별한 유형의 Google 계정입니다. 애플리케이션이 서비스 계정 ID를 사용하여 Google API를 호출하므로 사용자가 직접 관여하지 않습니다. 서비스 계정 자체로는 Workspace API를 사용하여 일반적으로 액세스하는 사용자 데이터에 액세스할 수 없습니다. 그러나 서비스 계정은 도메인 전체 권한 위임을 구현하여 사용자 데이터에 액세스할 수 있습니다. 자세한 내용은 서비스 계정 이해를 참고하세요.
- 도메인 전체 권한 위임
애플리케이션이 Google Workspace 조직의 사용자를 대신하여 사용자 데이터에 액세스하도록 승인할 수 있는 관리 기능입니다. 도메인 전체 위임을 사용하면 사용자 데이터에 관한 관리 관련 작업을 실행할 수 있습니다. 이러한 방식으로 권한을 위임하려면 Google Workspace 관리자가 OAuth 2.0과 함께 서비스 계정을 사용합니다. 이 기능의 강력한 기능으로 인해 최고 관리자만 도메인 전체 권한 위임을 사용 설정할 수 있습니다. 자세한 내용은 서비스 계정에 도메인 전체 권한 위임을 참고하세요.
다음 단계
앱의 OAuth 동의 화면을 구성하여 사용자가 앱의 데이터 액세스 권한을 이해하고 승인할 수 있도록 합니다.