Chat 앱 및 Google Chat API 요청 인증 및 승인

인증 및 승인은 각각 ID와 리소스에 대한 액세스를 확인하는 데 사용되는 메커니즘입니다. 이 문서에서는 Chat 앱 및 Chat API 요청에 대한 인증 및 승인 작동 방식을 설명합니다.

프로세스 개요

다음 다이어그램은 Google Chat의 인증 및 승인 단계를 대략적으로 보여줍니다.

Google Chat 인증 및 승인 단계
그림 1. Google Chat 인증 및 승인을 위한 대략적인 단계

  1. Google Cloud 프로젝트 구성, Chat API 사용 설정, Chat 앱 구성: 개발 중에 Google Cloud 프로젝트를 만듭니다. Google Cloud 프로젝트에서 Chat API를 사용 설정하고 Chat 앱을 구성하고 인증을 설정합니다. 자세한 내용은 Google Workspace에서 개발Chat 앱 빌드를 참고하세요.

  2. Chat API 호출: 앱에서 Chat API를 호출하면 사용자 인증 정보가 Chat API로 전송됩니다. 앱이 서비스 계정으로 인증하면 사용자 인증 정보가 앱 코드의 일부로 전송됩니다. 앱에서 아직 승인되지 않은 사용자 인증을 사용하여 Chat API를 호출해야 하는 경우 사용자에게 로그인하라는 메시지를 표시합니다.

  3. 리소스 요청: 앱에서 인증을 설정하는 동안 지정한 범위로 액세스를 요청합니다.

  4. 동의 요청: 앱이 사용자로 인증되고 있는 경우 Google에서 OAuth 동의 화면을 표시하여 사용자가 요청된 데이터에 대한 액세스 권한을 앱에 부여할지 결정할 수 있도록 합니다. 서비스 계정을 통한 인증에는 사용자 동의가 필요하지 않습니다.

  5. 승인된 리소스 요청 전송: 사용자가 승인 범위에 동의하면 앱은 사용자 인증 정보와 사용자가 승인한 범위를 요청에 번들로 묶습니다. 이 요청은 액세스 토큰을 얻기 위해 Google 승인 서버로 전송됩니다.

  6. Google에서 액세스 토큰 반환: 액세스 토큰에는 부여된 범위 목록이 포함됩니다. 반환된 범위 목록이 요청된 범위보다 더 제한적인 경우 앱은 토큰으로 제한된 모든 기능을 사용 중지합니다.

  7. 요청된 리소스 액세스: 앱은 Google의 액세스 토큰을 사용하여 Chat API를 호출하고 Chat API 리소스에 액세스합니다.

  8. 갱신 토큰 가져오기 (선택사항): 앱이 단일 액세스 토큰의 유효 기간을 초과하여 Google Chat API에 액세스해야 하는 경우 갱신 토큰을 가져올 수 있습니다. 자세한 내용은 OAuth 2.0을 사용하여 Google API에 액세스하기를 참고하세요.

  9. 추가 리소스 요청: 앱에 더 많은 액세스 권한이 필요한 경우 사용자에게 새 범위를 허용하도록 요청하여 액세스 토큰을 얻기 위한 새로운 요청을 수행합니다(3~6단계).

Chat 앱에 인증이 필요한 경우

채팅 앱은 Google Chat에 동기식 또는 비동기식으로 메시지를 보낼 수 있습니다. 사용자를 대신하여 Chat 스페이스를 만드는 등의 작업을 완료할 수도 있습니다.

채팅 앱에서 응답을 처리하는 동안 Chat API 또는 다른 Google API를 호출하지 않는 한 동기 메시지에는 인증이 필요하지 않습니다.

채팅 앱은 비동기 메시지를 보내거나 사용자를 대신하여 작업하기 위해 Chat API에 RESTful 요청을 전송합니다. 이 요청에는 인증과 승인이 필요합니다.

동기식 메시지는 인증이 필요하지 않습니다

동기 메시지는 Chat 이벤트에 대한 응답입니다. Google Chat 앱은 채팅 앱 구성 페이지에 구성 및 게시된 후 이벤트를 수신하고 응답할 수 있으며 인증 또는 승인이 필요하지 않습니다.

동기식 Chat 이벤트의 예는 다음과 같습니다.

  • 사용자가 Google Chat의 Chat 앱에 메시지를 보냅니다.
  • 사용자가 Chat 앱을 멘션
  • 사용자가 Chat 앱의 슬래시 명령어 중 하나를 호출합니다.

다음 다이어그램은 Chat 사용자와 Chat 앱 간의 동기 요청-응답 시퀀스를 보여줍니다.

동기식 메시지에는 승인이 필요하지 않습니다.
그림 2. 동기식 메시지에는 인증이 필요하지 않습니다.

  1. 사용자가 Google Chat의 Chat 앱에 메시지를 보냅니다.
  2. Google Chat은 메시지를 앱으로 전달합니다.
  3. 앱이 메시지를 받아 처리한 다음 Google Chat에 응답을 반환합니다.
  4. Google Chat에서 사용자 또는 스페이스의 응답을 렌더링합니다.

