シスコは世界中のユーザにそれぞれの言語でサポート コンテンツを提供するために、機械と人による翻訳を組み合わせて、本ドキュメントを翻訳しています。 ただし、最高度の機械翻訳であっても、専門家による翻訳のような正確性は確保されません。 シスコは、これら翻訳の正確性について法的責任を負いません。原典である英語版(リンクからアクセス可能)もあわせて参照することを推奨します。
このドキュメントでは、Security Assertion Markup Language (SAML)を使用してゲスト ポータル ユーザにシングル サインオン(SSO)機能を提供するために Cisco Identity Services Engine(ISE)バージョン 2.1 を設定する方法について説明します。
次の項目に関する知識が推奨されます。
このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づくものです。
本書の情報は、特定のラボ環境にあるデバイスに基づいて作成されたものです。 このドキュメントで使用するすべてのデバイスは、初期(デフォルト)設定の状態から起動しています。 ネットワークが稼働中の場合は、適用される設定が及ぼす潜在的な影響を十分に理解しておく必要があります。
SAML は、セキュリティ ドメイン間で認証および認可データを交換するための XML ベースの標準です。
SAML の仕様は、次の 3 つのロールを定義します。 プリンシパル(ゲスト ユーザ)、ID プロバイダー(IdP)(PingFederate サーバ)、およびサービス プロバイダー(SP)(ISE)の 3 つのロールが定義されています。
一般的な SAML SSO フローでは、SP は、IdP から ID アサーションを要求し、取得します。 ISE は、この結果に基づいてポリシー判断を実行できます。これは、ISE が使用できる設定可能な属性(つまり、AD オブジェクトに関連付けられたグループおよび電子メール アドレス)を IdP が含むことができるためです。
ヒント: CWA フローの設定例については、このドキュメントの最後にある「関連情報」の項を参照してください。
2. クライアントが接続し、セッションが ISE に対して認証されます。 ネットワーク アクセス デバイス(NAD)が、ISE によって返されたリダイレクト属性値ペア(url-redirect-acl および url-redirect)を適用します。
3. クライアントがブラウザを開き、HTTP または HTTPS トラフィックを生成して、ISE のゲスト ポータルにリダイレクトされます。
4. ポータルでは、クライアントが、以前に割り当てられたゲスト クレデンシャル(スポンサーが作成)を入力して新しいゲスト アカウントをセルフプロビジョニングするか、クライアントの AD クレデンシャルを使用してログインすることができます(従業員ログイン)。これにより、SAML によるシングル サインオン機能が提供されます。
5. ユーザが「従業員ログイン」のオプションを選択すると、ISE が、IdP に対して、このクライアントのブラウザ セッションに関連付けられたアクティブなアサーションがあるかどうかを確認します。 アクティブ セッションがなければ、IdP はユーザ ログインを適用します。 この時点で、ユーザは、AD クレデンシャルを IdP ポータルに直接入力することを求められます。
6. IdP が LDAP によってユーザを認証し、設定可能な期間にわたってアライブ状態を維持する新しいアサーションを作成します。
注: PingFederate は、デフォルトでは、60 分のセッション タイムアウト(つまり、初期認証後 60 分以内に ISE からの SSO ログイン要求がない場合はセッションが削除される)と、480 分のセッション最大タイムアウト(つまり、このユーザに関して IdP が ISE から一定の SSO ログイン要求を受信しても、セッションは 8 時間で期限切れになる)を適用します。
アサーション セッションがアクティブであり続けている限り、従業員は、ゲスト ポータルの使用時に SSO を利用できます。 セッションがタイムアウトになると、新しいユーザ認証が IdP によって実施されます。
ここでは、ISE と PingFederate を統合するための設定手順と、ゲスト ポータルのブラウザ SSO を有効にする方法について説明します。
注: ゲスト ユーザの認証に関してはさまざまな方法とオプションがありますが、このドキュメントでは、そのすべての組み合わせを説明することはできません。 しかし、この使用例には、使用例を修正して目的の設定を正確に指定する方法について理解するのに必要な情報が含まれています。
注: これは、ユーザが使用するメイン ポータルではなく、セッション ステータスを確認するために IdP とやりとりするサブポータルです。 このポータルは「SSOSubPortal」と呼ばれます。
3. [Portal Settings] を展開し、認証方式として [PingFederate] を選択します。
4. [Identity Source Sequence] から、以前に定義した外部 SAML IdP(PingFederate)を選択します。
5. [Acceptable Use Policy(AUP)] セクションと [Post-Login Banner Page Settings] セクションを展開し、両方とも無効にします。
ポータル フローは次のとおりです。
6. 変更を保存します。
7. ゲスト ポータルに戻り、[Self-Registered Guest Portal] オプションを使用して新しいポータルを作成します。
注: これは、クライアントが認識できるプライマリ ポータルになります。 プライマリ ポータルは、SSOS サブポータルを ISE と IdP の間のインターフェイスとして使用します。 このポータルは「PrimaryPortal」と呼ばれます。
8. [Login Page Settings] を展開し、[Allow the following identity-provider guest portal to be used for login] で、以前に作成した [SSOSubPortal] を選択します。
9. [Acceptable Use Policy AUP] と [Post-login Banner Page Settings] を展開し、それらをオフにします。
この時点で、ポータル フローは次のようなものになります。
10. [Portal Customization] > [Pages] > [Login] の順に選択します。 ここで、代替ログイン オプション(アイコン、テキストなど)をカスタマイズするオプションを使用できます。
注: 右側のポータル プレビューの下に追加のログイン オプションが表示されていることに注意してください。
11. [Save] をクリックします。
以上で、両方のポータルがゲスト ポータル リストに表示されます。
3. 生成された ZIP ファイルを保存し、解凍します。 そこに含まれている XML ファイルは、後の手順で、PingFederate でプロファイルを作成するために使用されます。
注: ここからは、PingFederate の設定について説明します。 この設定は、スポンサー ポータル、MyDevices、BYOD ポータルなどの複数のソリューションで同じです (これらのソリューションについては、このドキュメントでは説明していません)。
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] ラジオ ボタンをクリックし、[Chose file] をクリックして、以前に ISE からエクスポートした XML ファイルを選択します。
9. [Metadata Summary] で、[Next] をクリックします。
10. [General Info] ページで、[Connection Name] に名前(ISEGuestWebAuth など)を入力し、[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 Contract] で、[mail] 属性と [memberOf] を入力し、[add] をクリックします。 [Next] をクリックします。
このオプションの設定により、ID プロバイダーは、Active Directory によって提供される MemberOf 属性と Email 属性を ISE に渡すことができます。ISE は、後でポリシー判定時にこれを条件として使用できます。
16. [Authentication Source Mapping] で、[Map New Adapter Instance] をクリックします。
17. [Adapter Instance] で、[HTML Form Adapter] を選択します。 [Next] をクリックします。
18. [Mapping methods] で、2 番目のオプションを選択して、[Next] をクリックします。
19. [Attribute Sources & User Lookup] で [Add Attribute Source] をクリックします。
20. [Data Store] で、説明を入力し、[ACTIVE DATA STORE] から LDAP 接続インスタンスを選択して、これがどのタイプのディレクトリ サービスかを定義します。 まだデータ ストアを設定していない場合は、[Manage Data Stores] をクリックして新しいインスタンスを追加します。
21. [LDAP Directory Search] で、ドメインの LDAP ユーザ ルックアップ用に [Base DN] を定義し、[Next] をクリックします。
注: LDAP ユーザのルックアップ中にベース DN が定義されるため、この手順は重要です。 ベース DN が正しく定義されない場合、 LDAP スキーマでオブジェクトが検出されません。
22. [LDAP Filter] で、「sAMAccountName=${username}」という文字列を追加し、[Next] をクリックします。
23. [Attribute Contract Fulfillment] で、特定のオプションを選択し、[Next] をクリックします。
24. サマリー セクションで設定を確認し、[Done] をクリックします。
25. [Attribute Sources & User lookup] に戻り、[Next] をクリックします。
26. [Failsafe Attribute Source] で [Next] をクリックします。
27. [Attribute Contract Fulfillment] で、次のオプションを選択し、[Next] をクリックします。
28. サマリー セクションで設定を確認し、[Done] をクリックします。
29. [Authentication Source Mapping] に戻り、[Next] をクリックします。
30. サマリー ページで設定を確認したら、[Done] をクリックします。
31. [Assertion Creation] に戻り、[Next] をクリックします。
32. [Protocol Settings] で、[Configure Protocol Settings] をクリックします。 この時点で、すでに 2 つのエントリが入力されています。 [Next] をクリックします。
33. [SLO Service URLs] で、[Next] をクリックします。
34. [Allowable SAML Bindings] で、[ARTIFACT] オプションと [SOAP] オプションをオフにして、[Next] をクリックします。
35. [Signature Policy] で、[Next] をクリックします。
36. [Encryption Policy] で、[Next] をクリックします。
37. サマリー ページで設定を確認し、[Done] をクリックします。
38. [Browser SSO] に戻り、[Protocol settings] で [Next] をクリックし、設定を確認して、[Done] をクリックします。
39. [Browser SSO] タブが表示されます。 [Next] をクリックします。
40. [Credentials] で、[Configure Credentials] をクリックし、IdP から ISE への通信時に使用される署名証明書を選択して、[INCLUDE THE CERTIFICATE IN THE SIGNATURE] オプションをオンにします。 次に [Next] をクリックします。
注: 設定済みの証明書がない場合は、[Manage Certificates] をクリックし、プロンプトに従って、IdP から ISE への通信時に使用する自己署名証明書を生成します。
41. サマリー ページで設定を確認し、[Done] をクリックします。
42. [Credentials] タブに戻り、[Next] をクリックします。
43. [Activation & Summary] の [Connection Status] で [ACTIVE] を選択し、残りの設定を確認して、[Done] をクリックします。
3. [Protocol] で [Next] をクリックします。
4. [Attribute Contract] で [Next] をクリックします。
5. [Signing Key] で、以前に接続プロファイルで設定した証明書を選択します。 [Next] をクリックします。
6. [Metadata Signing] で、署名証明書を選択し、[INCLUDE THIS CERTIFICATE’S PUBLIC KEY IN THE <KEYINFO> ELEMENT] をオンにします。 [Next] をクリックします。
7. [XML encryption certificate] で [Next] をクリックします。
注: ここでの暗号化を適用するオプションは、ネットワーク管理に依存します。
8. サマリー セクションで、[Export] を選択します。 生成されたメタデータ ファイルを保存し、[Done] をクリックします。
9. ISE で、[Administration] > [Identity Management] > [External Identity Sources] > [SAML Id Providers] > [PingFederate] の順に選択します。
10. [Identity Provider Config] > [Browse] の順にクリックし、PingFederate のメタデータ エクスポート操作で保存されたメタデータをインポートします。
11. [Groups] タブを選択し、[Group Membership Attribute] に [memberOf] を追加して、[Add] をクリックします。
LADP 認証から memberOf 属性が取得されたときに IdP が返す必要のある識別名(DN)を [Name in Assertion] に追加します。 今回の場合は、設定済みのグループが TOR のスポンサー グループにリンクされており、このグループの DN は次のとおりです。
DN と [Name in ISE] を追加したら、[OK] をクリックします。
12. [Attributes] タブを選択し、[Add] をクリックします。
この手順で、LDAP を介して Ping のクエリに基づいて IdP から渡された SAML トークンに含まれる「mail」属性を追加します。mail 属性には、そのオブジェクトの電子メール属性が含まれています。
注: 手順 11 と手順 12 により、ISE が IdP ログイン アクションを通じて AD オブジェクトの Email 属性と MemberOf 属性を確実に受け取るようになります。
2. [EMPLOYEE LOGIN] をクリックします。 アクティブなセッションがないため、ユーザは IdP ログイン ポータルにリダイレクトされます。
3. AD クレデンシャルを入力し、[Sign On] をクリックします。
4. IdP ログオン画面により、ユーザがゲスト ポータルの[Success]ページにリダイレクトされます。
5. この時点で、ユーザは、ゲスト ポータルに戻って [EMPLOYEE LOGIN] を選択するたびに、セッションが IdP でまだアクティブであればネットワークへのアクセスが許可されます。
SAML 認証に関する問題は、ise-psc.log に記録されます。 専用のコンポーネント(SAML)が用意されています。[Administration] > [Logging] > [Debug log Configuration] の順に選択し、問題のノードを選択して、SAML コンポーネントをデバッグ レベルに設定してください。
CLI を使用して ISE にアクセスし、show logging application ise-psc.log tail コマンドを使用して SAML イベントをモニタすることができます。また、[Operations] > [Troubleshoot] > [Download Logs] の順に選択して、ISE ノードを選択し、[Debug Logs] タブで ise-psc.log をクリックすることで、詳細な分析のためにログ ファイルをダウンロードすることもできます。
2016-06-27 16:15:39,366 DEBUG [http-bio-14.36.157.210-8443-exec-3][] cpm.saml.framework.impl.SAMLFacadeImpl -::::- SAMLUtils::isOracle() - checking whether IDP URL indicates that its OAM. IDP URL: https://14.36.147.1:9031/idp/sso.saml2 2016-06-27 16:15:39,366 DEBUG [http-bio-14.36.157.210-8443-exec-3][] cpm.saml.framework.impl.SAMLFacadeImpl -::::- SPProviderId for PingFederate is: http://CiscoISE /5b4c0780-2da2-11e6-a5e2-005056a15f11 2016-06-27 16:15:39,366 DEBUG [http-bio-14.36.157.210-8443-exec-3][] cpm.saml.framework.impl.SAMLFacadeImpl -::::- ResponseValidationContext: IdP URI: PingFederate SP URI: http://CiscoISE/5b4c0780-2da2-11e6-a5e2-005056a15f11 Assertion Consumer URL: https://14.36.157.210:8443/portal/SSOLoginResponse.action Request Id: _5b4c0780-2da2-11e6-a5e2-005056a15f11_DELIMITERportalId_EQUALS5b4c0780-2da2-11e6-a5e2-005056a15f11_SEMIportalSessionId_EQUALS309f733a-99d0-4c83-8 b99-2ef6b76c1d4b_SEMI_DELIMITER14.36.157.210 Client Address: 14.0.25.62 Load Balancer: null 2016-06-27 16:15:39,366 DEBUG [http-bio-14.36.157.210-8443-exec-3][] cpm.saml.framework.validators.BaseSignatureValidator -::::- Determine the signing certificate 2016-06-27 16:15:39,366 DEBUG [http-bio-14.36.157.210-8443-exec-3][] cpm.saml.framework.validators.BaseSignatureValidator -::::- Validate signature to SAML standard with cert:CN=14.36.147.1, OU=TAC, O=Cisco, L=RTP, C=US serial:1465409531352 2016-06-27 16:15:39,367 DEBUG [http-bio-14.36.157.210-8443-exec-3][] org.opensaml.xml.signature.SignatureValidator -::::- Creating XMLSignature object 2016-06-27 16:15:39,367 DEBUG [http-bio-14.36.157.210-8443-exec-3][] org.opensaml.xml.signature.SignatureValidator -::::- Validating signature with signature algorithm URI: http://www.w3.org/2001/04/xmldsig-more#rsa-sha256 2016-06-27 16:15:39,368 DEBUG [http-bio-14.36.157.210-8443-exec-3][] cpm.saml.framework.validators.SAMLSignatureValidator -::::- Assertion signature validated succesfully 2016-06-27 16:15:39,368 DEBUG [http-bio-14.36.157.210-8443-exec-3][] cpm.saml.framework.validators.WebSSOResponseValidator -::::- Validating response 2016-06-27 16:15:39,368 DEBUG [http-bio-14.36.157.210-8443-exec-3][] cpm.saml.framework.validators.WebSSOResponseValidator -::::- Validating assertion 2016-06-27 16:15:39,368 DEBUG [http-bio-14.36.157.210-8443-exec-3][] cpm.saml.framework.validators.AssertionValidator -::::- Assertion issuer succesfully validated 2016-06-27 16:15:39,368 DEBUG [http-bio-14.36.157.210-8443-exec-3][] cpm.saml.framework.validators.AssertionValidator -::::- Subject succesfully validated 2016-06-27 16:15:39,368 DEBUG [http-bio-14.36.157.210-8443-exec-3][] cpm.saml.framework.validators.AssertionValidator -::::- Conditions succesfully validated 2016-06-27 16:15:39,368 DEBUG [http-bio-14.36.157.210-8443-exec-3][] cpm.saml.framework.impl.SAMLFacadeImpl -::::- SAML Response: validation succeeded for guest IDPResponse : IdP ID: PingFederate Subject: guest SAML Status Code:urn:oasis:names:tc:SAML:2.0:status:Success SAML Success:true SAML Status Message:null SAML email:guest@rtpaaa.net SAML Exception:null 2016-06-27 16:15:39,368 DEBUG [http-bio-14.36.157.210-8443-exec-3][] cpm.saml.framework.impl.SAMLFacadeImpl -::::- AuthenticatePortalUser - about to call authenticateSAMLUser messageCode:null subject:guest 2016-06-27 16:15:39,375 DEBUG [http-bio-14.36.157.210-8443-exec-3][] cpm.saml.framework.impl.SAMLFacadeImpl -::::- Authenticate SAML User - result:PASSED