Mengautentikasi pengguna dengan identitas eksternal
Panduan memulai ini menunjukkan cara mengamankan aplikasi menggunakan Identity-Aware Proxy (IAP) dan identitas eksternal. Dengan menggabungkan IAP dan Identity Platform, Anda dapat mengautentikasi pengguna dengan berbagai penyedia identitas, seperti OAuth, SAML, dan OIDC, selain Akun Google.
Dalam panduan memulai ini, Anda akan mengamankan aplikasi App Engine contoh menggunakan autentikasi Facebook.
Sebelum memulai
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk menyelesaikan panduan memulai ini, minta administrator untuk memberi Anda peran IAM berikut di project Anda:
- Project Creator (
roles/resourcemanager.projectCreator) - App Engine Admin(
roles/appengine.appAdmin) - Firebase Authentication Viewer (
roles/firebaseauth.viewer) - IAP Policy Admin (
roles/iap.admin) - Compute Viewer (
roles/compute.viewer) - Identity Platform Admin (
roles/identityplatform.admin)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Di konsol Google Cloud , pada halaman pemilih project, pilih atau buat project Google Cloud .
Peran yang diperlukan untuk memilih atau membuat project
- Memilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project apa pun yang perannya telah diberikan kepada Anda.
-
Membuat project: Untuk membuat project, Anda memerlukan peran Project Creator
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
Pastikan penagihan diaktifkan untuk project Google Cloud Anda.
Instal Google Cloud CLI, lalu login ke gcloud CLI dengan identitas gabungan Anda. Setelah login, inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:
gcloud initLakukan inisialisasi App Engine untuk project Anda:
gcloud app create --project=project-id
Instal Node.js versi terbaru.
Instal alat command line Firebase:
npm install -g firebase-tools
Mengaktifkan API
Pertama, aktifkan Identity Platform:
Buka halaman Identity Platform Marketplace di konsolGoogle Cloud .
Klik Aktifkan Identity Platform. Halaman Identity Platform akan muncul di konsol Google Cloud .
Kemudian, aktifkan IAP:
Buka halaman IAP di konsol Google Cloud .
Pilih project yang sama dengan yang Anda gunakan untuk Identity Platform. Penggunaan project yang berbeda tidak didukung.
Klik Enable API.
Mendownload dan men-deploy kode contoh
Kode untuk panduan memulai ini memiliki dua komponen: aplikasi klien dan aplikasi autentikasi.
Aplikasi klien dilindungi oleh IAP. Saat menerima permintaan dari pengguna yang tidak diautentikasi, aplikasi ini akan mengalihkan permintaan ke aplikasi autentikasi untuk memverifikasi identitas pengguna. Jika pengguna berhasil login, aplikasi pengautentikasi akan merespons dengan Token Web JSON (JWT). Untuk tujuan demonstrasi, aplikasi klien menampilkan JWT.
Pertama, download kode, dan deploy aplikasi klien:
Download kode contoh:
git clone https://github.com/GoogleCloudPlatform/iap-gcip-web-toolkit.git
Ubah ke direktori aplikasi klien:
cd iap-gcip-web-toolkit/sample/appInstal dependensi:
npm installMen-deploy aplikasi klien ke App Engine:
npm run deployAplikasi klien diluncurkan di URL:
https://[PROJECT-ID].appspot.com
Selanjutnya, deploy aplikasi autentikasi:
Ubah ke direktori untuk aplikasi pengautentikasi:
cd ../authui-firebaseuiInstal dependensi:
npm install export NODE_OPTIONS=--openssl-legacy-providerMengonfigurasi aplikasi autentikasi untuk menggunakan Firebase Hosting. Tentukan project ID Google Cloud dari project Google Cloud yang berisi aplikasi klien yang dilindungi IAP:
firebase use project-id
Deploy aplikasi:
npm run deployAplikasi pengautentikasi diluncurkan di URL:
https://[PROJECT-ID].firebaseapp.com
Anda telah men-deploy aplikasi klien dan autentikasi. Langkah berikutnya adalah mengonfigurasi Identity Platform dan IAP.
Menyiapkan Identity Platform
IAP menggunakan Identity Platform untuk mengautentikasi identitas eksternal. Panduan memulai ini menggunakan Facebook sebagai contoh, tetapi Identity Platform mendukung berbagai penyedia identitas.
Membuat aplikasi Facebook
Untuk mengautentikasi pengguna dengan Facebook, Anda memerlukan ID Aplikasi dan Rahasia Aplikasi.
Login ke Meta for Developers. Jika belum memiliki akun Facebook, Anda harus membuatnya.
Buka halaman My apps Facebook.
Klik Create App.
Di menu kiri, pilih Setelan > Dasar.
Di kotak Privacy Policy URL, masukkan URL yang valid. Jika nanti Anda men-deploy aplikasi ke produksi, Anda dapat memperbarui URL agar mengarah ke kebijakan privasi Anda.
Catat ID Aplikasi dan Rahasia Aplikasi Anda. Anda akan membutuhkannya di bagian berikutnya.
Menambahkan Facebook sebagai penyedia identitas
Konfigurasikan Identity Platform agar menggunakan Facebook untuk autentikasi:
Buka halaman Penyedia identitas di konsol Google Cloud .
Klik Tambahkan Penyedia.
Pilih Facebook dari daftar penyedia.
Masukkan ID Aplikasi dan Rahasia Aplikasi yang Anda peroleh di bagian sebelumnya.
Klik Simpan.
Mengonfigurasi URI pengalihan OAuth
Setelah Facebook selesai memproses permintaan dari aplikasi autentikasi, Facebook memerlukan URI untuk pengalihan.
Kembali ke halaman My Apps Facebook, lalu pilih aplikasi Anda.
Di menu kiri, klik Products > Add Product.
Temukan produk Facebook Login, lalu klik Set up.
Di menu navigasi kiri, pilih Settings (Anda tidak perlu menyelesaikan alur panduan memulai).
Di kotak Valid OAuth Redirect URIs, masukkan URI pengalihan:
https://project-id.firebaseapp.com/__/auth/handler
Anda juga dapat menemukan URI ini di halaman konfigurasi penyedia Identity Platform.
Klik Simpan Perubahan.
Anda telah selesai menyiapkan Identity Platform. Sekarang Anda dapat mengonfigurasi IAP untuk menggunakannya dalam autentikasi.
Mengaktifkan IAP untuk menggunakan identitas eksternal
Buka halaman IAP di konsol Google Cloud .
Klik tab APPLICATIONS.
Pilih aplikasi App Engine contoh yang Anda deploy sebelumnya. URL dalam kategori Published akan terlihat seperti:
https://project-id.appspot.com
Di kolom IAP, alihkan tombol ke On.
Di panel samping, klik Mulai untuk Gunakan identitas eksternal untuk otorisasi.
Di bagian Halaman login, pilih Saya akan menyediakan halaman login saya sendiri.
Di kolom URL Autentikasi, masukkan URL aplikasi pengautentikasi. URL tersebut akan terlihat seperti:
https://project-id.firebaseapp.com/
Setelah Anda memasukkan URL, konsol Google Cloud akan otomatis menambahkan kunci API Anda.
Centang kotak dengan nama project Anda. Facebook akan tercantum sebagai penyedia identitas.
Klik Simpan.
Anda telah selesai menyiapkan IAP.
Menguji autentikasi pengguna
Untuk menguji apakah IAP melindungi aplikasi Anda dan mengautentikasi pengguna dengan Facebook:
Buka aplikasi App Engine klien di browser Anda:
https://project-id.appspot.com
Setelah layar pemuatan singkat, Anda akan dialihkan ke halaman login Identity Platform.
Ikuti perintah di layar untuk melakukan autentikasi dengan Facebook.
Anda akan dialihkan kembali ke aplikasi klien, yang akan menampilkan JWT yang ditampilkan oleh Identity Platform.
Untuk logout sepenuhnya, Anda harus logout dari aplikasi contoh yang Anda buat dan Facebook. Anda harus logout dari kedua aplikasi karena Firebase membuat sesi dengan Facebook yang berlaku selama satu jam. Untuk mengetahui informasi selengkapnya, lihat Mengelola Sesi Pengguna.
Selamat! Anda berhasil men-deploy aplikasi ke App Engine dan melindunginya dengan IAP dan identitas eksternal.
Pembersihan
Agar akun Google Cloud Anda tidak dikenai biaya untuk resource yang digunakan pada halaman ini, ikuti langkah-langkah berikut.
- Di konsol Google Cloud , buka halaman Manage resources.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Selain itu, Anda mungkin ingin menghapus aplikasi Facebook yang Anda buat.
Langkah berikutnya
Sesuaikan UI autentikasi Anda dengan FirebaseUI, atau buat UI kustom dari awal.
Pelajari lebih lanjut cara mengonfigurasi penyedia identitas dengan Identity Platform.
Pelajari cara membuat silo pengguna dan konfigurasi yang unik dengan multi-tenancy Identity Platform.