OIDC アクセス制御のセットアップ

このセクションでは、OpenID Connect (OIDC) を Klocwork アプリケーションに統合する方法について説明します。この設定により、ユーザーは OIDC アプリケーションプロバイダー (IdP) からの既存の資格情報を使用して Klocwork にログインできるようになります。

別の認証方法から OIDC  に切り替えると、現在のユーザーはすべて削除されます。切り替える前に、projects_root/permissions_data フォルダーにバックアップを強くお勧めします。

前提条件

OIDC 統合を開始する前に、次のものを用意してください。

  • アクティブな OIDC アプリケーションプロバイダー (IdP) (Google、Microsoft Entra など)

  • Validate サーバーと OIDC IdP 両方への管理アクセス

  • IdP からの必要な情報とメタデータ (クライアント ID、クライアントシークレット、認証エンドポイント、トークンエンドポイント、ユーザー情報エンドポイントなど)

  • 次のいずれかのパッケージからの kwauth のバージョン 24.2 以降: kwauthtoolskwbuildtools、またはkw-desktop-tools 内の kw-cmd-installer。認証ツールパッケージのインストールを参照してください。

OIDC を使用してセキュア接続 (SSL) を設定する場合は、OIDC を設定する前に SSL 接続を構成してテストすることをお勧めします。このアプローチにより、潜在的な障害ポイントの数が減少します。SAML または OIDC 認証用に SSL を有効にするを参照してください。

ステップ 1: ユーザーのプロビジョニング方法と管理者アカウントを選択する

ユーザーのプロビジョニング方法を選択するには、/projects_root/config/admin.conf ファイルを編集するか、kwauthconfigw を実行して、次の属性を追加または選択します:

user.manager=modern-jit OR modern-pp

フィールド

  • modern-jit は、ジャストインタイム (JIT) プロビジョニングによる最新の認証であり、ユーザーが IdP を通じて初めてログインするときに、ユーザーアカウントが自動的に作成されます。

    認証に成功した後に Validate でユーザーを自動的に作成する場合は、このオプションを選択します。この方法を選択した場合は、IdP にユーザーを追加するだけで済みます。

  • modern-pp は、事前にプロビジョニングされたアカウントに対する最新の認証です。

    Validate の統合ユーザー管理ツールを使用して、新しいユーザーを明示的に追加し、グループまたは権限を構成する場合は、このオプションを選択します。この方法を選択した場合は、Validate と IdP の両方に新しいユーザーを追加する必要があります。

管理者アカウントを設定するには、以下を admin.conf に追加します:
init.admin.name=<user>

Where:<user> は、管理者権限を付与されるユーザーです

たとえば、会社の IdP 認証情報を使用している場合は、init.admin.name=janedoe@company.com を設定します

変更を保存します。

modern-pp を選択する際は必ず管理者アカウントを追加してください。Validate に管理者アカウントを追加するまで、他のユーザーでログインすることはできません。

ステップ 2: Klocwork をアイデンティティプロバイダーに追加する

OIDC IdP で Klocwork を構成するには:

  1. IdP の管理コンソールにログインします。

  2. Klocwork 用の OIDC アプリケーションを作成します。以下の詳細を入力します:

    • Validate サーバーへのリダイレクト URL。例:

      https://{your-server-host}:{port}/kwauthgateway/login/oauth2/code/{custom-idp-registration-id}

IdP が SSL で保護されており、自己署名証明書を使用している場合は、環境に証明書を追加して、Validate が IdP と通信できるようにします。

ステップ 3: Validate サーバーで OIDC 認証を構成する

kwauthconfigw を使用するか、または /projects_root/config/auth.properties という名前のファイルを作成して、次のパラメータを追加します。

Azure または Keycloak の設定例

コピー
kw.authFramework=openid
kw.userIdAttribute=preferred_username
kw.userDnAttribute=name
kw.openid.prompt=login

