Saat beberapa aplikasi berbagi gerbang masuk Service Mesh (ASM), masing-masing biasanya menerapkan logika autentikasinya sendiri—menduplikasi upaya dan meningkatkan risiko keamanan. OpenID Connect (OIDC), sebuah lapisan identitas yang dibangun di atas OAuth 2.0, memungkinkan single sign-on (SSO) di tingkat gerbang: pengguna login sekali, dan gerbang meneruskan Token Web JSON (JWT) yang telah diverifikasi ke setiap aplikasi backend tanpa perubahan kode apa pun.
Cara kerja
Pengguna mengirim permintaan ke gerbang masuk.
Gerbang memeriksa apakah terdapat cookie sesi yang valid. Jika tidak ada, gerbang mengalihkan pengguna ke halaman login penyedia identitas (IdP).
Setelah autentikasi, IdP mengalihkan kembali pengguna ke URL callback gerbang (
/oauth2/callback) dengan kode otorisasi.Gerbang menukar kode tersebut dengan token, menetapkan cookie sesi, dan meneruskan permintaan ke backend dengan JWT dalam header
Authorization.Backend membaca identitas pengguna dari muatan JWT—tidak diperlukan panggilan langsung ke IdP.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Aplikasi yang dideploy di instans ASM. Untuk informasi selengkapnya, lihat Deploy applications in clusters associated with ASM instances.
Injeksi proxy sidecar otomatis diaktifkan untuk namespace target. Untuk informasi selengkapnya, lihat Configure sidecar proxy injection policies.
Gerbang masuk yang dibuat di instans ASM, dengan alamat IP-nya dicatat. Untuk informasi selengkapnya, lihat Create an ingress gateway dan Langkah Sub-1 dari Langkah 3 di Use Istio resources to route traffic to different versions of a service.
IdP yang telah dikonfigurasi. Untuk informasi selengkapnya, lihat Step 1 dan Step 2 dalam Integrate Alibaba Cloud IDaaS with ASM to implement single sign-on.
Setelah IdP dikonfigurasi, kumpulkan nilai-nilai berikut untuk konfigurasi OIDC:
redirect URI: http://<ingress-gateway-ip>/oauth2/callback
issuer URL: https://eiam-api-cn-hangzhou.aliyuncs.com/v2/<idaas-instance-id>/app_<app-id>/oidc
client ID: <your-client-id>
client secret: <your-client-secret>Redirect URI harus persis sesuai dengan URL callback yang didaftarkan di IdP Anda. Ketidaksesuaian akan menyebabkan kegagalan autentikasi karena IdP menolak permintaan callback tersebut.
Prosedur berikut menggunakan Alibaba Cloud Identity as a Service (IDaaS) sebagai IdP. Jika Anda menggunakan IdP OIDC yang dikelola sendiri seperti Keycloak, lihat Integrate Keycloak with ASM to implement single sign-on.
Konfigurasikan pengaturan OIDC
Login ke Konsol ASM. Di panel navigasi sebelah kiri, pilih Service Mesh > Mesh Management.
Di halaman Mesh Management, klik nama instans ASM target. Di panel navigasi sebelah kiri, pilih ASM Gateways > Ingress Gateway.
Di halaman Ingress Gateway, klik gerbang masuk target. Di panel navigasi sebelah kiri, pilih Gateway Security > OIDC Single Sign-On.
Pada langkah OIDC Config, aktifkan Enable gateway OIDC Single Sign-On dan konfigurasikan parameter berikut.
CatatanUntuk menemukan endpoint yang tersedia dan cakupan yang didukung, kueri endpoint konfigurasi well-known IdP Anda:
curl <your-issuer-url>/.well-known/openid-configuration | jqParameter Deskripsi Redirect address Protokol dan alamat untuk callback OIDC. Dalam contoh ini, pilih Use ingressgateway IP address dan http. Callback Address URL lengkap tempat IdP mengalihkan pengguna setelah autentikasi. OIDC Issuer URL URL yang digunakan untuk mengidentifikasi dan mengotentikasi penerbit OIDC. Gerbang menurunkan endpoint discovery dari URL ini untuk mengambil kunci publik dan endpoint IdP. Client ID Client ID yang diberikan oleh IdP saat Anda mendaftarkan aplikasi. Client Secret Client secret yang diberikan oleh IdP. Cookie Secret String seed untuk cookie sesi aman, yang dapat dikodekan dalam Base64. Cookie Expire Berapa lama cookie sesi tetap valid. Atur ke 0agar cookie tidak kedaluwarsa.Cookie refresh interval Seberapa sering cookie sesi direfresh. Atur ke 0untuk menonaktifkan refresh otomatis.Scopes Cakupan OIDC yang diminta dari IdP (misalnya, openid,email,profile). IdP harus mendukung cakupan yang ditentukan.
Klik Next.
Konfigurasikan aturan pencocokan path
Pada langkah Matching Rule, konfigurasikan path permintaan mana yang memerlukan autentikasi OIDC. Dalam contoh ini, pilih Auth If Matched dan atur path ke
/productpage. Permintaan ke/productpagedialihkan ke IdP untuk autentikasi, sedangkan permintaan ke path lain dilewatkan tanpa pemeriksaan OIDC.Parameter Deskripsi Match Mode Mengontrol bagaimana aturan path diterapkan. Nilai yang valid: Auth If Matched — permintaan ke path yang ditentukan memerlukan autentikasi. Bypass Auth If Matched — permintaan ke path yang ditentukan melewati autentikasi. Add Match Rule Aktifkan sakelar Path dan tentukan path-nya. Dalam contoh ini, atur path ke /productpage.Klik Submit. Langkah Complete mengonfirmasi bahwa SSO berbasis OIDC telah dikonfigurasi. Halaman ini menampilkan resource keamanan Istio native yang dihasilkan oleh wizard. Klik YAML untuk meninjau konfigurasi resource.
Verifikasi konfigurasi
Buka browser dan kunjungi
http://<ingress-gateway-ip>/productpage. Ganti<ingress-gateway-ip>dengan alamat IP gerbang masuk Anda. Jika konfigurasi benar, browser akan dialihkan ke halaman login IdP. Setelah Anda melakukan autentikasi, browser akan dialihkan kembali dan menampilkan halaman aplikasi.
Siapkan logout
Logout SSO yang lengkap memerlukan dua tindakan: menghapus cookie sesi gerbang dan mengakhiri sesi IdP.
| Action | How to trigger |
|---|---|
| Clear the gateway session cookie | Kunjungi http://<ingress-gateway-ip>/oauth2/sign_out. Gerbang secara otomatis menghapus cookie sesi. |
| End the IdP session | Kunjungi URI logout yang disediakan oleh IdP Anda. |
Single-step logout (ASM v1.18.147 dan versi lebih baru)
ASM v1.18.147 dan versi lebih baru memungkinkan Anda menggabungkan kedua tindakan tersebut dengan mengonfigurasi endpoint logout IdP pada halaman konfigurasi OIDC:
Masukkan URL endpoint logout IdP pada halaman konfigurasi OIDC.
Tambahkan aturan pencocokan yang mengatur path
/oauth2/sign_outke Bypass Auth If Matched sehingga path sign-out tidak memerlukan autentikasi.
Setelah pengaturan ini, mengunjungi /oauth2/sign_out akan menghapus cookie sesi dan mengalihkan ke endpoint logout IdP dalam satu langkah. Untuk informasi selengkapnya tentang single logout IDaaS, lihat SLO.
FAQ
Apakah aplikasi saya perlu menangani autentikasi OIDC?
Tidak. Gerbang masuk menangani seluruh alur OIDC. Aplikasi Anda menerima setiap permintaan dengan header Authorization yang berisi JWT yang dikeluarkan oleh IdP. Gerbang telah memvalidasi token ini, sehingga aplikasi Anda dapat langsung menguraikannya untuk mengekstrak informasi pengguna seperti sub, email, atau klaim kustom—tidak diperlukan panggilan tambahan ke IdP.
Apa fungsi cookie sesi?
Gerbang menggunakan cookie sesi untuk melacak status autentikasi setiap pengguna. Aplikasi Anda dapat mengabaikan cookie ini dengan aman. Untuk mengakses identitas pengguna, baca JWT dari header Authorization saja.
Bagaimana cara mendapatkan atribut pengguna tambahan dari IdP?
Tidak diperlukan konfigurasi ASM tambahan. Atribut tambahan bergantung pada implementasi IdP Anda. Untuk Alibaba Cloud IDaaS, lihat Rules for OIDC id_token Extended Fields.
Referensi
General Config, Configure SSO, OIDC SSO Configuration, dan Rules for OIDC id_token Extended Fields dalam dokumentasi IDaaS.
SLO — Logout global untuk Alibaba Cloud IDaaS.