Otentikasi dan otorisasi adalah mekanisme yang digunakan untuk memverifikasi identitas dan akses ke resource. Dokumen ini menjelaskan cara kerja autentikasi dan otorisasi untuk aplikasi Chat dan permintaan Chat API.
Ringkasan proses
Diagram berikut menunjukkan langkah-langkah tingkat tinggi untuk autentikasi dan otorisasi untuk Google Chat:
Konfigurasi project Google Cloud, aktifkan Chat API, dan konfigurasikan aplikasi Chat: Selama pengembangan, Anda membuat project Google Cloud. Di project Google Cloud, Anda mengaktifkan Chat API, mengonfigurasi aplikasi Chat, dan menyiapkan autentikasi. Untuk mengetahui informasi selengkapnya, lihat Mengembangkan aplikasi di Google Workspace dan Mem-build aplikasi Chat.
Memanggil Chat API: Saat aplikasi Anda memanggil Chat API, aplikasi akan mengirimkan kredensial autentikasi ke Chat API. Jika aplikasi Anda melakukan autentikasi dengan akun layanan, kredensial akan dikirim sebagai bagian dari kode aplikasi Anda. Jika aplikasi Anda memerlukan pemanggilan Chat API menggunakan autentikasi pengguna yang belum diberikan, aplikasi akan meminta pengguna untuk login.
Meminta resource: Aplikasi Anda meminta akses dengan cakupan yang Anda tentukan saat menyiapkan autentikasi.
Minta izin: Jika aplikasi Anda mengautentikasi sebagai pengguna, Google akan menampilkan layar izin OAuth sehingga pengguna dapat memutuskan apakah akan memberikan akses ke aplikasi Anda ke data yang diminta. Autentikasi dengan akun layanan tidak memerlukan izin pengguna.
Kirim permintaan yang disetujui untuk resource: Jika pengguna mengizinkan cakupan otorisasi, aplikasi Anda akan memaketkan kredensial dan cakupan yang disetujui pengguna ke dalam permintaan. Permintaan dikirim ke server otorisasi Google untuk mendapatkan token akses.
Google menampilkan token akses: Token akses berisi daftar cakupan yang diberikan. Jika daftar cakupan yang ditampilkan lebih membatasi daripada cakupan yang diminta, aplikasi Anda akan menonaktifkan fitur apa pun yang dibatasi oleh token.
Mengakses resource yang diminta: Aplikasi Anda menggunakan token akses dari Google untuk memanggil Chat API dan mengakses resource Chat API.
Mendapatkan token refresh (opsional): Jika aplikasi Anda harus mengakses Google Chat API di luar masa aktif satu token akses, aplikasi tersebut dapat mendapatkan token refresh. Untuk informasi selengkapnya, lihat Menggunakan OAuth 2.0 untuk mengakses Google API.
Minta lebih banyak resource: Jika aplikasi Anda memerlukan lebih banyak akses, aplikasi akan meminta pengguna untuk memberikan cakupan baru, sehingga akan menghasilkan permintaan baru untuk mendapatkan token akses (langkah 3-6).
Saat aplikasi Chat memerlukan autentikasi
Aplikasi Chat dapat mengirim pesan sebagai respons terhadap interaksi pengguna, atau secara asinkron. Mereka juga dapat menyelesaikan tugas atas nama pengguna, seperti membuat ruang Chat atau mendapatkan daftar orang di ruang Chat.
Aplikasi Chat tidak memerlukan autentikasi untuk merespons interaksi pengguna, kecuali jika aplikasi Chat memanggil Chat API atau Google API lainnya saat memproses respons.
Untuk mengirim pesan asinkron atau melakukan tugas atas nama pengguna, aplikasi Chat membuat permintaan RESTful ke Chat API, yang memerlukan autentikasi dan otorisasi.
Respons ke interaksi pengguna tidak memerlukan autentikasi
Aplikasi Google Chat tidak perlu melakukan autentikasi sebagai pengguna atau aplikasi Chat untuk menerima dan merespons secara sinkron terhadap peristiwa interaksi.
Aplikasi Google Chat menerima peristiwa interaksi setiap kali pengguna berinteraksi atau memanggil aplikasi Chat, termasuk hal berikut:
- Pengguna mengirim pesan ke aplikasi Chat.
- Pengguna @menyebutkan aplikasi Chat.
- Pengguna memanggil salah satu perintah garis miring aplikasi Chat.
Diagram berikut menunjukkan urutan permintaan-respons antara pengguna Chat dan aplikasi Chat:
- Pengguna mengirim pesan ke aplikasi Chat di Google Chat.
- Google Chat akan meneruskan pesan ke aplikasi.
- Aplikasi menerima pesan, memprosesnya, dan menampilkan respons ke Google Chat.
- Google Chat merender respons untuk pengguna, atau dalam ruang.
Urutan ini diulang untuk setiap peristiwa interaksi aplikasi Chat.
Pesan asinkron memerlukan autentikasi
Pesan asinkron terjadi saat aplikasi Chat membuat permintaan ke Chat API, yang memerlukan autentikasi dan otorisasi.
Dengan memanggil Chat API, aplikasi Chat dapat memposting pesan ke Google Chat atau menyelesaikan tugas dan mengakses data atas nama pengguna. Misalnya, setelah mendeteksi pemadaman server, aplikasi Chat dapat memanggil Chat API untuk:
- Buat ruang Chat khusus untuk menyelidiki dan memperbaiki penghentian layanan.
- Tambahkan orang ke ruang Chat.
- Posting pesan ke ruang Chat untuk memberikan detail tentang penghentian layanan.
Diagram berikut menunjukkan urutan pesan asinkron antara aplikasi Chat dan ruang Chat:
- Aplikasi Chat membuat pesan dengan memanggil Chat API menggunakan metode
spaces.messages.create
, dan menyertakan kredensial pengguna dalam permintaan HTTP. - Google Chat mengautentikasi aplikasi Chat dengan akun layanan atau kredensial pengguna.
- Google Chat merender pesan aplikasi ke ruang Chat yang ditentukan.
Cakupan Chat API
Mengonfigurasi layar izin OAuth dan memilih cakupan untuk menentukan informasi yang ditampilkan kepada pengguna dan peninjau aplikasi, serta mendaftarkan aplikasi Anda agar dapat memublikasikannya nanti.
Untuk menentukan tingkat akses yang diberikan ke aplikasi, Anda perlu mengidentifikasi dan mendeklarasikan cakupan otorisasi. Cakupan otorisasi adalah string URI OAuth 2.0 yang berisi nama aplikasi Google Workspace, jenis data yang diakses, dan tingkat akses.
Cakupan tidak sensitif
Kode cakupan | Deskripsi |
---|---|
https://www.googleapis.com/auth/chat.bot
|
Memungkinkan aplikasi Chat melihat chat dan mengirim pesan. Cakupan ini hanya mendukung autentikasi aplikasi dengan akun layanan. Anda tidak dapat melakukan autentikasi dengan kredensial pengguna atau dengan delegasi seluruh domain menggunakan cakupan ini. |
Cakupan sensitif
Kode cakupan | Deskripsi |
---|---|
https://www.googleapis.com/auth/chat.spaces
|
Membuat percakapan dan ruang serta melihat atau mengedit metadata (termasuk setelan histori dan setelan akses) di Chat. |
https://www.googleapis.com/auth/chat.spaces.create
|
Membuat percakapan baru di Chat. |
https://www.googleapis.com/auth/chat.spaces.readonly
|
Melihat chat dan ruang di Chat. |
https://www.googleapis.com/auth/chat.memberships
|
Melihat, menambahkan, memperbarui, dan menghapus anggota dari percakapan di Chat. |
https://www.googleapis.com/auth/chat.memberships.app
|
Menambahkan dan menghapus dirinya sendiri dari percakapan di Google Chat. |
https://www.googleapis.com/auth/chat.memberships.readonly
|
Melihat anggota di percakapan Chat. |
https://www.googleapis.com/auth/chat.messages.create
|
Menulis dan mengirim pesan di Chat. |
https://www.googleapis.com/auth/chat.messages.reactions
|
Melihat, menambahkan, dan menghapus reaksi pada pesan di Chat. |
https://www.googleapis.com/auth/chat.messages.reactions.create
|
Menambahkan reaksi pada pesan di Chat. |
https://www.googleapis.com/auth/chat.messages.reactions.readonly
|
Melihat reaksi pada pesan di Chat. |
https://www.googleapis.com/auth/chat.users.readstate
|
Melihat dan mengubah waktu baca terakhir untuk percakapan Chat. |
https://www.googleapis.com/auth/chat.users.readstate.readonly
|
Melihat waktu terakhir dibaca untuk percakapan Chat. |
https://www.googleapis.com/auth/chat.admin.spaces.readonly
|
Melihat chat dan ruang yang dimiliki oleh domain administrator di Chat. |
https://www.googleapis.com/auth/chat.admin.spaces
|
Melihat atau mengedit chat dan ruang yang dimiliki oleh domain administrator di Chat. |
https://www.googleapis.com/auth/chat.admin.memberships.readonly
|
Melihat anggota dan pengelola dalam percakapan yang dimiliki oleh domain administrator di Chat. |
https://www.googleapis.com/auth/chat.admin.memberships
|
Melihat, menambahkan, memperbarui, dan menghapus anggota serta pengelola dalam percakapan yang dimiliki oleh domain administrator di Chat. |
https://www.googleapis.com/auth/chat.app.spaces
|
Membuat percakapan dan ruang serta melihat atau memperbarui metadata (termasuk setelan histori dan setelan akses) di Chat. Memerlukan persetujuan administrator. Cakupan ini hanya mendukung autentikasi aplikasi dengan akun layanan. Anda tidak dapat melakukan autentikasi dengan kredensial pengguna atau dengan delegasi seluruh domain menggunakan cakupan ini. |
https://www.googleapis.com/auth/chat.app.spaces.create
|
Membuat percakapan dan ruang baru di Chat. Memerlukan persetujuan administrator. Cakupan ini hanya mendukung autentikasi aplikasi dengan akun layanan. Anda tidak dapat melakukan autentikasi dengan kredensial pengguna atau dengan delegasi seluruh domain menggunakan cakupan ini. |
https://www.googleapis.com/auth/chat.app.memberships
|
Melihat, menambahkan, memperbarui, dan menghapus anggota dari percakapan dan ruang di Chat. Memerlukan persetujuan administrator. Cakupan ini hanya mendukung autentikasi aplikasi dengan akun layanan. Anda tidak dapat melakukan autentikasi dengan kredensial pengguna atau dengan delegasi seluruh domain menggunakan cakupan ini. |
https://www.googleapis.com/auth/chat.customemojis
|
Melihat, membuat, dan menghapus emoji kustom di Chat. |
https://www.googleapis.com/auth/chat.customemojis.readonly
|
Melihat emoji kustom di Chat. |
https://www.googleapis.com/auth/chat.users.spacesettings
|
Melihat dan memperbarui setelan ruang pengguna Chat.
Lihat API setelan pengguna ruang: getSpaceNotificationSetting, updateSpaceNotificationSetting |
Cakupan yang dibatasi
Kode cakupan | Deskripsi |
---|---|
https://www.googleapis.com/auth/chat.delete
|
Menghapus percakapan dan ruang, serta menghapus akses ke file terkait di Chat. |
https://www.googleapis.com/auth/chat.import
|
Mengimpor ruang, pesan, dan keanggotaan ke Chat. Untuk mengetahui informasi selengkapnya, lihat Memberi otorisasi aplikasi Chat untuk mengimpor data |
https://www.googleapis.com/auth/chat.messages
|
Melihat, menulis, mengirim, memperbarui, dan menghapus pesan, serta menambahkan, melihat, dan menghapus reaksi pada pesan. |
https://www.googleapis.com/auth/chat.messages.readonly
|
Melihat pesan dan reaksi di Chat. |
https://www.googleapis.com/auth/chat.admin.delete
|
Menghapus percakapan dan ruang yang dimiliki oleh domain administrator, serta menghapus akses ke file terkait di Chat. |
https://www.googleapis.com/auth/chat.app.delete
|
Menghapus percakapan dan ruang serta menghapus akses ke file terkait di Chat. Memerlukan persetujuan administrator. Cakupan ini hanya mendukung autentikasi aplikasi dengan akun layanan. Anda tidak dapat melakukan autentikasi dengan kredensial pengguna atau dengan delegasi seluruh domain menggunakan cakupan ini. |
Cakupan dalam tabel sebelumnya menunjukkan sensitivitasnya, sesuai dengan definisi berikut:
Tidak sensitif—Cakupan ini menyediakan lingkup akses otorisasi terkecil dan hanya memerlukan verifikasi aplikasi dasar. Untuk mengetahui informasi tentang persyaratan ini, lihat Langkah-langkah untuk mempersiapkan verifikasi.
Sensitif—Cakupan ini memberi aplikasi Anda akses ke data Google pengguna tertentu setelah menerima otorisasi dari pengguna. Anda harus melakukan verifikasi aplikasi tambahan. Untuk informasi tentang persyaratan ini, lihat Langkah-langkah untuk aplikasi yang meminta cakupan sensitif.
Dibatasi—Cakupan ini memberikan akses luas ke data pengguna Google dan mengharuskan Anda melalui proses verifikasi cakupan yang dibatasi. Untuk mengetahui informasi tentang persyaratan ini, lihat Layanan Google API: Kebijakan Data Pengguna dan Persyaratan Tambahan untuk Cakupan API Tertentu. Lihat juga Langkah-langkah untuk aplikasi yang meminta cakupan yang dibatasi.
Jika aplikasi Anda memerlukan akses ke API Google lainnya, Anda juga dapat menambahkan cakupan tersebut. Untuk informasi selengkapnya tentang cakupan Google API, lihat Menggunakan OAuth 2.0 untuk Mengakses Google API.
Untuk mempelajari cakupan Google Workspace API lebih lanjut, lihat Mengonfigurasi layar izin OAuth dan memilih cakupan.
Jenis autentikasi yang diperlukan
Ada dua cara bagi aplikasi Chat untuk mengautentikasi dan memberikan otorisasi dengan Chat API:
- Autentikasi pengguna
- Autentikasi pengguna memungkinkan aplikasi Chat mengakses data pengguna dan menyelesaikan tindakan atas nama pengguna. Cakupan OAuth menentukan data dan tindakan yang diizinkan. Kecuali jika aplikasi Chat diinstal admin atau diberi delegasi tingkat domain, saat pertama kali aplikasi Chat melakukan tindakan atas nama pengguna, pengguna harus mengizinkan aplikasi Chat menggunakan layar izin OAuth.
- Autentikasi aplikasi
Autentikasi aplikasi memungkinkan aplikasi Chat menggunakan kredensial akun layanan dan mengakses data serta menyelesaikan tindakan sebagai dirinya sendiri. Karena aplikasi Chat menggunakan kredensialnya sendiri untuk mengakses dan menggunakan resource, pengguna akhir tidak perlu menyetujui panggilan API aplikasi Chat, dan Anda tidak dapat menambahkan cakupan otorisasi OAuth yang mendukung otorisasi aplikasi ke layar izin OAuth.
Dua jenis cakupan otorisasi OAuth mendukung autentikasi aplikasi:
https://www.googleapis.com/auth/chat.bot
: Aplikasi Chat Anda dapat memanggil metode Google Chat API yang mendukung cakupan otorisasi ini untuk membuat, memperbarui, mendapatkan, mencantumkan, atau menghapus resource yang dapat diaksesnya, seperti pesan di ruang yang ditambahkan pengguna akhir ke aplikasi Chat Anda. Aplikasi Chat Anda dapat memberikan cakupan otorisasi ini secara mandiri, tanpa memerlukan otorisasi administrator atau pengguna akhir.https://www.googleapis.com/auth/chat.app.*
(Pratinjau Developer): Penggunaan cakupan ini memerlukan persetujuan administrator satu kali. Guna menerima persetujuan administrator, Anda menyiapkan akun layanan aplikasi Chat untuk menerima persetujuan administrator dengan membuat klien OAuth yang kompatibel dengan Google Workspace Marketplace dan mengonfigurasi aplikasi di Google Workspace Marketplace SDK. Cakupan ini memungkinkan aplikasi Chat Anda memanggil metode Google Chat API tertentu. Misalnya,chat.app.spaces.create
mengizinkan aplikasi membuat ruang Chat.
Jika metode mendukung autentikasi pengguna atau aplikasi, Chat API akan menampilkan hasil yang berbeda berdasarkan jenis autentikasi yang Anda gunakan:
- Dengan autentikasi aplikasi, metode hanya menampilkan resource yang dapat diakses oleh aplikasi Chat.
- Dengan autentikasi pengguna, metode tersebut hanya menampilkan resource yang dapat diakses oleh pengguna.
Misalnya, memanggil metode spaces.list()
dengan otorisasi aplikasi akan menampilkan
daftar ruang tempat aplikasi Chat menjadi anggota.
Memanggil spaces.list()
dengan
otorisasi pengguna akan menampilkan daftar ruang tempat pengguna menjadi anggota. Dalam
praktiknya, Anda dapat menggunakan kedua jenis
autentikasi saat memanggil Chat API, bergantung pada desain
dan fitur aplikasi Chat Anda.
Untuk panggilan Chat API asinkron
Tabel berikut mencantumkan metode Chat API dan cakupan otorisasi yang didukungnya:
Metode | Autentikasi pengguna didukung | Autentikasi aplikasi didukung | Cakupan otorisasi yang didukung | |
---|---|---|---|---|
Ruang | ||||
Membuat ruang |
Dengan Autentikasi pengguna:
|
|||
Menyiapkan ruang | — |
Dengan Autentikasi pengguna:
|
||
Mendapatkan ruang |
Dengan Autentikasi pengguna:
|
|||
Mencantumkan ruang |
Dengan Autentikasi pengguna:
|
|||
Ruang penelusuran | — |
Dengan Autentikasi pengguna menggunakan hak istimewa administrator:
|
||
Memperbarui ruang |
Dengan Autentikasi pengguna:
|
|||
Menghapus ruang |
Dengan Autentikasi pengguna:
|
|||
Menyelesaikan proses impor untuk ruang | — |
Dengan Autentikasi pengguna:
|
||
Menemukan pesan langsung |
Dengan Autentikasi pengguna:
|
|||
Anggota | ||||
Membuat anggota |
Dengan Autentikasi pengguna:
|
|||
Mendapatkan anggota |
Dengan Autentikasi pengguna:
|
|||
Mencantumkan anggota |
Dengan Autentikasi pengguna:
|
|||
Menghapus anggota |
Dengan Autentikasi pengguna:
|
|||
Memperbarui anggota |
Dengan Autentikasi pengguna:
|
|||
Pesan | ||||
Membuat pesan |
Dengan Autentikasi pengguna:
|
|||
Mendapatkan pesan |
Dengan Autentikasi pengguna:
|
|||
Daftar pesan | — |
Dengan Autentikasi pengguna:
|
||
Memperbarui pesan |
Dengan Autentikasi pengguna:
|
|||
Menghapus pesan |
Dengan Autentikasi pengguna:
|
|||
Reaksi | ||||
Membuat reaksi | — |
Dengan Autentikasi pengguna:
|
||
Daftar reaksi | — |
Dengan Autentikasi pengguna:
|
||
Menghapus reaksi | — |
Dengan Autentikasi pengguna:
|
||
Emoji kustom | ||||
Membuat emoji kustom | — |
Dengan Autentikasi pengguna:
|
||
Menghapus emoji kustom | — |
Dengan Autentikasi pengguna:
|
||
Mendapatkan emoji kustom | — |
Dengan Autentikasi pengguna:
|
||
Mencantumkan emoji kustom | — |
Dengan Autentikasi pengguna:
|
||
Media & lampiran | ||||
Mengupload media sebagai lampiran file | — |
Dengan Autentikasi pengguna:
|
||
Mendownload media |
Dengan Autentikasi pengguna:
|
|||
Mendapatkan lampiran pesan | — |
Dengan Autentikasi aplikasi:
|
||
Status baca pengguna | ||||
Mendapatkan status pembacaan ruang pengguna | — |
Dengan Autentikasi pengguna:
|
||
Memperbarui status pembacaan ruang pengguna | — |
Dengan Autentikasi pengguna:
|
||
Mendapatkan status bacaan rangkaian pesan pengguna | — |
Dengan Autentikasi pengguna:
|
||
Setelan ruang pengguna | ||||
Mendapatkan setelan notifikasi ruang pengguna | — |
Dengan Autentikasi pengguna:
|
||
Memperbarui setelan notifikasi ruang pengguna | — |
Dengan Autentikasi pengguna:
|
||
Peristiwa ruang | ||||
Dapatkan acara ruang angkasa | — |
Dengan Autentikasi pengguna,
Anda harus menggunakan cakupan berdasarkan
jenis peristiwa:
|
||
Mencantumkan peristiwa ruang | — |
Dengan Autentikasi pengguna,
Anda harus menggunakan cakupan untuk setiap
jenis peristiwa yang disertakan dalam permintaan:
|
Untuk peristiwa interaksi aplikasi Chat
Tabel berikut mencantumkan cara umum pengguna berinteraksi dengan aplikasi Chat dan apakah autentikasi diperlukan atau didukung:
Skenario | Tidak diperlukan autentikasi | Autentikasi pengguna didukung | Autentikasi aplikasi didukung | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Menerima pesan dari: |
|
|||||||||||||||
Membalas pesan: |
|
|||||||||||||||
Mengirim pesan baru: |
|
Topik terkait
- Untuk ringkasan autentikasi dan otorisasi di Google Workspace, lihat Pelajari autentikasi & otorisasi.
- Untuk ringkasan autentikasi dan otorisasi di Google Cloud, lihat Ringkasan autentikasi.
- Untuk mempelajari akun layanan lebih lanjut, lihat Akun layanan.
- Untuk mempelajari lebih lanjut cara Google API menggunakan OAuth 2.0, lihat Menggunakan OAuth 2.0 untuk Mengakses Google API.
- Siapkan autentikasi dan otorisasi dengan kredensial pengguna atau akun layanan.