spring.security.oauth2.client.provider.{custom-idp-registration-id}.issuer-uri={https://login.microsoftonline.com/aaaaaa-bbbbb-1234/v2.0 | https://my.keycloak.com/realms/my-realm
spring.security.oauth2.client.registration.{custom-idp-registration-id}.client-id={client-id-provided-by-idp}
spring.security.oauth2.client.registration.{custom-idp-registration-id}.client-secret={client-secret-provided-by-idp}
spring.security.oauth2.client.registration.{custom-idp-registration-id}.scope=openid,email,profile

Google、GitHub、Facebook、または Okta の設定例

コピー
kw.authFramework=openid
kw.userIdAttribute=preferred_username
kw.userDnAttribute=name
kw.openid.prompt=login

spring.security.oauth2.client.registration.{google|github|google|facebook|okta}.client-id={client-id-provided-by-idp}
spring.security.oauth2.client.registration.{google|github|google|facebook|okta}.client-secret={client-secret-provided-by-idp}
パラメーター 説明
フレームワーク 認証のフレームワーク (この場合は openid) kw.authFramework=openid
ユーザー ID 属性 Validate ユーザー名にマッピングする属性値を取得するために使用される SAML/OIDC プリンシパル属性キー kw.userIdAttribute=preferred_username
表示名属性 Validate での表示名 kw.userDnAttribute=name
発行者 URI 認証サーバー (セキュリティ属性が先頭に付く)

spring.security.oauth2.client.provider.keycloak.issuer-uri=https://your_klocwork_server.com/realms/kwrealm/

クライアント ID 認証サーバーで有効な OAuth 2.0 クライアント識別子 (セキュリティ属性が先頭に付く) spring.security.oauth2.client.registration.keycloak.client-id=kwopenid
クライアントシークレット IdP からのクライアントシークレット (セキュリティ属性が先頭に付く) spring.security.oauth2.client.registration.keycloak.client-secret=jgp0ZFerrHsHGaT9H8FHL9tNv7fyoA4b
スコープ OAuth 2.0 スコープ (セキュリティ属性と openid が先頭に付く)。使用可能な値: profile、email、address、phone、offline_access。スコープ値を使用してクレームをリクエストする、およびオフラインアクセスを参照してください spring.security.oauth2.client.registration.keycloak.scope=openid profile
認証付与タイプ OAuth 2.0 認証付与タイプ (セキュリティ属性が先頭に付く) spring.security.oauth2.client.registration.keycloak.authorization-grant-type=authorization_code
リダイレクト URI (オプション) リダイレクト URI (セキュリティ属性が先頭に付く) spring.security.oauth2.client.registration.keycloak.redirect-uri=http://localhost:${KW_PORT}/kwauthgateway/login/oauth2/code/kwopenid
リクエストの有効期限 (オプション) デバイス認証フローの最大継続時間 (秒単位) kw.RequestExpirySeconds=180
プロンプト (オプション) 認証および同意プロセスの動作。使用可能な値: none、login、consent、select_account。認証リクエストを参照してください kw.openid.prompt=none

ステップ 4: OIDC 統合をテストする

OIDC 統合をテストするには:

  1. Validate サーバーを再起動します。

  2. Validate ブラウザーを開き、[ログイン] ボタンをクリックします。認証のために IdP にリダイレクトされるはずです。

  3. デバイス認証フロー に従って OIDC 認証を行います。

IdP で認証すると、Validate にリダイレクトされ、自動的にログインします。

トラブルシューティング

セットアップ中に表示される可能性のある一般的なエラーメッセージと、その修正方法を次に示します。

  • 「リクエストされたターゲットへの有効な証明書パスが見つかりません」: IdP は自己署名証明書を使用しています。Validate がこれを使って IdP と通信できるように、環境に証明書を追加してください。

  • 「認証リクエストに署名が必要な場合、署名資格情報は空であってはなりません」: IdP には署名が必要ですが、証明書が構成に含まれていません。

  • 「構成でサポートされていない認証フレームワークが指定されました」: フレームワークが構成されていません。auth.properties ファイルで、kw.authFrameworksaml または openid に設定されていることを確認します。

  • Validate で IdP 設定を構成するときに問題が発生する場合は、IdP デバッグログをオンにすると役立つ場合があります。これにより、トラブルシューティングに役立つ詳細情報が提供されます。

    機密情報が漏洩したり、大量のディスク領域が消費されたりする可能性があるため、運用環境ではデバッグログをオフにすることを忘れないでください。

    IdP デバッグログを有効にするには、次のいずれかの方法を選択します。

    • KW_DEBUG 環境変数を true に設定し、kwauthgateway のログレベルを debug に設定します。

    • auth.properties ファイルで、kw.debugAttributes を true に設定します。この設定により、IdP から返される属性のテキスト表現を確認することができ、kw.userIdAttribute として使用するものを判断するために役立ちます。kw.debugAttributes=true である間はサーバーにログインできないため、サーバーが使用できなくなることを覚えておいてください。

詳細情報

OIDC の SSL を有効にするには、SAML または OIDC 認証用に SSL を有効にするを参照してください