Untuk mendukung alur implisit OAuth 2.0, layanan Anda menyediakan endpoint otorisasi melalui HTTPS. Endpoint ini bertanggung jawab untuk autentikasi dan mendapatkan izin dari pengguna untuk akses data. Endpoint otorisasi menampilkan UI login kepada pengguna yang belum login dan mencatat izin untuk akses yang diminta.
Saat aplikasi Google perlu memanggil salah satu API resmi layanan Anda, Google menggunakan endpoint ini untuk mendapatkan izin dari pengguna Anda agar dapat memanggil API ini atas nama mereka.
Penautan Akun Google: Alur Implisit OAuth
Diagram urutan berikut menjelaskan interaksi antara Pengguna, Google, dan endpoint layanan Anda.
Peran dan tanggung jawab
Tabel berikut menentukan peran dan tanggung jawab aktor dalam alur OAuth Implisit Penautan Akun Google (GAL). Perhatikan bahwa di GAL, Google bertindak sebagai Klien OAuth, sedangkan layanan Anda bertindak sebagai Penyedia Layanan/Identitas.
| Aktor / Komponen | Peran GAL | Tanggung Jawab |
|---|---|---|
| Aplikasi / Server Google | Klien OAuth | Memulai alur, menerima token akses menggunakan pengalihan browser, dan menyimpannya dengan aman untuk mengakses API layanan Anda. |
| Endpoint Otorisasi Anda | Server Otorisasi | Mengautentikasi pengguna Anda, mendapatkan izin mereka, dan menerbitkan token akses yang berlaku lama langsung ke Google. |
| URI Pengalihan Google | Endpoint Callback | Menerima pengalihan pengguna dari layanan otorisasi Anda dengan
nilai access_token dan state dalam fragmen URL. |
Sesi alur implisit OAuth 2.0 umum yang dimulai oleh Google memiliki alur berikut:
- Google membuka endpoint otorisasi Anda di browser pengguna. Pengguna login, jika belum login, dan memberikan izin kepada Google untuk mengakses datanya dengan API Anda, jika mereka belum memberikan izin.
- Layanan Anda membuat token akses dan menampilkannya ke Google. Untuk melakukannya, alihkan browser pengguna kembali ke Google dengan token akses yang dilampirkan pada permintaan.
- Google memanggil API layanan Anda dan melampirkan token akses dengan setiap permintaan. Layanan Anda memverifikasi bahwa token akses memberikan otorisasi Google untuk mengakses API, lalu menyelesaikan panggilan API.
Resep Penerapan
Ikuti langkah-langkah berikut untuk menerapkan alur Implicit.
Langkah 1: Menangani permintaan otorisasi
Saat memulai penautan akun, Google akan mengalihkan pengguna ke endpoint otorisasi Anda. Untuk mengetahui detail kontrak protokol dan persyaratan parameter, lihat Authorization Endpoint.
Untuk menangani permintaan, lakukan tindakan berikut:
Validasi permintaan:
- Konfirmasi bahwa
client_idcocok dengan Client ID yang ditetapkan ke Google. - Pastikan
redirect_uricocok dengan URL pengalihan Google yang diharapkan:none https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID https://oauth-redirect-sandbox.googleusercontent.com/r/YOUR_PROJECT_ID - Pastikan
response_typeadalahtoken.
- Konfirmasi bahwa
Mengautentikasi pengguna:
- Periksa apakah pengguna login ke layanan Anda.
- Jika pengguna tidak login, minta mereka untuk menyelesaikan alur login atau pendaftaran Anda.
Buat token akses:
- Buat token akses unik yang tidak dapat ditebak dan terkait dengan pengguna dan klien.
Mengarahkan kembali ke Google:
- Alihkan browser ke URL yang diberikan di
redirect_uri. - Tambahkan parameter berikut dalam fragmen URL (hash):
access_token: Token akses yang Anda buat.token_type: Harusbearer.state: Nilai status yang tidak diubah yang diterima dari Google.
- Alihkan browser ke URL yang diberikan di
Handle userinfo requests
The userinfo endpoint is an OAuth 2.0 protected resource that return claims about the linked user. Implementing and hosting the userinfo endpoint is optional, except for the following use cases:
- Linked Account Sign-In with Google One Tap.
- Frictionless subscription on AndroidTV.
After the access token has been successfully retrieved from your token endpoint, Google sends a request to your userinfo endpoint to retrieve basic profile information about the linked user.
| userinfo endpoint request headers | |
|---|---|
Authorization header |
The access token of type Bearer. |
For example, if your userinfo endpoint is available at
https://myservice.example.com/userinfo, a request might look like the following:
GET /userinfo HTTP/1.1 Host: myservice.example.com Authorization: Bearer ACCESS_TOKEN
For your userinfo endpoint to handle requests, do the following steps:
- Extract access token from the Authorization header and return information for the user associated with the access token.
- If the access token is invalid, return an HTTP 401 Unauthorized error with using the
WWW-AuthenticateResponse Header. Below is an example of a userinfo error response: If a 401 Unauthorized, or any other unsuccessful error response is returned during the linking process, the error will be non-recoverable, the retrieved token will be discarded and the user will have to initiate the linking process again.HTTP/1.1 401 Unauthorized WWW-Authenticate: error="invalid_token", error_description="The Access Token expired"
If the access token is valid, return and HTTP 200 response with the following JSON object in the body of the HTTPS response:
If your userinfo endpoint returns an HTTP 200 success response, the retrieved token and claims are registered against the user's Google account.{ "sub": "USER_UUID", "email": "EMAIL_ADDRESS", "given_name": "FIRST_NAME", "family_name": "LAST_NAME", "name": "FULL_NAME", "picture": "PROFILE_PICTURE", }userinfo endpoint response subA unique ID that identifies the user in your system. emailEmail address of the user. given_nameOptional: First name of the user. family_nameOptional: Last name of the user. nameOptional: Full name of the user. pictureOptional: Profile picture of the user.