이 순서는 각 Chat 이벤트마다 반복됩니다.

비동기식 메시지에는 인증이 필요합니다.

비동기 메시지는 Chat 앱이 인증 및 승인이 필요한 Chat API를 요청할 때 발생합니다.

Chat 앱은 Chat API를 호출하여 Google Chat에 메시지를 게시하거나 작업을 완료하여 사용자 대신 데이터에 액세스할 수 있습니다. 예를 들어 서버 중단을 감지한 후 Chat 앱은 다음을 위해 Chat API를 호출할 수 있습니다.

  • 서비스 중단을 조사하고 해결하기 위한 전용 Chat 스페이스를 만듭니다.
  • Chat 스페이스에 사용자를 추가합니다.
  • Chat 스페이스에 메시지를 게시하여 서비스 중단에 대한 세부정보를 제공합니다.

다음 다이어그램은 Chat 앱과 Chat 스페이스 간의 비동기 메시지 시퀀스를 보여줍니다.

비동기 메시지에 인증 필요
그림 3. 비동기 메시지에는 인증이 필요합니다.

  1. Chat 앱은 spaces.messages.create method를 사용하여 Chat API를 호출하여 메시지를 만들고 HTTP 요청에 사용자 인증 정보를 포함합니다.
  2. Google Chat은 서비스 계정 또는 사용자 인증 정보로 Chat 앱을 인증합니다.
  3. Google Chat은 앱의 메시지를 지정된 Chat 스페이스로 렌더링합니다.

Chat API 범위

앱에 부여된 액세스 수준을 정의하려면 승인 범위를 식별하고 선언해야 합니다. 승인 범위는 Google Workspace 앱 이름, 액세스하는 데이터의 종류, 액세스 수준이 포함된 OAuth 2.0 URI 문자열입니다.

Google Chat은 다음 범위를 지원합니다.

Google Chat API 범위 설명
https://www.googleapis.com/auth/chat.bot Chat 앱에서 채팅을 확인하고 메시지를 보낼 수 있습니다. Chat 앱에 사용할 수 있는 모든 기능에 액세스할 수 있습니다.
https://www.googleapis.com/auth/chat.delete 대화 및 스페이스를 삭제하고 Google Chat에서 관련 파일에 대한 액세스 권한을 삭제합니다.
멤버십  
https://www.googleapis.com/auth/chat.memberships Google Chat 대화에서 참여자 확인, 추가, 삭제
https://www.googleapis.com/auth/chat.memberships.app Chat 앱을 사용하여 Google Chat의 대화에 앱을 추가하거나 삭제할 수 있습니다(다른 앱은 제외).
https://www.googleapis.com/auth/chat.memberships.readonly 스페이스의 멤버십 세부정보를 확인하고 멤버십을 나열합니다.
메시지  
https://www.googleapis.com/auth/chat.messages Google Chat에서 메시지를 만들고, 가져오고, 업데이트하고, 삭제하고, 나열합니다.
https://www.googleapis.com/auth/chat.messages.create Google Chat에서 메시지를 만들고 첨부파일을 업로드하세요.
https://www.googleapis.com/auth/chat.messages.reactions Google Chat에서 메시지에 대한 반응을 보고 추가하고 삭제합니다.
https://www.googleapis.com/auth/chat.messages.reactions.create Google Chat 메시지에 반응을 추가합니다.
https://www.googleapis.com/auth/chat.messages.reactions.readonly Google Chat의 메시지에 대한 반응을 봅니다.
https://www.googleapis.com/auth/chat.messages.readonly Google Chat에서 메시지 가져오기 및 나열하기
스페이스  
https://www.googleapis.com/auth/chat.spaces Google Chat에서 대화와 스페이스를 만들고 메타데이터(기록 설정 포함)를 보거나 업데이트할 수 있습니다.
https://www.googleapis.com/auth/chat.spaces.create Google Chat에서 대화를 만듭니다.
https://www.googleapis.com/auth/chat.spaces.readonly Google Chat에서 채팅 및 스페이스 보기

Google Workspace API의 범위에 대해 자세히 알아보려면 앱 범위를 선택하는 방법을 참고하세요.

사용 가능한 범위 목록은 Google API용 OAuth 2.0 범위를 참고하세요.

필수 인증 유형

Chat 앱은 사용자 인증 정보 또는 서비스 계정이라는 두 가지 방법으로 Chat API를 인증하고 승인할 수 있습니다.

Chat 앱은 사용자 인증 정보 승인을 통해 사용자 데이터에 액세스하고 사용자를 대신하여 작업을 완료할 수 있습니다. OAuth 범위는 승인된 데이터 및 작업을 지정합니다. 그러나 이러한 Chat 앱은 공개적으로 게시할 수 없습니다. 자세한 내용은 Google Chat 앱 게시하기를 참고하세요.

앱 승인을 통해 Chat 앱은 서비스 계정 사용자 인증 정보를 사용하여 API로 앱에 액세스합니다. 앱 승인은 항상 chat.bot 승인 범위를 사용합니다.

