全部产品
Search
文档中心

Alibaba Cloud Service Mesh:Integrasi Alibaba Cloud IDaaS dengan ASM untuk mengimplementasikan single sign-on

更新时间:Jun 28, 2025

Topik ini menjelaskan cara mengimplementasikan single sign-on (SSO) ke aplikasi dalam Service Mesh (ASM).

Prasyarat

Informasi latar belakang

Dalam banyak kasus, Anda harus masuk untuk mengakses aplikasi karena mekanisme kontrol akses. Sebuah sistem mungkin memiliki banyak aplikasi. SSO memungkinkan Anda mengakses semua aplikasi tersebut dengan satu set kredensial log masuk. Anda dapat mengirimkan kredensial sekali dan mendapatkan akses ke semua aplikasi dalam instance ASM menggunakan layanan otorisasi kustom tanpa modifikasi kode apa pun.

Fitur ini membantu mengurangi biaya transformasi aplikasi serta operasi dan pemeliharaan. Dalam contoh ini, sebuah instance Alibaba Cloud IDaaS digunakan sebagai penyedia identitas (IdP) untuk mengimplementasikan SSO ke semua aplikasi dalam instance ASM. Anda tidak perlu mengimplementasikan mekanisme autentikasi untuk aplikasi dalam mesh. Sebagai gantinya, Anda dapat menyerahkan autentikasi ke IdP dengan mendaftarkan instance Alibaba Cloud IDaaS atau IdP OpenID Connect (OIDC) apa pun dalam layanan otorisasi kustom di ASM. Setelah pengguna diautentikasi oleh IdP, IdP mengirimkan detail autentikasi dan permintaan pengguna ke aplikasi sehingga pengguna tepercaya dapat mengakses aplikasi tersebut.

Konsep

Konsep

Deskripsi

IdP

IdP adalah sistem yang menyimpan dan memverifikasi identitas digital. Misalnya, Anda dapat menggunakan akun dan kata sandi untuk memverifikasi identitas Anda. Jika Anda menggunakan akun dan kata sandi Alipay untuk masuk ke Youku, Alipay adalah IdP.

OIDC

OIDC adalah protokol autentikasi identitas standar berbasis protokol OAuth 2.0. Untuk informasi lebih lanjut, lihat situs resmi OpenID.

Ruang Lingkup

Ruang lingkup adalah konsep dalam OIDC. Setiap IdP menyimpan berbagai jenis informasi pengguna, seperti alamat email. Setiap jenis sesuai dengan ruang lingkup. Saat Anda menggunakan IdP untuk memverifikasi identitas Anda untuk mengakses aplikasi, aplikasi hanya diizinkan untuk mendapatkan jenis informasi tertentu saja.

Langkah 1: Buat instance IDaaS dan akun uji

  1. Masuk ke konsol IDaaS dan buat instance IDaaS.

    Instance IDaaS dianggap sebagai sistem akun independen.

  2. Di tab IDaaS halaman EIAM, klik ID dari instance IDaaS.

  3. Di panel navigasi sisi kiri, pilih Accounts > Accounts and Organizations.

  4. Di tab Accounts pada halaman Accounts, klik Create User.

  5. Di panel Create User, konfigurasikan parameter dan klik Confirm.

Langkah 2: Tambahkan dan konfigurasikan aplikasi OIDC

