DTP を、OpenID Connect ID プロバイダーからの認証を受け入れるよう設定できます。 これにより、Parasoft の外部でユーザー認証を管理できます。OpenID Connect のサポートはデフォルトでは無効です。
このセクションの内容:
基本設定
OIDC サーバー設定を完了してから、DTP 設定を完了します。
OIDC サーバーでの設定
- まだ行っていない場合、OpenID Connect の ID プロバイダーに DTP を登録します。
- issuerUri
- clientId
- clientSecret
- 必要なリダイレクト URI を登録して、認証後のユーザーのリダイレクト先を OIDC サーバーに設定します。次の URI を登録する必要があります。
必須
http(s)://<HOST>:<PORT>/pst/login/oauth2/code/dtp
http(s)://<HOST>:<PORT>/pstsec/login/oauth2/code/dtp
(User Administration)http(s)://<HOST>:<PORT>/grs/login/oauth2/code/dtp
(Required for Report Center/Enterprise Pack)
任意 (次のリダイレクト URI の登録は任意です。個々のアプリケーションから直接ログインできるようにする場合にだけ登録が必要です。)
http(s)://<HOST>:<PORT>/licenseserver/login/oauth2/code/dtp
(License Server)http(s)://<DATA_COLLECTOR_URL>/login/oauth2/code/dtp
(Data Collector)
DTP の設定
<DTP_DATA_DIR>/conf
ディレクトリにある oidc.json ファイルを開き、DTP が使用する OIDC プロバイダー プロパティを構成します。
{ "enabled": false, "issuerUri": "your issuer uri", "clientId": "your client id", "clientSecret": "your client secret", "scopes": ["openid", "profile", "email"], "claimMappings": { "username": "preferred_username", "firstName": "given_name", "lastName": "family_name", "email": "email" }, "adminUsers": [] }
管理ユーザーが初めてログインする前に oidc.json ファイルを設定する必要があります。そうでなければ、管理機能を実行するのに必要なパーミッションなしでユーザーがデータベースに追加されることになります。
enabled
要素が true
に設定されている場合、ファイル中のすべての属性が必須です。暗号化されているかどうかにかかわらず、クライアン トシークレット属性を定義する方法は 2 つあります。デフォルトでは暗号化されていないバージョン (clientSecret
) が使用されますが、必要に応じて暗号化されたバージョン (encryptedClientSecret
) に交換できます。次の表に、ファイル中のすべての要素を示します。
属性 | 値 | 説明 | |
---|---|---|---|
enabled | boolean | OIDC 認証を有効化/無効化します。デフォルトは false です。 | |
issuerUri | string | issureUri パラメーターの値を指定します。認証サーバーの URI です。URI に /.well-known/openid-configuration が追加され、ファイルの処理時に完全な検出エンドポイントを作成します。 | |
clientId | string | OIDC プロバイダーで DTP に登録されているパブリック識別子を指定します。 | |
clientSecret | string | DTP のクライアントシークレットを指定します。 | |
encryptedClientSecret | string | DTP のクライアントシークレットを暗号化された文字列として指定します。 この値は、Parasoft ツールに含まれる -encodepass CLI オプションを使用してエンコードすることができます (例: jtestcli.exe -encodepass <client secret>)。 | |
scopes | 文字列の配列 | OIDC サーバーがクライアントに提供するユーザー情報のセットを定義します。 DTP は、主にユーザー クレームへのアクセスを取得するために、配列に指定された値を使用します。 次の配列がデフォルトで定義されています。
| |
claimMappings | object | ユーザーに関する情報を表します。 | |
username | string | OIDC で要求されたユーザー名にマッピングされた値を指定します。デフォルトは preferred_username です。 | |
firstName | string | OIDC で要求された名前 (ファーストネーム) にマッピングされた値を指定します。デフォルトは given_name です。 | |
lastName | string | OIDC で要求された苗字 (ラストネーム) にマッピングされた値を指定します。デフォルトは family_name です。 | |
email | string | OIDC で要求された電子メールにマッピングされた値を指定します。デフォルトは email です。 | |
adminUsers | 文字列の配列 | ログイン時に管理者権限を付与する必要がある組織内の既存のユーザーを指定します。 |
ファイルを設定したら、変更を保存して DTP サービスを再起動します。
DTP のログイン ページにアクセスすると、OpenID Connect 認証インターフェイスにリダイレクトされます。資格情報を入力すると、ログインして DTP にリダイレクトされます。ログイン中または設定中にエラーが発生した場合は、詳細を示すエラー ページにリダイレクトされます。
詳細設定
オートメーション (CLI) ユーザーの基本認証の有効化
オートメーション ユーザーが OIDC 経由で DTP を認証する方法は 2 つあります。
- デバイス コード認証
- 証明書認証
オートメーション ユーザーに、より簡単な認証方法が必要な場合があります。
オートメーション ユーザーの基本認証を有効にすることで、これを実現できます。操作手順:
- ユーザー管理で、ユーザー名とパスワードを使用してオートメーション ユーザーを作成します。
- oidc.json ファイルに
"enableBasicAuth": true
を追加して、基本認証を有効にします。
DTP を再起動して変更を適用します。
ベーシック認証が有効になっている場合:
- DTP UI は引き続き OIDC 認証を強制します。
- DTP REST API は OIDC 認証とベーシック認証の両方を受け入れます。
- オートメーション ユーザーは、ベーシック認証を使用して DTP REST API を呼び出します
クライアント資格情報フローの有効化
クライアント資格情報フローを有効にするには、たとえば Parasoft CTP からの受信接続の場合、oidc.json ファイルの adminUsers
要素の後に次の clientCredentials
要素を追加します。
"clientCredentials": { "enabled" : true, "clientId" : "client id", "clientSecret" : "client secret", "scopes" : ["openid"], "claimMappings" : { "username": "preferred_username", } }
クライアント資格情報フローは、認証に使用する JWT アクセス トークンを OAuth サーバーから取得します。トークン内のどのクレームをユーザー名として使用するかを指定し、必要に応じて、そのユーザー名が有効な DTP ユーザーと一致するように、対応するユーザーを DTP に追加します。OAuth サーバー (たとえば Keycloak や EntraId など) によっては、アクセス トークンのクレームを構成することができます。トークンにどのようなクレームがあるかわからない場合は、以下に示すように curl コマンドを使用してトークンを要求し、トークンの内容を調べて確認することができます。
curl --request POST \ --url 'https://{yourDomain}/oauth/token' \ --header 'content-type: application/x-www-form-urlencoded' \ --data grant_type=client_credentials \ --data client_id=YOUR_CLIENT_ID \ --data client_secret=YOUR_CLIENT_SECRET \
設定の例
次の例は、DTP を ID アクセス管理システムに接続する方法を分かりやすくするためのものです。詳細については、ご使用のソフトウェアのドキュメントを参照してください。
Keycloak
以下は、この例で説明しているように、Keycloak 用に OpenID Connect を設定するための前提条件です。
- Keycloak は、デフォルトの署名アルゴリズムとして RS256 を使用する必要があります。
- Keycloak からのアクセス トークンには、Keycloak
userinfo API
エンドポイントから取得できるユーザー情報が含まれている必要があります。
このサンプルの demo
はレルム名であり、2 人の管理ユーザー (admin1
および admin2
) が作成されます。
"enabled": true, "issuerUri": "https://host:8095/auth/realms/demo/", "clientId": "pstsec", "clientSecret": "4d35ef23-aec5-44d7-9c59-18092bd619e8", "scopes": ["openid","profile","email"], "claimMappings": { "username": "preferred_name", "firstName": "given_name", "lastName": "family_name", "email": "email" } "adminUsers": ["admin1","admin2"]
詳細については Keycloak のドキュメント を参照してください。
Azure (Microsoft Entra ID)
次の例は、Azure 用に OpenID Connect を設定する方法を示しています。この例では、2 人の管理者ユーザー ([email protected] および [email protected]) を作成します。
{ "enabled": true, "issuerUri": "https://login.microsoftonline.com/<tenantId>/v2.0", "clientId": "<clientId-from-Azure>", "clientSecret": "<clientSecret-from-Azure>", "scopes": ["openid", "profile", "email"], "claimMappings": { "username": "email", "firstName": "given_name", "lastName": "family_name", "email": "email" }, "adminUsers": [ "[email protected]", "[email protected]" ] }
ClaimMappings
は、https://graph.microsoft.com/oidc/userinfo へのレスポンスからのフィールドを使用します。これには、限られたフィールドのセットが含まれています。 以下は、電子メール アドレスが [email protected] のユーザーに対するレスポンスの例です。
{ "sub": "<unique value for user>", "name": "Jane Jones", "given_name": "Jane", "family_name": "Jones", "picture": "https://graph.microsoft.com/v1.0/me/photo/$value", "email": "[email protected]" }
詳細については Microsoft のドキュメント を参照してください。
Connect2id
次の例は、connect2id 用に OpenID Connect を設定する方法を示しています。 Connect2id を OpenID Connect プロバイダーとして使用する場合、ユーザーは HTTPS 経由で DTP にアクセスする必要があります。この例では c2id
が realm の名前です。2人の管理者ユーザー (admin1
および admin2
) が作成されます。
"enabled": true, "issuerUri": "https://host:port/c2id", "clientId": "<clientId-from-c2id>", "clientSecret": "<clientSecret-from-c2id>", "scopes": ["openid","profile","email"], "claimMappings": { "username": "sub", "firstName": "given_name", "lastName": "family_name", "email": "email" } "adminUsers": ["admin1","admin2"]
詳細については connect2id のドキュメント を参照してください。
既知の制限事項
connect2id を介して DTP に初めてログインすると、"Invalid Request” エラーが表示される場合があります。このエラーを解決するには、別のブラウザーを使用するか、現在のブラウザーのキャッシュをクリアします。
次の例は、Google 用に OpenID Connect を設定する方法を示しています。この例では、2 人の管理者ユーザー (admin1
および admin2
) を作成します。
"enabled": true, "issuerUri": "https://accounts.google.com", "clientId": "<clientId-from-google>", "clientSecret": "<clientSecret-from-google>", "scopes": ["openid","profile","email"], "claimMappings": { "username": "given_name", "firstName": "given_name", "lastName": "family_name", "email": "email" } "adminUsers": ["admin1","admin2"]
詳細については Google のドキュメント を参照してください。
ログアウト設定
DTP は、OIDC 発行者の end_session_endpoint
を使用して、ユーザーを OIDC サーバーからログアウトします。このプロパティは、<OIDC_ISSUER_URL>/.well-known/openid-configuration
ペイロードで定義する必要があります。DTP の OIDC バックチャネル ログアウト URI は、<DTP_INSTALL>/pstsec/logout/connect/back-channel/dtp
です。この URI に送信されるログアウト トークンには、セッション ID (SID) クレームが含まれている必要があります。
OpenID Connect モードでの API の使用
DTP が OpenID Connectモードの場合、ベーシック認証を使用して DTP または Enterprise Pack API にアクセスすることはできません。代わりに、Authorization
プロパティを使用して、リクエスト ヘッダーで API エンドポイントにアクセス トークンを渡す必要があります。トークンは次の形式で渡されます。
Authorization: Bearer <access token>
アクセス トークンを取得する方法については、ID アクセス管理ソフトウェアのドキュメントを参照してください。
方法に関係なく、API 呼び出しごとにトークンを渡す必要があります。次の例では、値 "1234567890
" のトークンが DTP ビルド API エンドポイントに渡されます。
curl -X GET -H "Authorization: Bearer 1234567890" http://dtp.host.com/grs/api/v1.7/builds?limit=1000&offset=0