Langkau ke kandungan utama

SSO Portal Okta

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

Prasyarat

Daftarkan aplikasi anda dalam Okta

Cipta integrasi aplikasi

  1. Log masuk ke Okta Admin Console → Navigasi ke 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: contohnya Glasswall Halo Portal
    • Grant type: Choose below 3 options
      • Authorization Code
      • Refresh Token
      • Implicit (hybrid)
    • URI ubah hala log masuk: contohnya https://<your-halo-domain>/authentication/login-callback
    • URI ubah hala log keluar: contohnya https://<your-halo-domain>/authentication/logout-callback
    • Akses terkawal: Pilih Allow everyone in your organization to access. Atau pilih hanya kumpulan tertentu jika anda mahu mengehadkan akses kepada beberapa orang.
    • Nyahpilih 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 skop 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. Daripada authorization server yang dikonfigurasikan dalam 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"

Tambah access policy untuk portal

  1. Navigasi ke tab Access Policies pelayan kebenaran (Security -> API -> pilih pelayan kebenaran anda -> Access Policies).
  2. Add a new access policy:
    • Nama: cth. Portal SSO Access
    • Penerangan: cth. Access policy for Halo Portal SSO users
    • Assign to: klien Portal SPA yang dicipta di atas (cari mengikut nama Glasswall Halo Portal)
  3. Add a rule:
    • Nama: cth. Allow Portal Users
    • Grant type: Authorization Code
    • Pengguna ialah ahli: Everyone (atau hadkan kepada kumpulan tertentu, cth., Halo-Admin, jika anda mahu mengehadkan akses Portal)
    • Biarkan tetapan lain sebagai lalai atau laraskan mengikut keperluan.

Screenshot: Access policy for Portal SSO Screenshot: Add rule

Kemas kini perkhidmatan 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

Kemas kini perkhidmatan 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

Terdapat 2 peranan dalam Halo - User dan Admin. Peranan dikonfigurasikan melalui keahlian kumpulan pada pelayan kebenaran Okta (lihat Takrifkan Peranan).

  • Untuk memberikan peranan pengguna, tambahkan pengguna ke kumpulan Halo_User.
  • Untuk memberikan peranan pentadbir, tambahkan pengguna ke kumpulan Halo_Admin.