DTP を、OpenID Connect ID プロバイダーからの認証を受け入れるよう設定できます。  これにより、Parasoft の外部でユーザー認証を管理できます。OpenID Connect のサポートはデフォルトでは無効です。

このセクションの内容:


基本設定


OIDC サーバー設定を完了してから、DTP 設定を完了します。

OIDC サーバーでの設定

  1. まだ行っていない場合、OpenID Connect の ID プロバイダーに DTP を登録します。  oidc.json ファイルで使用する属性値は認可サーバー (Keycloak、connect2id など) から取得できます。

  2. 必要なリダイレクト URI を登録して、認証後のユーザーのリダイレクト先を OIDC サーバーに設定します。 次のリダイレクト URI を登録する必要があります。

    必須: 

    • <DTP_INSTALL>/pst/login/oauth2/code/dtp
    • <DTP_INSTALL>/pstsec/login/oauth2/code/dtp (User Administration)
    • <DTP_INSTALL>/grs/login/oauth2/code/dtp (Report Center/Enterprise Pack で必要)

    任意。次のリダイレクト URI の登録は任意です。個々のアプリケーションから直接ログインできるようにする場合にだけ登録が必要です。

    • <DTP_INSTALL>/licenseserver/login/oauth2/code/dtp (License Server)
    • <DATA_COLLECTOR>/login/oauth2/code/dtp (Data Collector)

DTP の設定

<DTP_DATA_DIR>/conf ディレクトリにある oidc.json ファイルを開き、DTP が使用する OIDC プロバイダー プロパティを構成します。 

oidc.jsonファイルのデフォルトの内容
{
"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 booleanOIDC 認証を有効化/無効化します。デフォルトは false です。
issuerUri stringissureUri パラメータの値は、承認サーバーの URI です。URI に /.well-known/openid-configuration が追加され、ファイルの処理時に完全な検出エンドポイントを作成します。
clientId string

OIDC プロバイダーで DTP に登録されているパブリック識別子を指定します。

clientSecret string

DTP のクライアントシークレットを指定します。

encryptedClientSecretstring

DTP のクライアントシークレットを暗号化された文字列として指定します。 clientSecret の代わりにこの属性を使用できます。両方が含まれている場合、clientSecret が優先されます。

この値は、Parasoft ツールに含まれる -encodepass CLI オプションを使用してエンコードすることができます (例: jtestcli.exe -encodepass <client secret>)。

scopes 文字列の配列

OIDC サーバーがクライアントに提供するユーザー情報のセットを定義します。 DTP は、主にユーザー クレームへのアクセスを取得するために、配列に指定された値を使用します。 次の配列がデフォルトで定義されています。

["openid", "profile", "email"], 

claimMappings objectユーザーに関する情報を表します。

username stringOIDC で要求されたユーザー名にマッピングされた値を指定します。デフォルトは preferred_username です。

firstName stringOIDC で要求された名前 (ファーストネーム) にマッピングされた値を指定します。デフォルトは given_name です。 

lastName stringOIDC で要求された苗字 (ラストネーム) にマッピングされた値を指定します。デフォルトは family_name です。 

email stringOIDC で要求された電子メールにマッピングされた値を指定します。デフォルトは email です。 
adminUsers 文字列の配列ログイン時に管理者権限を付与する必要がある組織内の既存のユーザーを指定します。 

ファイルを設定したら、変更を保存して DTP サービスを再起動します。

DTP のログイン ページにアクセスすると、OpenID Connect 認証インターフェイスにリダイレクトされます。資格情報を入力すると、ログインして DTP にリダイレクトされます。

設定の例

次の例は、DTP を ID アクセス管理システムに接続する方法を分かりやすくするためのものです。詳細については、ご使用のソフトウェアのドキュメントを参照してください。

Keycloak

以下は、この例で説明しているように、Keycloak 用に OpenID Connect を設定するための前提条件です。

  • Keycloak は、デフォルトの署名アルゴリズムとして RS256 を使用する必要があります。
  • Keycloak からのアクセス トークンには、Keycloak userinfo API エンドポイントから取得できるユーザー情報が含まれている必要があります。
  • 次のリダイレクト URI を登録する必要があります。
    • <HOST>:<PORT>/* (default windows port is 80, linux port is 8080)
    • <HOST>:8314/*
    • <HOST>:8082/* (Data Collector アップロード フォーム用) 
    ワイルドカードを使用しない場合は、Report Center、User Administration、License Administration の個々の URI を追加する必要があります。リダイレクト URI の登録に関する追加情報については「OIDC Server Configuration」を参照してください。

このサンプルの 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 のドキュメント を参照してください。

Google

次の例は、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 のドキュメント を参照してください。 

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” エラーが表示される場合があります。このエラーを解決するには、別のブラウザーを使用するか、現在のブラウザーのキャッシュをクリアします。 

Azure

前提条件として、Azure アプリの認証を設定し、以下のリダイレクト URI を許可しておく必要があります。

  • https://<DTP_HOST>:<PORT>/grs/login/oauth2/code/dtp
  • https://<DTP_HOST>:<PORT>/licenseserver/login/oauth2/code/dtp
  • https://<DTP_HOST>:<PORT>/pst/login/oauth2/code/dtp
  • https://<DTP_HOST>:<PORT>/pstsec/login/oauth2/code/dtp

ホストがデフォルトの HTTPS ポート 443 を使用する場合、ポートの指定は必要ありません。

次の例は、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 のドキュメント を参照してください。

ログアウト設定

DTP は、OIDC 発行者の end_session_endpoint を使用して、ユーザーを OIDC サーバーからログアウトします。このプロパティは、<OIDC_ISSUER_URL>/.well-known/openid-configuration ペイロードで定義する必要があります。

DTP は、ログアウト メカニズムとして OIDC バックチャネル ログアウトをサポートしていません。

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
  • No labels