도메인 관리자인 경우 도메인 전체 권한 위임을 부여하여 각 사용자의 동의 없이 애플리케이션의 서비스 계정이 사용자의 데이터에 액세스하도록 승인할 수 있습니다. 도메인 전체 위임을 구성한 후에는 서비스 계정으로 API를 호출하여 사용자 계정을 가장할 수 있습니다. 인증에는 서비스 계정이 사용되지만 도메인 전체 위임은 사용자를 가장하므로 사용자 인증으로 간주됩니다. 사용자 인증이 필요한 모든 기능은 도메인 전체 위임을 사용할 수 있습니다.

특정 API 요청에 사용할 사용자 인증 정보 유형을 결정할 때 일부 API 메서드는 특정 유형의 사용자 인증 정보만 지원한다는 점에 유의하세요. API 메서드가 두 사용자 인증 정보를 모두 지원하는 경우 호출에 사용된 사용자 인증 정보 유형이 반환되는 결과에 영향을 미칩니다.

  • 앱 승인을 사용하면 메서드는 에서 액세스할 수 있는 리소스만 반환합니다.
  • 사용자 승인을 통해 메서드는 사용자가 채팅 UI에서 액세스할 수 있는 리소스만 반환합니다.

예를 들어 앱 승인으로 ListSpaces 메서드를 호출하면 앱이 속한 공간 목록이 반환됩니다. 사용자 승인을 통해 ListSpaces를 호출하면 사용자가 속한 스페이스 목록이 반환됩니다. 실제로 앱에서 원하는 기능에 따라 Chat API를 호출할 때 두 가지 유형의 승인을 모두 사용할 수 있습니다.

비동기 Chat API 호출의 경우

다음 표에는 Chat API 메서드와 지원되는 승인 범위가 나와 있습니다.

메서드 사용자 인증 지원됨 앱 인증 지원됨 지원되는 승인 범위
스페이스  
스페이스 만들기
  • chat.spaces.create
  • chat.spaces
스페이스 설정하기
  • chat.spaces.create
  • chat.spaces
공간 확보하기 사용자 인증:
  • chat.spaces.readonly
  • chat.spaces
앱 인증을 사용하는 경우:
  • chat.bot
스페이스 나열하기 사용자 인증:
  • chat.spaces.readonly
  • chat.spaces
앱 인증을 사용하는 경우:
  • chat.bot
스페이스 업데이트하기
  • chat.spaces
스페이스 삭제하기
  • chat.delete
채팅 메시지 찾기 사용자 인증:
  • chat.spaces.readonly
  • chat.spaces
앱 인증을 사용하는 경우:
  • chat.bot
구성원  
회원 만들기
  • chat.memberships
  • chat.memberships.app
회원 가입하기 사용자 인증:
  • chat.memberships.readonly
  • chat.memberships
앱 인증을 사용하는 경우:
  • chat.bot
목록 회원 사용자 인증:
  • chat.memberships.readonly
  • chat.memberships
앱 인증을 사용하는 경우:
  • chat.bot
구성원 삭제
  • chat.memberships
  • chat.memberships.app
메시지  
메시지 만들기 사용자 인증:
  • chat.messages.create
  • chat.messages
앱 인증을 사용하는 경우:
  • chat.bot
메시지 받기 사용자 인증:
  • chat.messages.readonly
  • chat.messages
앱 인증을 사용하는 경우:
  • chat.bot
메시지 나열
  • chat.messages.readonly
  • chat.messages
메시지 업데이트하기 사용자 인증:
  • chat.messages
앱 인증을 사용하는 경우:
  • chat.bot
메시지 삭제하기 사용자 인증:
  • chat.messages
앱 인증을 사용하는 경우:
  • chat.bot
리액션  
반응 만들기
  • chat.messages.reactions.create
  • chat.messages.reactions
  • chat.messages
목록 반응
  • chat.messages.reactions.readonly
  • chat.messages.reactions
  • chat.messages.readonly
  • chat.messages
반응 삭제
  • chat.messages.reactions
  • chat.messages
미디어 및 첨부파일  
미디어를 첨부파일로 업로드
  • chat.messages.create
  • chat.messages
미디어 다운로드 사용자 인증:
  • chat.messages.readonly
  • chat.messages
앱 인증을 사용하는 경우:
  • chat.bot
메시지 첨부파일 가져오기
  • chat.bot

동기식으로 사용자 상호작용을 수신하고 응답하기 위해

다음 표에는 사용자가 Chat 앱과 상호작용하는 일반적인 방법과 인증이 필요한지 또는 지원되는지가 나열되어 있습니다.

시나리오 인증이 필요하지 않음 사용자 인증 지원됨 앱 인증 지원됨
다음에서 메시지 수신:
채팅 이벤트
Apps Script 콜백
Google Cloud Pub/Sub
메시지에 응답:
동기식으로 Chat 이벤트를 통해
동기식으로 Apps Script 콜백 반환 값 사용
새 메시지 보내기:
수신 웹훅 포함