シスコは世界中のユーザにそれぞれの言語でサポート コンテンツを提供するために、機械と人による翻訳を組み合わせて、本ドキュメントを翻訳しています。 ただし、最高度の機械翻訳であっても、専門家による翻訳のような正確性は確保されません。 シスコは、これら翻訳の正確性について法的責任を負いません。原典である英語版(リンクからアクセス可能)もあわせて参照することを推奨します。
このドキュメントでは、スポンサー ユーザにシングル サインオン(SSO)を提供するために、Cisco Identity Services Engine(ISE)2.1 を使用して PingFederate SAML サーバを設定する方法について説明します。
次の項目に関する知識が推奨されます。
このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づくものです。
本書の情報は、特定のラボ環境にあるデバイスに基づいて作成されたものです。 このドキュメントで使用するすべてのデバイスは、初期(デフォルト)設定の状態から起動しています。 稼働中のネットワークで作業を行う場合、コマンドの影響について十分に理解したうえで作業してください。
ドキュメント表記の詳細は、『シスコ テクニカル ティップスの表記法』を参照してください。
セキュリティ アサーション マークアップ言語(SAML)は、セキュリティ ドメイン間で認証と認証データを交換するための XML ベースの標準です。
SAML の仕様は、次の 3 つのロールを定義します。 プリンシパル(スポンサー ユーザ)、ID プロバイダー(IdP)(Ping Federate サーバ)、サービス プロバイダー(SP)(ISE)。 一般的な SAML SSO フローでは、SP は、IdP から ID アサーションを要求し、取得します。 この結果に基づいて、ISE がポリシーを決定する際に使用できる設定可能な属性を IdP に含めることができるため、ISE はポリシーの決定を行うことができます。 最初の認証が行われた後は、アサーション セッションが IdP でアクティブになっている限り、サービスにアクセスするためにユーザがクレデンシャルを再度求められることはありません。
この使用例では次のフローが想定されます。
次のセクションでは、ISE を Ping Federate と統合する設定手順と、スポンサー ポータルのブラウザ SSO を有効にする方法について説明します。
注: スポンサー ユーザを認証する場合、さまざまなオプションや選択項目がありますが、このドキュメントにすべての組み合わせが記述されているわけではありません。 しかし、この使用例には、使用例を修正して目的の設定を正確に指定する方法について理解するのに必要な情報が含まれています。
5. フロー図に次の内容があることを確認し、[Save] をクリックします。
3. 生成された ZIP ファイルを保存し、解凍します。 ここに含まれている XML ファイルは PingFederate にプロファイルを作成するときに使用されます。
4. PingFederate の管理者用ポータル(通常 https://ip:9999/pingfederate/app)を開きます。
5. [IDP Configuration] タブの [SP Connections] セクションで、[Create New] を選択します。
6. [Connection Type] で [Next] をクリックします。
7. [Connection Options] で [Next] をクリックします。
8. [Import Metadata] で、[File] を選択します。ファイルを選択したら、前に ISE からエクスポートした XML ファイルを選択します。
9. [Metadata Summary] で [Next] をクリックします。
10. [General Information Page] の [Connection Name] に名前を入力し( ISEsponsorPortal など)、[Next] をクリックします。
11. [Browser SSO] で [Configure Browser SSO] をクリックし、[SAML Profiles] でオプションをオンにして、[Next] をクリックします。
12. [Assertion Lifetime] で [Next] をクリックします。
13. [Assertion Creation] で [Configure Assertion Creation] をクリックします。
14. [Identity Mapping] で [Standard] を選択し、[Next] をクリックします。
15. [Attribute Contract] > [Extend the Contract] で mail 属性と memberOf 属性を入力し、[Add] をクリックします。 次に [Next] をクリックします。
注: ISE による正しいスポンサー グループ マッピングはこれらの属性に基づいており、適切な通知機能に電子メールが必要になるため、この手順は重要です。
16. [Authentication Source Mapping] で [Map New Adapter Instance] をクリックします。
17. [Adapter Instance] で [HTML Form Adapter] を選択します。 [Next] をクリックします。
18. [Mapping Method] で 2 番目のオプションを選択し、[Next] をクリックします。
19. [Attribute Sources & User Lookup] で [Add Attribute Source] をクリックします。
20. [Data Store] に説明を入力し、[Active Data Store] から LDAP 接続インスタンスを選択して、このディレクトリ サービスのタイプを定義します。 Data Stores がまだ設定されていない場合は、[Manage Data Stores] をクリックし、新しいインスタンスを追加します。
21. [LDAP Directory Search] で、ドメインの LDAP ユーザ ルックアップ用に [Base DN] を定義し、[Next] をクリックします。
注: LDAP ユーザのルックアップ中にベース DN が定義されるため、この手順は重要です。 誤ってベース DN が定義されると、エラー「Object Not found in LDAP schema」が発生します。
22. [LDAP Filter] に文字列 sAMAccountName=${username} を追加し、[Next] をクリックします。
23. [Attribute Contract Fulfillment] でオプションを選択し、[Next] をクリックします。
24. [Summary] セクションで設定を確認し、[Done] をクリックします。
25. [Attribute Sources & User lookup] に戻り、[Next] をクリックします。
26. [Failsafe Attribute Source] で [Next] をクリックします。
27. [Attribute Contract Fulfillment] でオプションを選択し、[Next] をクリックします。
27. [Summary] セクションで設定を確認し、[Done] をクリックします。
28. [Authentication Source Mapping] に戻り、[Next] をクリックします。
29. [Summary] セクションで設定を確認したら、[Done] をクリックします。
30. [Assertion Creation] に戻り、[Next] をクリックします。
31. [Protocol Settings] で [Configure Protocol Settings] をクリックします。
この時点で、3 つのエントリが入力されているはずです。 [Next] をクリックします。
32. [SLO Service URLs] で [Next] をクリックします。
33. [Allowable SAML Bindings] でオプション [ARTIFACT] と [SOAP] をオフにし、[Next] をクリックします。
34. [Signature Policy] で [Next] をクリックします。
35. [Encryption Policy] で [Next] をクリックします。
36. [Summary] ページで設定を確認し、[Done] をクリックします。
37. [Browser SSO] > [Protocol settings] に戻り、[Next] をクリックします。設定を確認し、[Done] をクリックします。 これにより、[Browser SSO] タブに戻ります。 [Next] をクリックします。
38. [Credentials] で [Configure Credentials] をクリックし、IdP と ISE 間の通信に使用する署名証明書を選択したら、オプション [Include the certificate in the signature] をオンにします。 次に [Next] をクリックします。
注: 設定済みの証明書がない場合、[Manage Certificates] をクリックし、表示されるメッセージに従って IdP と ISE 間の通信に使用する自己署名証明書を生成します。
39. [Summary] ページで設定を確認し、[Done] をクリックします。
40. [Credentials] タブに戻り、[Next] をクリックします。
41. [Activation & Summary] で [Connection Status ACTIVE] を選択し、残りの設定を確認したら、[Save] をクリックします。
1. PingFederate 管理コンソールで、[Server Configuration] > [Administrative Functions] > [Metadata Export] に移動します。サーバが複数のロール(IdP と SP)に対して設定されている場合は、[I am the Identity Provider(IdP)] オプションを選択します。 [Next] をクリックします。
2. [Metadata] モードで [Select Information to Include In Metadata Manually] を選択します。 [Next] をクリックします。
3. [Protocol] で [Next] をクリックします。
4. [Attribute Contract] で [Next] をクリックします。
5. [Signing Key] で事前に接続プロファイルで設定された証明書を選択します。 [Next] をクリックします。
6. [Metadata Signing] で署名証明書を選択し、[Include this certificate's public key in the key info element.] をオンにします。 [Next] をクリックします。
7. [XML encryption certificate] で [Next] をクリックします。 ここでの暗号化を適用するオプションは、ネットワーク管理に依存します。
8. [Summary] セクションで [Export] をクリックし、生成したメタデータ ファイルを保存したら、[Done] をクリックします。
9. ISE で、[Administration] > [Identity Management] > [External Identity Sources] > [SAML Id Providers] > [PingFederate] に移動します。
10. [Identity Provider Config] をクリックして [Browse] をクリックし、Pingfederate メタデータのエクスポート操作で保存されたメタデータをインポートします。
11. [Group Membership Attribute] で [Groups] タブを選択し、memberOf を追加したら、[Add] をクリックします。
12. [Name in Assertion] で、memberOf 属性が LDAP 認証で取得される際に IdP が返す必要がある [Distinguished Name] を追加します。このグループは、スポンサー グループにリンクされます。
DN と [Name in ISE] を追加したら、[OK] をクリックします。
13. [Attributes] タブを選択し、[Add] をクリックします。 この手順では、属性「mail」を追加します。 この属性は SAML 認証に含まれ、 結果は IdP から渡されます(Active Directory のそのユーザ オブジェクトの mail 属性に基づく)。
注: 保留ステータスにある任意のアカウントを自己登録したフローからマッピングするには、ISE でスポンサーのセッションにリンクされた電子メールを処理できる必要があるため、この手順は重要です。 この手順を行わないと、「送信先ユーザ」の電子メールが有効なスポンサー セッションにマッピングされないため、アカウントの状態が安定しません。 これは電子メール通知を行う場合にも重要な手順です。
14. [Advanced] タブで次の設定を選択します。
注: このセクションでは、ldP サーバのログアウト要求に email 属性を含めるよう ISE に指定します。 これは、スポンサー ユーザがポータルから手動でログオフする場合に重要です。
15. [Save] をクリックします。
16. この手順では、管理者は IdP で取得した Active Directory グループをスポンサー グループにマッピングします。 [Work Centers] > [Guest Access] > [Configure] > [Sponsor Groups] > [ALL_ACCOUNTS] に移動します(または該当するグループを選択)。 [Members] をクリックし、前のステップでマッピングした [PingFederate: Group] を選択して、[Selected User Groups] 列に追加します。 次に [OK] をクリックします。
17. 自己登録したフローが設定されると、アカウントが承認を保留します。 この場合、[Approve and view requests from self-registered guests] を選択し、[Only pending accounts assigned to this sponsor] を選択すると、オブジェクトの電子メール アドレスが AD であり、Mail 属性を使用して IdP サーバを介して ISE のスポンサー ID に転送されることを簡単に確認できます。
18. [Save] をクリックします。 これで、ISE の設定は終了です。
2. Active Directory のクレデンシャルを入力し、[Sign On] をクリックします。 IdP のログオン画面により ISE のスポンサー ポータルで最初の AUP にリダイレクトされます。
この時点で、スポンサー ユーザはこのポータルへのフル アクセス権が必要です。
3. シングル サインオンを確認します。 「ポータル テスト URL」機能を使用する場合に SSO が設定されていないと、毎回 ISE でスポンサーのクレデンシャルを求められるはずです。
ポータル テスト URL リンクでスポンサー ポータルを起動します。 ISE のスポンサー URL がすばやく IdP URL に切り替わり、セッション ステータスが検証されます。セッション トークンが確認されると、クライアントはスポンサー ポータルに再度リダイレクトされます。クレデンシャルを入力する必要はありません。
4. email 属性が Active Directory オブジェクトから IdP ISE に正しくに渡されることを確認します。 スポンサー ポータルで新しいアカウントを作成し、[Notify] オプションを選択する方法が最も簡単です。 電子メールが正しく取得されると、[Sponsor's Email Address] フィールドに表示されます。
5. ログアウト機能を確認します。 この手順は、スポンサーのログアウトによりトークン セッションが Identity Server 側で終了するようにトリガーされることを統合で確認するために不可欠です。 スポンサー ポータルからサイン アウトし、次回ユーザがスポンサー ポータルにアクセスを試行したときに、IdP 認証画面に再度リダイレクトされることを確認します。
すべての SAML 認証トランザクションは、ISE 側の ise-psc.log に記録されます。 専用コンポーネント(SAML)は [Administration] > [Logging] > [Debug Log Configuration] で該当するノードを選択し、SAML コンポーネントをデバッグ レベルに設定します。
CLI から ISE にアクセスし、「show logging application ise-psc.log tail」を実行して SAML イベントをライブで監視することも、ise-psc.log をダウンロード([Operations] > [Troubleshoot] > [Download Logs] > [Select the ISE node] > [Debug Logs] タブで ise-psc.log をクリック)してさらに詳しく分析することもできます。
通常、最初の認証ログは次のようになります。
2016-06-13 10:18:58,560 DEBUG [http-bio-14.36.157.210-8443-exec-7][] cpm.saml.framework.impl.SAMLFacadeImpl -::::- SAML request - spUrlToReturnTo:https://torsponsor21.rtpaaa.net:8443/sponsorportal/SSOLoginResponse.action 2016-06-13 08:39:36,925 DEBUG [http-bio-14.36.157.210-8443-exec-7][] cpm.saml.framework.impl.SAMLFacadeImpl -::::- SAML Response: statusCode:urn:oasis:names:tc:SAML:2.0:status:Success 2016-06-13 08:39:36,925 DEBUG [http-bio-14.36.157.210-8443-exec-7][] cpm.saml.framework.impl.SAMLAttributesParser -::::- [parseAttributes] Found attribute name : mail 2016-06-13 08:39:36,925 DEBUG [http-bio-14.36.157.210-8443-exec-7][] cpm.saml.framework.impl.SAMLAttributesParser -::::- [parseAttributes] Delimeter not configured, Attribute=<mail> add value=<antontor@rtpaaa.net> 2016-06-13 08:39:36,925 DEBUG [http-bio-14.36.157.210-8443-exec-7][] cpm.saml.framework.impl.SAMLAttributesParser -::::- [parseAttributes] Found attribute name : memberOf 2016-06-13 08:39:36,925 DEBUG [http-bio-14.36.157.210-8443-exec-7][] cpm.saml.framework.impl.SAMLAttributesParser -::::- [parseAttributes] Delimeter not configured, Attribute=<memberOf> add value=<CN=TOR,DC=rtpaaa,DC=net>
最初のログイン イベント後、ユーザがスポンサー ポータルにアクセスするたびに、ISE でアサーション情報が取得され、そのトークンが引き続きアクティブであることが確認されることがわかります。 結果は次のようになります。
2016-06-13 08:49:28,638 DEBUG [http-bio-14.36.157.210-8443-exec-4][] cpm.saml.framework.validators.WebSSOResponseValidator -::::- Validating response 2016-06-13 08:49:28,638 DEBUG [http-bio-14.36.157.210-8443-exec-4][] cpm.saml.framework.validators.WebSSOResponseValidator -::::- Validating assertion 2016-06-13 08:49:28,638 DEBUG [http-bio-14.36.157.210-8443-exec-4][] cpm.saml.framework.validators.AssertionValidator -::::- Assertion issuer succesfully validated 2016-06-13 08:49:28,638 DEBUG [http-bio-14.36.157.210-8443-exec-4][] cpm.saml.framework.validators.AssertionValidator -::::- Authentication statements succesfully validated 2016-06-13 08:49:28,638 DEBUG [http-bio-14.36.157.210-8443-exec-4][] cpm.saml.framework.validators.AssertionValidator -::::- Subject succesfully validated 2016-06-13 08:49:28,638 DEBUG [http-bio-14.36.157.210-8443-exec-4][] cpm.saml.framework.validators.AssertionValidator -::::- Conditions succesfully validated 2016-06-13 08:49:28,638 DEBUG [http-bio-14.36.157.210-8443-exec-4][] cpm.saml.framework.impl.SAMLFacadeImpl -::::- SAML Response: validation succeeded for sponsor 2016-06-13 08:49:28,638 DEBUG [http-bio-14.36.157.210-8443-exec-4][] cpm.saml.framework.impl.SAMLFacadeImpl -::::- SAML Response: found signature on the assertion