PingFederate でのクライアント資格証明付与タイプの実装
このトピックでは、OAuth クライアント資格証明付与タイプを使用してリソースへのアクセスを承認し、リソースオーナーを認証する手動の手順について説明します。ここで、OAuth クライアントは PingFederate を CAS として使用するサービスプロバイダです。Windchill サーバーはリソースサーバーです。LDAP プロトコルが OAuth プロトコルに置き換えられたことに伴い、Windchill は OAuth/トークンベースの認証を使用して API を呼び出す必要があります。
必要条件
ここでのすべてのサブセクションは、中央認可サーバー (CAS)、Windchill、およびクライアントアプリケーションが OAuth 用に設定されていることを前提としています。Windchill は OAuth を使用するリソースサーバーとして設定されている必要があります。OAuth クライアントはサービスプロバイダとして登録されている必要があります。
クライアント資格証明付与タイプ用の Windchill ユーザー
クライアント資格証明付与タイプで使用される Windchill プリンシパルは、Windchill との統合に使用される非対話型のクライアントマシンを表すためのマシンアイデンティティです。これは非人的アイデンティティを表し、その他のユーザーと同様に LDAP で定義する必要があります。ただし、このユーザーは統合目的でのみ使用する必要があります。PingFederate 内のクライアント資格証明を Windchill 内のアイデンティティに関連付けるプロセスを以下で説明します。
マシンアイデンティティの使用は、安全に管理されるように制御する必要があります。アイデンティティ、クライアント ID、およびクライアントシークレットは Windchill 管理者が管理する必要があり、共有することはできません。Windchill の特定の操作は、マシンアイデンティティによって実行されるとは想定されておらず、次のように想定されます。
このアイデンティティのアカウントでは Windchill アプリケーションに直接ログインできない。
LDAP ではパスワードを設定できない。資格証明は SSO によって管理されます。
任意の UI アクティビティまたは操作は、このアイデンティティによって実行できない。
人間による承認または確認を必要とする電子署名やワークフローのタスクは、このアイデンティティに割り当てることができない。
PingFederate クライアント資格証明登録の必要条件の手順
クライアント資格証明登録を行うには、PingFederate で以下の手順に従います。
1. 拡張プロパティの作成 - 「SYSTEM」 > 「Extended Properties」でプロパティ serviceprincipal を作成します。
2. アクセストークンマッピング - 「APPLICATIONS」 > 「Access Token Mappings」で新しいアクセストークンマッピングを作成します。コンテキスト (クライアント資格証明) とデフォルトのアクセストークンマネージャを選択します。
3. 契約履行 - 手順 1 で拡張プロパティとして設定したユーザー属性 serviceprincipal を使用して契約履行を設定します。
PingFederate でのクライアント登録の手順
CAS (PingFederate) でクライアントを登録するには、PingFederate で以下の手順に従います。
1. 「APPLICATIONS」 > 「OAuth」 > 「Clients」 > 「Add Client」で新しいクライアントを作成します。「Client ID」と「Name」に入力します。
2. 「Client Authentication」で「Client Secret」を選択します。
3. クライアントシークレットを生成し、安全な場所にコピーして後から使用できるようにします。
4. 付与タイプをクライアント資格証明に設定します。
5. デフォルトのアクセストークンマネージャをデフォルトに設定します。
6. サービスアカウントとして使用する Windchill ユーザーを作成します。この Windchill ユーザー名は、前述の serviceprincipal プロパティ値として設定します。
承認されたアプリケーションからのアクセストークンリクエスト
OAuth クライアントは、認証サーバーのトークンエンドポイントに POST リクエストを送信することによって、アクセストークンを取得する必要があります。リクエストボディのコンテンツタイプは application/x-www-form-urlencoded でなければなりません。リクエスト URI の詳細は次のとおりです。

#URI
POST <CAS_SERVER_TOKEN_URL>
#Request Headers
Content-Type: application/x-www-form-urlencoded
#Request Body
grant_type= client_credentials&client_id=<CLIENT_ID>&client_secret=<CLIENT_SECRET>&scope=<scope>

#Example of the URI
POST https://<host>:<port>/as/token.oauth2
Content-Type: application/x-www-form-urlencoded
grant_type= client_credentials&client_id=sp1-oauth2-client&client_secret=sp1-oauth2-client_1234&scope= WINDCHILL_READ
パラメータ
説明
grant_type
このフローの付与タイプは client_credentials です。
CLIENT_ID
CAS で生成されたこの Web アプリケーション用クライアント ID。
CLIENT_SECRET
これは、この Web アプリケーションを設定する際に CAS で入力したクライアントシークレットです。
SCOPE
Windchill または WRS にアクセスする場合、WINDCHILL_READ でなければなりません。
これは役に立ちましたか?