Chuyển đến nội dung chính

SSO Cổng thông tin Okta

Sử dụng Okta làm Identity Provider để đăng nhập vào cổng Halo bằng SSO.

Điều kiện tiên quyết

Đăng ký ứng dụng của bạn trong Okta

Tạo tích hợp ứng dụng

  1. Đăng nhập vào Okta Admin Console → Điều hướng đến Applications -> Applications.
  2. Nhấp vào Create App Integration → Chọn OIDC - OpenID Connect.
  3. Nhấp vào Single-Page Application.

image.png

Cấu hình tích hợp ứng dụng

  1. Configure the following settings:
    • Tên tích hợp ứng dụng: ví dụ Glasswall Halo Portal
    • Grant type: Choose below 3 options
      • Authorization Code
      • Refresh Token
      • Implicit (hybrid)
    • URI chuyển hướng đăng nhập: ví dụ https://<your-halo-domain>/authentication/login-callback
    • URI chuyển hướng đăng xuất: ví dụ https://<your-halo-domain>/authentication/logout-callback
    • Quyền truy cập được kiểm soát: Chọn Allow everyone in your organization to access. Hoặc chỉ chọn các nhóm cụ thể nếu bạn muốn giới hạn quyền truy cập cho một vài người.
    • Bỏ chọn Enable immediate access with Federation Broker Mode.

Screenshot: Halo Portal Client Screenshot: Halo Portal Client

Lưu ứng dụng và ghi lại client ID

  1. Lưu Application và ghi lại Client ID.

    export PORTAL_CLIENT_ID=""

Screenshot: Portal client id

Cấp quyền các API scope

  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

Ghi lại issuer URI và audience

  1. Từ authorization server được cấu hình trong bước điều kiện tiên quyết, hãy ghi lại Issuer Metadata URIVALID_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"

Thêm policy truy cập cho portal

  1. Đi tới tab Access Policies của authorization server (Security -> API -> chọn authorization server của bạn -> Access Policies).
  2. Add a new access policy:
    • Tên: ví dụ: Portal SSO Access
    • Mô tả: ví dụ: Access policy for Halo Portal SSO users
    • Gán cho: client Portal SPA đã tạo ở trên (tìm theo tên Glasswall Halo Portal)
  3. Add a rule:
    • Tên: ví dụ: Allow Portal Users
    • Loại cấp quyền: Authorization Code
    • Người dùng là thành viên của: Everyone (hoặc giới hạn vào một nhóm cụ thể, ví dụ: Halo-Admin, nếu bạn muốn giới hạn quyền truy cập Portal)
    • Giữ các cài đặt khác ở mặc định hoặc điều chỉnh khi cần.

Screenshot: Access policy for Portal SSO Screenshot: Add rule

Cập nhật dịch vụ 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

Cập nhật dịch vụ 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

Cấp quyền truy cập cho người dùng

Có 2 vai trò trong Halo - UserAdmin. Các vai trò được cấu hình thông qua tư cách thành viên nhóm trên máy chủ ủy quyền Okta (xem Định nghĩa vai trò).

  • Để cấp vai trò người dùng, hãy thêm người dùng vào nhóm Halo_User.
  • Để cấp vai trò quản trị viên, hãy thêm người dùng vào nhóm Halo_Admin.