Anda dapat menambahkan aplikasi ke instance IDaaS sebagai antarmuka untuk mengekspos instance IDaaS guna mengimplementasikan SSO. IDaaS mendukung berbagai jenis aplikasi. Dalam contoh ini, aplikasi OIDC digunakan.

  1. Di panel navigasi sisi kiri pada halaman detail instance IDaaS, klik Applications.

  2. Di halaman Applications, klik Add Application.

  3. Di halaman Add Application, klik tab Standard Protocols. Di kartu OIDC, klik Add Application.

  4. Di kotak dialog Add Application - OIDC yang muncul, masukkan nama aplikasi dan klik Add.

  5. Di halaman detail aplikasi OIDC, klik Sign-in lalu klik tab SSO.

  6. Di tab SSO, atur Redirect URIs. Klik Show Advanced Settings. Di bagian scopes, pilih jenis informasi yang dapat diperoleh aplikasi. Lalu, klik Save.

    Catatan

    Dalam contoh ini, atur parameter Redirect URIs menjadi http://${Alamat IP instance CLB yang terikat ke gateway ingress}/oauth2/callback. Ganti placeholder ${} dengan alamat IP sebenarnya dari instance SLB yang terikat ke gateway ingress.

  7. Di halaman detail aplikasi OIDC, klik Masuk lalu klik tab Berikan Izin Aplikasi. Di tab Berikan Izin Aplikasi, klik Authorize.

  8. Di kotak dialog Authorize, otorisasi akun yang Anda buat di Langkah 1 dan klik Confirm.

Aplikasi OIDC telah dikonfigurasi. Catat nilai-nilai dari Penerbit, client_id, dan client_secret dari aplikasi. Nilai-nilai ini akan digunakan saat Anda mengonfigurasi SSO di instance ASM.

  • Penerbit: Untuk mendapatkan nilai Penerbit, navigasikan ke tab SSO di halaman detail aplikasi OIDC, dan lihat bagian Pengaturan Aplikasi. Issuer

  • client_id dan client_secret: Untuk mendapatkan nilai client_id dan client_secret, buka tab General di halaman detail aplikasi OIDC. id

Langkah 3: Terapkan aplikasi uji dan ekspos menggunakan gateway ingress

Dalam contoh ini, aplikasi httpbin diterapkan. Aplikasi ini memungkinkan Anda melihat konten permintaan yang berisi informasi yang diperoleh dari IdP selama autentikasi log masuk.

  1. Buat file YAML yang berisi konten berikut untuk menerapkan aplikasi httpbin di namespace default kluster ACK:

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: httpbin
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: httpbin
      labels:
        app: httpbin
        service: httpbin
    spec:
      ports:
      - name: http
        port: 8000
        targetPort: 80
      selector:
        app: httpbin
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: httpbin
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: httpbin
          version: v1
      template:
        metadata:
          labels:
            app: httpbin
            version: v1
        spec:
          serviceAccountName: httpbin
          containers:
          - image: docker.io/kennethreitz/httpbin
            imagePullPolicy: IfNotPresent
            name: httpbin
            ports:
            - containerPort: 80
  2. Buat file YAML yang berisi konten berikut untuk mengonfigurasi gateway Istio untuk instance ASM: Untuk informasi lebih lanjut, lihat Kelola Gateway Istio.

    apiVersion: networking.istio.io/v1beta1
    kind: Gateway
    metadata:
      name: ingressgateway
      namespace: istio-system
    spec:
      selector:
        app: istio-ingressgateway
      servers:
        - hosts:
            - '*'
          port:
            name: http
            number: 80
            protocol: HTTP
  3. Buat file YAML yang berisi konten berikut untuk membuat layanan virtual untuk instance ASM. Untuk informasi lebih lanjut, lihat Kelola Layanan Virtual.

    Layanan virtual menentukan rute default ke aplikasi httpbin.

    apiVersion: networking.istio.io/v1beta1
    kind: VirtualService
    metadata:
      name: ingressgateway-vs
      namespace: istio-system
    spec:
      gateways:
        - ingressgateway
      hosts:
        - '*'
      http:
        - name: default
          route:
            - destination:
                host: httpbin.default.svc.cluster.local
                port:
                  number: 8000
  4. Jalankan perintah curl -I http://${Alamat IP gateway ingress:80} untuk mengakses aplikasi httpbin.

    Contoh keluaran:httpbin

