Chat 앱 및 API 요청 인증 및 승인

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

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

프로세스 개요

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

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

  1. Google Cloud 프로젝트 구성, Chat API 사용 설정, Chat 앱 구성: 개발 중에 Google Cloud 프로젝트를 만듭니다. Google Cloud 프로젝트에서 Chat API를 사용 설정하고 Chat 앱을 구성하고 인증을 설정합니다.

  2. Chat API 호출: 앱에서 Chat REST API를 호출할 때(일반적으로 Google Chat의 사용자가 메시지를 보내거나, 카드에 있는 버튼을 클릭하거나, 슬래시 명령어를 실행하여 앱을 호출한 경우) Chat API에 인증 사용자 인증 정보를 전송합니다. 앱이 서비스 계정으로 인증하면 사용자 인증 정보가 앱 코드의 일부로 전송됩니다. 앱이 사용자로 인증되면 사용자에게 로그인 메시지가 표시될 수 있습니다.

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

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

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

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

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

  8. 갱신 토큰 받기 (선택사항): 단일 액세스 토큰의 전체 기간을 지나 앱이 Google Chat API에 액세스해야 하는 경우 갱신 토큰을 가져올 수 있습니다.

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

Chat 앱에 인증이 필요한 경우

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

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

채팅 앱에서 비동기 메시지를 보내거나 사용자를 대신하여 작업하려면 인증과 승인이 필요한 RESTful 요청을 Chat REST API에 요청합니다.

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

동기 메시지는 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 REST API에 요청할 때 발생합니다.

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

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

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

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

  1. Chat 앱은 spaces.messages.create 메서드를 사용하여 Chat REST 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 앱에서 채팅을 보고 메시지를 보낼 수 있도록 허용합니다.
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.messages 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 앱이 서비스 계정 사용자 인증 정보를 사용하거나 도메인 전체 위임을 통해 사용자를 가장하여 API로 앱에 액세스합니다.

다음 표에는 채팅 앱에 발생하는 일반적인 시나리오, 인증이 필요한지 여부, 인증이 필요한 경우 종류가 나와 있습니다.

시나리오 인증이 필요하지 않음 사용자 인증 지원됨 서비스 계정 지원됨
다음에서 메시지 수신:
채팅 이벤트
Apps Script 콜백
Google Cloud Pub/Sub
메시지에 답장하기:
동기식으로 Chat 이벤트 사용
동기적으로, Apps Script 콜백 반환 값을 통해
Chat REST API를 통해 비동기적으로 사용
새 메시지 보내기:
수신 웹훅
Chat REST API 사용
Chat 스페이스 만들기:
Chat REST API 사용
도메인 전체 위임 사용
Chat 스페이스에 사용자 및 앱 추가하기
Chat REST API 사용
도메인 전체 위임 사용
  • Google Workspace의 인증 및 승인에 관한 개요는 Google Workspace for Developers의 인증 및 승인 알아보기를 참고하세요.
  • Google Cloud의 인증 및 승인에 대한 개요는 Google Cloud 문서의 인증 개요를 참고하세요.
  • 서비스 계정에 대한 자세한 내용은 Google Cloud Identity and Access Management (IAM) 문서의 서비스 계정을 참조하세요.
  • Google API에서 OAuth 2.0을 활용하는 방법에 대해 자세히 알아보려면 Google ID 문서에서 OAuth 2.0을 사용하여 Google API에 액세스하기를 참고하세요.

다음 단계

사용자 인증 정보 또는 서비스 계정으로 인증 및 승인을 설정합니다.