Lewati ke konten utama

Autentikasi

Prasyarat

  • Nama domain harus dikonfigurasi agar layanan Portal dapat menggunakan autentikasi SSO. Identifikasi domain yang akan digunakan untuk Portal.
  • Identifikasi tenant_id untuk tenant Azure.
  • Pastikan Azure CLI terinstal di mesin lokal dan masuk menggunakan az login.
  • Run the provided shell script to create three app registrations and corresponding enterprise applications. Record the script output, as it is required for subsequent steps.
    • cdrplatform-api-access
    • cdrplatform-portal-access
    • cdrplatform-portal-client
bash create-azure-app-registrations.sh cleanroom.glasswall.com
  • Aplikasi enterprise ar-Halo-portal-client perlu diberikan admin consent.

Instalasi autentikasi Portal

Glasswall Halo Portal mendukung autentikasi SSO menggunakan Azure Entra ID. Ikuti langkah-langkah di bawah ini untuk mengonfigurasi integrasi.

  1. Lakukan SSH ke virtual machine untuk menjalankan perintah di bawah ini.

  2. Helm chart cdrplatform-portal dan cdrplatform-portal-access berada di direktori /home/glasswall.

k get deploy portal  -o json | jq -r '.spec.template.spec.containers[0].image' | cut -d":" -f2
  1. Deploy portal dengan konfigurasi Azure AD:
tenant_id=""
portal_domain=""
portal_client_id=""
portal_access_uri=""
image_tag=$(kubectl get deploy portal -o json | jq -r '.spec.template.spec.containers[0].image' | cut -d":" -f2)
enabled_pages="SystemSettings,PolicySettings"
# if XML validation entitlement is enabled
enabled_pages="SystemSettings,PolicySettings,ValidationSettings"
# if ICAP server is enabled
enabled_pages="SystemSettings,PolicySettings,IcapSettings,IcapRequests,IcapReporting"
# if Storage monitoring is enabled
enabled_pages="SystemSettings,PolicySettings,IcapSettings,IcapRequests,IcapReporting,SharePointMonitoring,OneDriveMonitoring"
helm upgrade --install cdrplatform-portal cdrplatform-portal \
--set image.tag="${image_tag:?}" \
--set image.pullPolicy=IfNotPresent \
--set ingress.tls.enabled=true \
--set ingress.tls.domain=${portal_domain:?} \
--set ingress.tls.secretName=tls-secret \
--set cloud_provider=local \
--set resources.requests.cpu=500m \
--set resources.requests.memory=500Mi \
--set resources.limits.cpu=500m \
--set resources.limits.memory=500Mi \
--set securityContext.seccompProfile.type=RuntimeDefault \
--set configuration.BackendScope="${portal_access_uri}/PortalUserScope" \
--set configuration.BackendUrl="https://${portal_domain}" \
--set configuration.EnabledPages="${enabled_pages}" \
--set configuration.OIDC.ProviderOptions.Authority="https://login.microsoftonline.com/${tenant_id:?}/v2.0" \
--set configuration.OIDC.ProviderOptions.RedirectUri="https://${portal_domain}/authentication/login-callback" \
--set configuration.OIDC.ProviderOptions.ClientId="${portal_client_id}" \
--set configuration.OIDC.ProviderOptions.PostLogoutRedirectUri="https://${portal_domain}/authentication/logout-callback" \
--atomic
  1. Deploy portal access dengan konfigurasi Azure Entra ID:
tenant_id=""
portal_domain=""
portal_access_uri=""
image_tag=$(kubectl get deploy portal-access -o json | jq -r '.spec.template.spec.containers[0].image' | cut -d":" -f2)
helm upgrade --install cdrplatform-portal-access cdrplatform-portal-access \
--set image.tag="${image_tag:?}" \
--set image.pullPolicy=IfNotPresent \
--set ingress.tls.enabled=true \
--set ingress.tls.domain=${portal_domain:?} \
--set ingress.tls.secretName=tls-secret \
--set cloud_provider=local \
--set resources.requests.cpu=1 \
--set resources.requests.memory=2Gi \
--set resources.limits.cpu=1 \
--set resources.limits.memory=2Gi \
--set securityContext.seccompProfile.type=RuntimeDefault \
--set configuration.AuthenticationScheme=Bearer \
--set configuration.Authentication__Schemes__Bearer__ValidAudiences__0="${portal_access_uri}" \
--set configuration.Authentication__Schemes__Bearer__ValidIssuer=https://sts.windows.net/${tenant_id:?}/ \
--set configuration.Authentication__Schemes__Bearer__Authority=https://login.microsoftonline.com/${tenant_id:?}/v2.0/ \
--atomic
  1. Buka domain Portal di browser dan pilih Login with SSO di sudut kiri bawah.

  2. Ikuti proses login melalui Azure Entra ID dan berikan izin yang diperlukan kepada aplikasi atas nama organisasi untuk pertama kalinya.

