メイン コンテンツにスキップ

Okta Portal SSO

SSO を使用して Halo portal にログインするための ID プロバイダーとして Okta を使用します。

前提条件

Okta でアプリを登録する

アプリ統合を作成する

  1. Okta Admin Console にログインし、Applications -> Applications に移動します。
  2. Create App Integration をクリックし、OIDC - OpenID Connect を選択します。
  3. Single-Page Application をクリックします。

image.png

アプリ統合を設定する

  1. Configure the following settings:
    • アプリ統合名: 例 Glasswall Halo Portal
    • Grant type: Choose below 3 options
      • Authorization Code
      • Refresh Token
      • Implicit(ハイブリッド)
    • サインイン リダイレクト URI: 例 https://<your-halo-domain>/authentication/login-callback
    • サインアウト リダイレクト URI: 例 https://<your-halo-domain>/authentication/logout-callback
    • Controlled access: Allow everyone in your organization to access を選択します。アクセスを少人数に制限したい場合は、特定のグループのみを選択することもできます。
    • Enable immediate access with Federation Broker Mode の選択を解除します。

Screenshot: Halo Portal Client Screenshot: Halo Portal Client

アプリケーションを保存して client ID を控える

  1. Application を保存し、Client ID を控えます。

    export PORTAL_CLIENT_ID=""

Screenshot: Portal client id

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

issuer URI と audience をメモする

  1. 前提条件の手順で設定した authorization server から、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"

Portal の access policy を追加する

  1. 認可サーバーの Access Policies タブに移動します(Security -> API -> 認可サーバーを選択 -> Access Policies)。
  2. Add a new access policy:
    • 名前: 例 Portal SSO Access
    • 説明: 例 Access policy for Halo Portal SSO users
    • 割り当て先: 上で作成した Portal SPA client(名前 Glasswall Halo Portal で検索)
  3. Add a rule:
    • 名前: 例 Allow Portal Users
    • Grant type: Authorization Code
    • ユーザーが次のメンバーであること: Everyone(または Portal へのアクセスを制限したい場合は、Halo-Admin などの特定のグループに制限)
    • その他の設定はデフォルトのままにするか、必要に応じて調整します。

Screenshot: Access policy for Portal SSO Screenshot: Add rule

Portal service を更新する

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

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

ユーザーにアクセスを付与する

Halo には 2 つのロールがあります。UserAdmin です。ロールは Okta 認可サーバー上のグループメンバーシップによって設定されます(ロールの定義を参照)。

  • ユーザーロールを付与するには、ユーザーを Halo_User グループに追加します。
  • 管理者ロールを付与するには、ユーザーを Halo_Admin グループに追加します。