Lewati ke konten utama

SSO Portal Okta

Gunakan Okta sebagai Identity Provider untuk login ke portal Halo menggunakan SSO.

Prasyarat

Daftarkan aplikasi Anda di Okta

Buat integrasi aplikasi

  1. Masuk ke Okta Admin Console → Buka Applications -> Applications.
  2. Klik Create App Integration → Pilih OIDC - OpenID Connect.
  3. Klik Single-Page Application.

image.png

Konfigurasikan integrasi aplikasi

  1. Configure the following settings:
    • Nama integrasi aplikasi: mis. Glasswall Halo Portal
    • Grant type: Choose below 3 options
      • Authorization Code
      • Refresh Token
      • Implicit (hybrid)
    • URI pengalihan masuk: mis. https://<your-halo-domain>/authentication/login-callback
    • URI pengalihan keluar: mis. https://<your-halo-domain>/authentication/logout-callback
    • Akses terkontrol: Pilih Allow everyone in your organization to access. Atau pilih hanya grup tertentu jika Anda ingin membatasi akses hanya untuk beberapa orang.
    • Batalkan pilihan Enable immediate access with Federation Broker Mode.

Screenshot: Halo Portal Client Screenshot: Halo Portal Client

Simpan aplikasi dan catat client ID

  1. Simpan Application dan catat Client ID.

    export PORTAL_CLIENT_ID=""

Screenshot: Portal client id

Berikan cakupan API

  1. Navigate to Okta API Scopes tab in the application and grant below scopes.
    • okta.myAccount.email.read
    • okta.myAccount.profile.read
    • okta.users.read
    • okta.users.read.self

Screenshots: Portal Okta API Scopes

Catat issuer URI dan audience

  1. Dari authorization server yang dikonfigurasi pada langkah prasyarat, catat Issuer Metadata URI dan VALID_AUDIENCE:

    export OKTA_ISSUER_URI="https://<your-okta-domain>/oauth2/<authorization-server-id>"
    export OKTA_ORIGIN="https://<your-okta-domain>"
    export VALID_AUDIENCE="api://halo"

Tambahkan policy akses untuk portal

  1. Buka tab Access Policies pada authorization server (Security -> API -> pilih authorization server Anda -> Access Policies).
  2. Add a new access policy:
    • Nama: mis. Portal SSO Access
    • Deskripsi: mis. Access policy for Halo Portal SSO users
    • Tetapkan ke: klien Portal SPA yang dibuat di atas (cari berdasarkan nama Glasswall Halo Portal)
  3. Add a rule:
    • Nama: mis. Allow Portal Users
    • Jenis grant: Authorization Code
    • Pengguna adalah anggota dari: Everyone (atau batasi ke grup tertentu, misalnya, Halo-Admin, jika Anda ingin membatasi akses Portal)
    • Biarkan pengaturan lainnya tetap default atau sesuaikan sesuai kebutuhan.

Screenshot: Access policy for Portal SSO Screenshot: Add rule

Perbarui layanan Portal

export HALO_DOMAIN=<your-halo-domain>
helm upgrade --install cdrplatform-portal cdrplatform-portal -n cdrplatform --reuse-values \
--set configuration.AutoAdmin=false \
--set configuration.BackendScope="email openid profile" \
--set configuration.BackendUrl="https://${HALO_DOMAIN:?}" \
--set configuration.EnabledPages="SystemSettings\,PolicySettings\,IcapSettings\,IcapRequests\,IcapReporting" \
--set configuration.OIDC.ProviderOptions.Authority="${OKTA_ISSUER_URI:?}" \
--set configuration.OIDC.ProviderOptions.ClientId="${PORTAL_CLIENT_ID:?}" \
--set configuration.OIDC.ProviderOptions.PostLogoutRedirectUri="https://${HALO_DOMAIN:?}/authentication/logout-callback" \
--set configuration.OIDC.ProviderOptions.RedirectUri="https://${HALO_DOMAIN:?}/authentication/login-callback" \
--set appenvironment.HTTP_CSP_CONNECT_SRC="'self' ${OKTA_ORIGIN:?}" \
--set appenvironment.HTTP_CSP_FRAME_SRC="'self' ${OKTA_ORIGIN:?}" \
--set appenvironment.HTTP_CSP_FRAME_ANCESTORS="'self' ${OKTA_ORIGIN:?}" \
--set ingress.enabled=true \
--set ingress.tls.domain="${HALO_DOMAIN:?}" \
--set ingress.tls.enabled=true \
--atomic

Perbarui layanan Portal-Access

helm upgrade --install cdrplatform-portal-access -n cdrplatform cdrplatform-portal-access --reuse-values \
--set configuration.Authentication__Schemes__Bearer__Authority="${OKTA_ISSUER_URI:?}" \
--set configuration.Authentication__Schemes__Bearer__ValidAudiences__0="${VALID_AUDIENCE:?}" \
--set configuration.Authentication__Schemes__Bearer__ValidIssuer="${OKTA_ISSUER_URI:?}" \
--set configuration.AuthenticationScheme="Bearer" \
--set configuration.CORSDOMAIN="'*'" \
--set ingress.enabled=true \
--set ingress.tls.domain="${HALO_DOMAIN:?}" \
--set ingress.tls.enabled=true \
--atomic

Berikan akses kepada pengguna

Ada 2 peran di Halo - User dan Admin. Peran dikonfigurasi melalui keanggotaan grup pada server otorisasi Okta (lihat Define Roles).

  • Untuk memberikan peran pengguna, tambahkan pengguna ke grup Halo_User.
  • Untuk memberikan peran admin, tambahkan pengguna ke grup Halo_Admin.