例: 証明書ベースの認証と PingFederate の統合
この例は、ThingWorx でシングルサインオンが設定された SSO 環境を設定する方法の詳細な手順を示しています。中央認証サーバー (CAS) および ID プロバイダ (IdP) として PingFederate、証明書ベースの認証 (CBA) を使用するデータストアとして Windchill DS を使用しています。これにより、ユーザーは資格証明または証明書を使用して ThingWorx にログインできます。
PingFederate の詳細なドキュメンテーションは、「Configuring an X.509 Certificate IdP Adapter」を参照してください。
パート A: 必要条件 
ステップ 1: 証明書の生成
証明書ベースの認証を設定するには、ユーザーの認証に使用される証明書を、PingFederate に保存されている証明機関 (CA) 証明書に対して検証できるように PingFederate を設定します。CA とユーザー証明書がない場合、自己署名証明書を生成して PingFederate で使用できます。公開キーとクライアント証明書を生成するには、次のコマンドを使用します。
1. openssl genrsa -out ptc-sso-ca.key 4096
2. openssl req -x509 -new -nodes -key ptc-sso-ca.key -days 3650 -out ptc-sso-ca.pem
3. openssl genrsa -out ptc-sso-jsmith.key 2048
4. openssl req -new -key ptc-sso-jsmith.key -out ptc-sso-jsmith.csr
5. v3.ext ファイルを作成します。
extendedKeyUsage=clientAuth
keyUsage = digitalSignature
6. openssl x509 -req -in ptc-sso-jsmith.csr -CA ptc-sso-ca.pem -CAkey ptc-sso-ca.key -CAcreateserial -out ptc-sso-jsmith.pem -days 1024 -sha256 -extfile <path to v3.ext file>
7. openssl pkcs12 -export -out ptc-sso-jsmith.pfx -inkey ptc-sso-jsmith.key -in ptc-sso-jsmith.pem
ステップ 2: CA 証明書の PingFederate への追加
X.509 トークンを使用するには、PingFederate にセカンダリ SSL ポートが必要です。セカンダリ SSL ポートを設定するには、<pf-install>/ping federate/bin/run.properties ファイルを編集して pf.secondary.https.port の値を有効なポート番号に変更します(この例では 9032 に設定)。
ステップ 3: 信頼された CA 証明書の追加
1. 「セキュリティ」 > 「Trusted CA」 > 「インポート」の順に選択します。
2. CA 機関証明書ファイル (pem ファイル) を選択します。
3. 「サマリー」ウィンドウで設定を確認して必要に応じて修正し、「保存」をクリックします。
ステップ 4: ユーザー証明書のブラウザへの保存
次に、ユーザー証明書 (pfx ファイル) をブラウザにインポートします。
パート B: X509 証明書 IDP アダプタの作成 
このアダプタは、証明書に基づいてユーザーを認証するために使用されます。
1. PingFederate に管理者としてログインします。「認証」 > 「統合」 > 「IdP」 > 「アダプタ」の順に選択します。「Create New Instance」をクリックします。
2. 「インスタンス名」「インスタンス ID」を入力します。タイプを「X.509 Certificate IdP Adapter 1.3.1」に設定します。「次へ」をクリックします。
3. pf.secondary.https.port に指定されている「Client Auth Port」を入力します (9032)。「client hostname」には、PingFederate システムの fqdn を入力します。
4. 「Match Issuer DN in Client X.509 certificate」をオンにし、「Show Advanced Fields」をクリックします。
5. 「Policy OID」を使用して「Authentication Context」を設定し、「Include Subject Alternative Name (SAN)」オプションを選択します。「次へ」をクリックします。
6. 「Extended Contract」タブで、「追加」ボタンを使用して userPrincipalName「CN」を入力し、「次へ」をクリックします。
7. 「Adapter Attributes」タブで、userPrincipalName 属性の「Pseudonym」オプションを設定し、「次へ」をクリックします。
8. 「Adapter Contract Mapping」タブでは、データストアおよび発行基準から追加の属性を設定できます。発行基準は、証明書からの情報を使用して、LDAP でのユーザーの存在を検証します。
* 
ThingWorx では、CBA の発行基準の設定は必須です。
a. 「Configure Adapter Contract」をクリックします。
b. 「Adapter Contract Mapping」「ADD Attribute Source」をクリックします。
c. 「Attribute Source Id」および「Attribute Source Description」として「LDAP」を設定します。「Active Data Store」で WindchillDS データストアを選択し、「次へ」をクリックします。
d. 「LDAP Directory Search」で、次のパラメータを指定します。
i. Base DN = cn=Windchill_11.1,o=ptc
ii. Search Scope = Subtree
iii. uidCNSubject DN ユーザー属性を追加します。
e. 「次へ」をクリックします。
f. 「LDAP FILTER」で、uid=${CN} というフィルタを設定します。「次へ」をクリックし、「完了」をクリックします。
g. 「Adapter Contract Fulfillment」で、「userPrincipalName」ソースを「LDAP」に設定し、「uid」の値を指定します。その他すべての契約ソースを「アダプタ」に設定します。「次へ」をクリックします。
h. 「Issuance Criteria」「Show Advanced Criteria」をクリックします。
i. 「定義式」として #this.get("ds.LDAP.uid").hasValue(#this.get("CN").getValue()) を追加します。
ii. 「Error Result」を指定します (例: 「User was not found」)。
iii. 「追加」をクリックします。
9. 「次へ」をクリックし、「保存」をクリックします。
パート C: 証明書アダプタの SP 接続への追加 
1. PingFederate に管理者としてログインします。「アプリケーション」 > 「統合」 > 「SP Connections」の順に選択します。接続名を選択します。
2. 「Authentication Source Mapping」 > 「Map New Adapter Instance」の順にクリックします。
3. 「Adapter Instance」タブで、パート B で作成したアダプタ名を選択します。「次へ」をクリックします。
4. さまざまな属性をアダプタの値またはダイナミックテキストの値にマッピングします。
5. 「次へ」をクリックし、「保存」をクリックします。
これは役に立ちましたか?