Langkah 4: Daftarkan layanan otorisasi kustom dan konfigurasikan SSO OIDC di instance ASM

  1. Masuk ke konsol ASM. Di panel navigasi sisi kiri, pilih Service Mesh > Mesh Management.

  2. Di halaman Mesh Management, klik nama instance ASM. Di panel navigasi sisi kiri, pilih Mesh Security Center > Custom Authorization Service. Di halaman yang muncul, klik Define Custom Authorization Service.

  3. Di halaman Register Custom Authorization Service, klik tab OIDC Authz and Authn Service, konfigurasikan parameter, lalu klik Create.

    Konfigurasikan parameter berdasarkan informasi aplikasi OIDC yang Anda buat di Langkah 2. Anda dapat mengarahkan percobaan log masuk ke alamat IP gateway ingress. Untuk informasi lebih lanjut tentang rahasia cookie, lihat Membuat Rahasia Cookie.

  4. Gunakan file kubeconfig untuk terhubung ke kluster ACK di bidang data, dan jalankan perintah berikut untuk mendapatkan nama domain layanan otorisasi OIDC:

    kubectl get svc -n istio-system|grep oauth2proxy|awk -F' ' '{print $1}'
  5. Buat layanan virtual untuk menerima permintaan autentikasi dari gateway ingress. Contoh kode berikut menunjukkan cara membuat layanan virtual.

    apiVersion: networking.istio.io/v1beta1
    kind: VirtualService
    metadata:
      name: oauth2-vs
      namespace: istio-system
    spec:
      gateways:
        - ingressgateway
      hosts:
        - '*'
      http:
        - match:
            - uri:
                prefix: /oauth2
          name: oauth2
          route:
            - destination:
                host: # Nama domain layanan otorisasi OIDC, yang Anda peroleh di langkah sebelumnya. 
                port:
                  number: 4180
    Penting

    Jangan atur awalan pencocokan ke /oauth2 dalam aturan routing yang didefinisikan oleh layanan virtual lainnya. Ini mencegah konflik antara layanan virtual.

Langkah 5: Buat kebijakan otorisasi

  1. Di halaman detail instance ASM, pilih Mesh Security Center > AuthorizationPolicy di panel navigasi sisi kiri. Di halaman yang muncul, klik Create from YAML.

  2. Di halaman Create, pilih namespace istio-system, pilih template, tentukan kode YAML berikut di editor kode, lalu klik Create.

    apiVersion: security.istio.io/v1beta1
    kind: AuthorizationPolicy
    metadata:
      name: oidc
      namespace: istio-system
    spec:
      action: CUSTOM
      provider:
        name: httpextauth-oidc # Nama layanan otorisasi yang Anda daftarkan di Langkah 4. 
      rules:
        - {}
      selector:
        matchLabels:
          istio: ingressgateway
    Catatan

    Kebijakan otorisasi ini berlaku untuk semua permintaan yang dikirim ke gateway ingress.

Langkah 6: Verifikasi SSO

  1. Kunjungi http://${Alamat IP gateway ingress:80} di browser.

    Jika halaman berikut muncul, itu menunjukkan bahwa SSO berfungsi. 1

  2. Klik Sign in with OpenID Connect.

    Hasil yang diharapkan:Alibaba Cloud IDaaS

  3. Di halaman log masuk Alibaba Cloud IDaaS, masukkan akun uji dan kata sandi yang Anda buat di Langkah 1, dan klik Log On.

    Hasil yang diharapkan:httpbin

  4. Klik Request inspection lalu pilih /headers > Try it out > Execute.

    Hasil yang diharapkan:12

  5. Parsing JSON Web Token (JWT) di JWT Debugger. JWT digunakan untuk mengautentikasi permintaan dan ditampilkan setelah Bearer dalam respons yang dikembalikan di langkah sebelumnya.

    Untuk informasi lebih lanjut tentang JWT Debugger, lihat situs resmi JWT.

    Hasil yang diharapkan:JWTInformasi dalam gambar di atas muncul setelah JWT diparsing, termasuk informasi pengguna yang disimpan di IDaaS. JWT diverifikasi oleh ASM.