Autentikasi API

Autentikasi API dapat dikonfigurasi dengan 2 cara -

  • Autentikasi dasar
  • Autentikasi bearer

Instalasi autentikasi dasar

  1. Lakukan SSH ke virtual machine untuk menjalankan perintah di bawah ini.
  2. Helm chart cdrplatform-api-access berada di direktori /home/glasswall.
  3. Konfigurasikan kredensial di cluster dengan menetapkan username dan password menggunakan perintah di bawah ini. Beberapa password dapat ditentukan dengan memisahkannya menggunakan koma.
bash add_secrets.sh organisation0-id <username>
bash add_secrets.sh organisation0-tokens <password>
  1. Deploy api-access dengan autentikasi dasar:
image_tag="$(k get deploy api-access  -o json | jq -r '.spec.template.spec.containers[0].image' | cut -d":" -f2)"
enable_tls="true" or "false"
api_domain="" # ignore if enable_tls is false
helm upgrade --install cdrplatform-api-access cdrplatform-api-access \
--set image.tag="${image_tag:?}" \
--set image.pullPolicy=IfNotPresent \
--set ingress.tls.enabled="${enable_tls:?}" \
--set ingress.tls.domain="${api_domain}" \
--set configuration.CLIENTS__Policy__BaseAddress="http://policy-api:8080" \
--set configuration.CLIENTS__License__BaseAddress="http://license-management.license-management.svc.cluster.local:8080" \
--set configuration.CLIENTS__AsyncApi__BaseAddress="http://async-api:8080" \
--set configuration.AuthenticationScheme="Basic" \
--set cloud_provider=local \
--set resources.requests.cpu=1 \
--set resources.requests.memory=3Gi \
--set resources.limits.cpu=1 \
--set resources.limits.memory=3Gi \
--set securityContext.seccompProfile.type=RuntimeDefault \
--atomic

Instalasi autentikasi Bearer

  1. Identifikasi tenant_id untuk tenant Azure.
  2. Lakukan SSH ke virtual machine untuk menjalankan perintah di bawah ini.
  3. Pastikan Helm chart cdrplatform-api-access tersedia di direktori /home/glasswall.
  4. Deploy layanan API Access dengan konfigurasi Azure Entra ID:
tenant_id=""
api_valid_audience="api://cdrplatform-api-access"
image_tag=$(kubectl get deploy api-access -o json | jq -r '.spec.template.spec.containers[0].image' | cut -d":" -f2)
enable_tls="true" or "false"
api_domain="" # ignore if enable_tls is false
helm upgrade --install cdrplatform-api-access cdrplatform-api-access \
--set image.tag="${image_tag}" \
--set image.pullPolicy=IfNotPresent \
--set ingress.tls.enabled="${enable_tls}" \
--set ingress.tls.domain="${api_domain}" \
--set configuration.CLIENTS__Policy__BaseAddress="http://policy-api:8080" \
--set configuration.CLIENTS__License__BaseAddress="http://license-management.license-management.svc.cluster.local:8080" \
--set configuration.CLIENTS__AsyncApi__BaseAddress="http://async-api:8080" \
--set configuration.AuthenticationScheme="Bearer" \
--set configuration.Authentication__Schemes__Bearer__ValidAudiences__0="${api_valid_audience}" \
--set configuration.Authentication__Schemes__Bearer__ValidIssuer=https://sts.windows.net/${tenant_id:?}/ \
--set configuration.Authentication__Schemes__Bearer__Authority=https://login.microsoftonline.com/${tenant_id:?}/v2.0/ \
--set cloud_provider=local \
--set resources.requests.cpu=1 \
--set resources.requests.memory=3Gi \
--set resources.limits.cpu=1 \
--set resources.limits.memory=3Gi \
--set securityContext.seccompProfile.type=RuntimeDefault \
--atomic