このドキュメントでは、Cisco ISEスポンサーポータルのSAML IDプロバイダーとしてMicrosoft Entra IDを設定する方法について説明します。
次の項目に関する知識があることが推奨されます。
このドキュメントの情報は、次のハードウェアとソフトウェアのバージョンに基づいています。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期(デフォルト)設定の状態から起動しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。

1. ISEで、Administration > Identity Management > External Identity Sources > SAML Id Providersの順に移動し、Addボタンをクリックします。
2. IDプロバイダー名を入力し、Submitをクリックして保存します。IDプロバイダー名は、図に示すように、ISEに対してのみ意味を持ちます。

1. Work Centers > Guest Access > Portals & Components > Sponsor Portalsの順に移動し、スポンサーポータルを選択します。この例では、スポンサーポータル(デフォルト)が使用されます。

2. Portal Settingsを展開し、Identity Source Sequenceで新しいSAML IDプロバイダーを選択します。スポンサーポータルの完全修飾ドメイン名(FQDN)を設定し、HTTPSポート(8445がスポンサーポータルのデフォルトです)を確認します。 [Save] をクリックします。

1. SAMLプロバイダーに戻り、サービスプロバイダー情報タブを開きます。「Includes the following portals」の下にスポンサーポータルが表示されることを確認します。ポータルはエクスポートの前に IdPにバインドされている必要があります。バインドされていない場合は、メタデータにスポンサーポータルが含まれていません。[Export] をクリックします。

2. ダウンロードしたXMLから、次の点に注意してください。
http://CiscoISE/1f789a00-ad9d-4ec0-9a47-ce4909a65db2">
MIIFUDCC...(ISE portal signing certificate)...
https://sponsor.n3tgeek.com:8445/sponsorportal/SSOLogoutResponse.action"/>
urn:oasis:names:tc:SAML:2.0:nameid-format:transient
...(additional NameIDFormat entries)...
注意:このXMLにはSSOLogoutRequest.action?portal=...URLを指定します。これは、Entra IDのログアウトURLとして使用する値ではなく、この値を使用すると、「トラブルシューティング」セクションで説明する「SSOログアウト失敗」エラーが発生します。正しい値はSSOLogoutResponse.actionで終わります。
注:新しいISEノードの登録、ノードのホスト名またはIPの変更、スポンサーポータルのFQDNの変更、ポートまたはインターフェイスの設定変更、またはロードバランサの関連付けが行われたときに、このメタデータを再エクスポートおよび再インポートしてください。IdPが古いメタデータを保持している場合、認証要求を拒否します。エクスポートされたZIPには、IdP単位の設定手順が記載されたReadmeファイルも含まれています。
XMLファイルに従います。
SingleLogoutService ResponseLocation="https://sponsor.n3tgeek.com:8445/sponsorportal/SSOLogoutResponse.action"
entityID="http://CiscoISE/1f789a00-ad9d-4ec0-9a47-ce4909a65db2"
AssertionConsumerServiceの場所="https://sponsor.n3tgeek.com:8445/sponsorportal/SSOLoginResponse.action"
AssertionConsumerServiceの場所="https://192.168.1.204:8445/sponsorportal/SSOLoginResponse.action"
AssertionConsumerServiceの場所="https://prox-ise04.n3tgeek.com:8445/sponsorportal/SSOLoginResponse.action"
注:このラボ演習では単一のISEノードを使用するため、エクスポートされたXMLにはそのノードの3つのAssertionConsumerServiceエントリ(スポンサーポータルFQDN、ノードIP、およびノードFQDN)だけが含まれます。マルチノード展開では、スポンサーポータルにサービスを提供するすべてのノードのエントリ(ポータルFQDN、および各ノードのIPとFQDN)がXMLにリストされます。 これらすべてを、1つのノードのURLだけでなく、Entra IDに応答URLとして追加します。応答URLにノードのURLがない場合、ユーザがそのノードにリダイレクトされると認証が失敗します。
1. Microsoft Entra Admin Centerにログインします。

2. 入力ID >ユーザ>新しいユーザ>新しいユーザを移動し、新しいユーザを作成し、クラウド専用のテストユーザを作成します。

注:招待されたゲストではなく、クラウドのみのメンバーユーザを使用します。ゲストはホームテナントに対して認証され、その結果NameID形式によってISEがユーザ名を抽出することが防止されます。新しいユーザは最初のサインイン時にパスワードを変更する必要があり、デフォルトのセキュリティを使用するテナントもMFA登録が必要です。確認セクションの前に両方とも1回完了してください。
1. 入力ID > 「グループ」 > 「新規グループ」 にナビゲートします。

2. グループタイプはセキュリティとして保持します。図に示すように、グループ名を設定します。

3. グループの「メンバー」ページを開き、「メンバーの追加」をクリックしてテスト・ユーザーを検索し、選択して「選択」をクリックします。

4.Group Object IDをメモします。この画面では、スポンサーグループの場合は48f07fce-26e5-41e5-a82b-ed095b32bab8です。

1. エントリID >エンタープライズアプリケーション>すべてのアプリケーション>新しいアプリケーションに移動します。

2. 「独自のアプリケーションの作成」を選択します。

3. 名前を入力し、「ギャラリー(非ギャラリー)にない他のアプリケーションを統合する」を選択して、作成をクリックします。

1. アプリケーションで、「Users and groups > Add user/group」に移動し、前に作成したグループを割り当てます。

ユーザー/グループの追加:
注:テナントがMicrosoft Entra ID Freeを使用している場合、グループ割り当ては使用できません。代わりに、テストユーザを直接割り当てます。その他の手順はすべて同一です。

1. その結果、選択したグループを使用して、アプリケーションの「ユーザーとグループ」メニューを表示する必要があります。

1. アプリケーションで、「シングルサインオンの設定」に移動します。

2. SAMLを選択し、Basic SAML Configurationの横にあるEditをクリックします。

3. Identifier(Entity ID)にISE SPメタデータXMLのentityID値を入力し、Reply URLにそこにリストされた各AssertionConsumerServiceロケーションを入力します。Logout Urlには、SingleLogoutService ResponseLocation値を使用します。サインオンURLとリレー状態を空のままにして、Saveをクリックします。

1. Attributes & Claimsの横にあるEditをクリックします。

2. 次に、グループ要求を追加します。

3. Security groups with Source attribute Group IDを選択し、Saveをクリックします。その他はすべてデフォルトのままにします。

注意: [グループ要求の名前をカスタマイズする]をオンにしないでください。 クレームの名前を変更するには、ISEグループメンバーシップ属性フィールドに同じカスタム名を入力する必要があります。このドキュメントの残りの部分では、デフォルトのクレーム名を想定しています。
4. どちらでもカスタマイズできますが、ISEのGroup Membership Attributeフィールドには同じカスタム名を入力する必要があります。たとえば、Entra IDに「Sponsor Group」と入力した場合、ISEフィールドには正確に「Sponsor Group」と入力する必要があります。Entra IDでは、設定は次のようになります。

5. グループの請求名をメモします。

1. SAML署名証明書でフェデレーションメタデータXMLに対してダウンロードをクリックします。

2. ダウンロードされたフェデレーションメタデータは、Microsoftによって署名され、IdPエンティティID、SSO/SLOエンドポイント、トークン署名証明書(ここでは省略)など、ISEが必要とするすべての情報を含んでいます。
...(signed by Microsoft)...
...(WS-Fed RoleDescriptor sections — not used by ISE)...
MIIC8DCC...(Entra ID token signing certificate)...
3. インポート(ステップ4)時に、これらのフィールドがシングルサインオン/サインアウトURLおよびアイデンティティプロバイダーの「設定」タブの「署名証明書」エントリになります。
注:Entra IDトークン署名証明書は3年間有効です。データが循環する場合は、フェデレーションメタデータXMLを再度ダウンロードしてISEに再インポートします。そうしないと、SSOが突然動作しなくなります。証明書に通知電子メールを設定して、有効期限の警告を受け取ります。
1. Administration > Identity Management > External Identity Sources > SAML Id Providers > [your provider]の順に移動し、Identity Provider Configタブを開いて、Choose Fileをクリックし、フェデレーションメタデータXMLを選択して、Saveをクリックします。シングルサインオン/サインアウトURLと署名証明書が入力されます。

注:現在のISEがエクスポートするSPメタデータは、WantAssertionsSigned="false"(古いリリースではtrueと宣言)を宣言しています。この属性は、デフォルトではオフになっている[Advanced Settings]タブの[Require Assertions Signed]チェックボックスを追跡するようになりました。これは、署名されていないアサーションが受け入れられるという意味ではありません。ISEでは、両方のチェックボックスをオフにした場合でも、SAML応答またはアサーションに少なくとも1つのシグニチャが常に必要です。
オプションの[詳細設定]タブ: [ID属性] (既定: [サブジェクト名])は、ユーザー名の取得元を選択します。スポンサーが承認待ちのゲストのリストをフィルター処理する場合は、[電子メール]属性を構成する必要があります。署名認証要求は、要求の署名を制御し、前のタブの読み取り専用[認証要求に署名を要求する]チェックボックスよりも優先します。

1. Groupsタブを開き、Group Membership Attributeで、手順3:
http://schemas.microsoft.com/ws/2008/06/identity/claims/groups
2. Addをクリックします。「アサーションの名前」に、手順2で取得したグループ・オブジェクトIDを入力します(この値は正確に一致する必要があります)。 Name in ISEで、意味のあるローカルラベル(ISEメニュー内でのみ使用される自由形式のエイリアス)を入力します。 OKをクリックし、次にSaveをクリックします。

3. これにより、Entra内のグループとISEで使用できるグループ名の間のマッピングが作成されます。
1. Work Centers > Guest Access > Portals & Components > Sponsor Groupsの順に移動し、マッピングするスポンサーグループを選択します。この例では、ALL_ACCOUNTS(デフォルト)です。

2. Members...をクリックし、IdP:Name in ISEエントリをSelected User Groupsに移動し、OK、Saveの順にクリックします。

注:スポンサーには、一致するすべてのスポンサーグループの権限が割り当てられます。権限を累積する必要がなければ、Entra IDグループを1つのスポンサーグループにマッピングします。
1. ポータルテストURL リンクからスポンサーポータルを起動します。ISEはMicrosoftサインインページにリダイレクトし、テストユーザクレデンシャルで認証します。

2. 認証後、ブラウザがポータルに戻り、AUPが表示されます。承認後、スポンサーはマッピングされたスポンサーグループ権限を持ちます。

3. ウェルカムメニューからのサインアウトにより、ポータルセッションとSSOセッションの両方が正常に終了します。

IdPで開始されるSSOはサポートされていません。Cisco ISEはIdPで開始されるSAMLをサポートしていません。Microsoft Entra IDのTest Single Sign-On(シングルサインオンのテスト)ボタン(「Test this application」)は、この統合では常に失敗します。IdPによって開始されたPOSTがSSOLoginResponse.actionに到達し、ポータルがHTTP [400] Bad Request(「The request is invalid due to malformed syntax or invalid data」)を返します。 これは正常な動作であり、設定ミスではありません。スポンサーポータル側から常に確認します。

SAML認証は、ブラウザとMicrosoft Entra IDの間で発生します。ISEが関与する前に、IdPから直接エラーが発生する可能性があります。
問題1:パスワードが正しくない

Microsoftサインインページにエラーが表示されます。ユーザデータがISEに到達していません。ISE側では、ログにアウトバウンドレッグだけが表示され、何も表示されません。guest.logでは、ポータルフローがSSO_LOGINに到達し、SAML要求を作成し、ブラウザをIdPにリダイレクトします。そのため、セッションが戻ることはありません。
01:20:46 DEBUG StepExecutor -- StepTran for Step=INIT => tranEnum=PROCEED_SSO, toStep=SSO_LOGIN
01:20:46 DEBUG SSOLoginConfigHandler -- Redirect to IDP:
https://login.microsoftonline.com//saml2?SAMLRequest=jZNRc6IwFIX...
01:20:46 INFO ISEPortalControllerUtils -- forwarding to: pages/ssoLoginRequest.jsp
(the portal session ends here -- no SSOLoginResponse is ever POSTed back)
ise-psc.logは、SAMLフレームワーク側から同じ内容を通知します。
01:20:46 DEBUG SAMLFacadeImpl -- SAML request - providerId (as should be found in IdP
configuration): http://CiscoISE/1f789a00-ad9d-4ec0-9a47-ce4909a65db2
01:20:46 DEBUG SAMLFacadeImpl -- SAML request - spUrlToReturnTo:
https://sponsor.n3tgeek.com:8445/sponsorportal/SSOLoginResponse.action
01:20:46 DEBUG SAMLFacadeImpl -- SignAuthenRequest configuration is - off
01:20:46 DEBUG MessageComposer -- local cert is null, request won't be signed
(capture ends here -- ISE never receives a SAML response)
SAML応答が発行される前に、エントリIDによってサインインがブロックされます。

nguest.logには準備中のリダイレクトだけが表示され、ise-psc.logにはSAMLアクティビティがまったく表示されません。障害はIdP側で発生します。
16:50:21 INFO ISEPortalControllerUtils -- forwarding to: pages/ssoLoginRequest.jsp
(nothing follows -- the user never returns from the IdP)
修正:ユーザまたはグループをエンタープライズアプリケーションに割り当てます(ステップ2.4)。

これは、Entra IDのログアウトURLがSSOLogoutRequest.action?portal=...で設定された場合に発生します。SSOLogoutResponse.actionの代わりにURLを使用します。guest.logではログアウトが開始され、返された応答を処理できません。
16:54:12 INFO ISEPortalControllerUtils -- forwarding to: /pages/ssoLogoutRequest.jsp
16:54:13 ERROR SponsorSSOLogin -- SAML Response is invalid or subject is NULL!
16:54:13 INFO ISEPortalControllerUtils -- forwarding to: pages/error.jsp
修正:基本SAML設定のログアウトURLを修正してください。
Entra IDトークン(XID)署名証明書が循環(3年間のライフタイム)して新しい証明書がアクティブ化され、フェデレーションメタデータXMLがISEに再インポートされない場合、いずれの側でも目に見えて変更されていなくても、各ログインがポータルで一般的な「Authentication failed」で失敗します。

ise-psc.logには、実際の原因が明示的に示されます。
16:58:30,429 WARN apache.xml.security.signature.XMLSignature -- Signature verification failed.
16:58:30,430 ERROR cpm.saml.framework.impl.SAMLFacadeImpl -- SAML Response: processing failed:
com.cisco.cpm.saml.exceptions.SAMLException: Assertion signature did not validate
against the IdP signature certificate
Caused by: org.opensaml.xml.validation.ValidationException: Signature did not validate
against the credential's key
修正:Entra IDからフェデレーションメタデータXMLを再ダウンロードし、ISEに再インポートします。
ポータルSSOセッションアイドルタイムアウトは、デフォルトで5分です(ポータルごとに設定可能で、このラボでは10を使用します)。 「Optional Content」フィールドを使用して、ポータルのエラーページに「Sign On Again」ボタンを追加できます。
SAMLメッセージはブラウザを通過するため、ブラウザ開発者ツール(F12 > Network Tab)は交換全体を表示します。Networkタブを開いてログインを再現し、SSOLoginResponse.actionへのPOSTを探します。 ブラウザがSAMLアサーションをISEに配信する瞬間:

コンポーネントのログレベルをISEで変更する必要があります。Operations > Troubleshoot > Debug Wizard > Debug Log Configurationの順に移動します。
| コンポーネント名 | ログ レベル | ログファイル名 |
| ゲストアクセス | デバッグ | ゲスト。ログ |
| ポータルWebアクション | デバッグ | ゲスト。ログ |
| opensaml | デバッグ | ise-psc.log |
| saml | デバッグ | ise-psc.log |
正しいフロー実行時のデバッグのワーキングセット(ise-psc.log):
1. ユーザはスポンサーポータルからIdP URLにリダイレクトされます。
2026-08-27 01:55:58,021 DEBUG [admin-http-pool3][[]] guestaccess.apiservices.portal.view.PortalConfigConverter -
::::- hostName =sponsor.n3tgeek.com will be applied to URL!
reqUtl =https://sponsor.n3tgeek.com:8445/sponsorportal/PortalSetup.action
2026-08-27 01:55:58,036 DEBUG [https-jsse-nio-192.168.1.204-8445-exec-2][[]]
cisco.ise.portalwebaction.utils.PortalSessionUtil -::::- Portal URL:
https://sponsor.n3tgeek.com:8445/sponsorportal/PortalSetup.action
2026-08-27 01:55:58,037 DEBUG cisco.ise.portalwebaction.actions.BasePortalAction -::::-
Action com.cisco.ise.portalwebaction.actions.PortalSetupAction Complete for request /sponsorportal/PortalSetup.action
2. ブラウザからSAML応答を受信します。
2026-08-27 01:56:19,384 DEBUG cpm.saml.framework.impl.SAMLFacadeImpl -::::-
SAML Response: statusCode:urn:oasis:names:tc:SAML:2.0:status:Success
IdP URI: https://sts.windows.net//
SP URI: http://CiscoISE/1f789a00-ad9d-4ec0-9a47-ce4909a65db2
Assertion Consumer URL: https://sponsor.n3tgeek.com:8445/sponsorportal/SSOLoginResponse.action
3. 属性(アサーション)解析が開始されました:
cpm.saml.framework.validators.SAMLSignatureValidator -::::- no signature in response
cpm.saml.framework.validators.SAMLSignatureValidator -::::- Validating signature of assertion
org.opensaml.xml.signature.SignatureValidator -::::- Signature validated with key from supplied credential
cpm.saml.framework.validators.SAMLSignatureValidator -::::- Assertion signature validated succesfully
cpm.saml.framework.validators.AssertionValidator -::::- Conditions succesfully validated
4. ユーザ名とグループの属性(48f07fce-26e5-41e5-a82b-ed095b32bab8)がアサーションから抽出され、認証にパスします。
SAMLUtils::getUserNameFromAssertion: username value from Subject is=[alice@lab.n3tgeek.com]
loginInfo: ... format=urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
[cacheGroupAttr] Adding to cache ExternalGroup values=<48f07fce-26e5-41e5-a82b-ed095b32bab8>
AuthenticatePortalUser - added user groups from SAML response to AuthenticationResult,
all retrieved groups:[48f07fce-26e5-41e5-a82b-ed095b32bab8]
Authenticate SAML User - result:PASSED
5. 認証結果にユーザグループが追加され、ポータルで使用できるようになり、SAML認証が渡されます。
2020-09-16 10:44:11,320 DEBUG [https-jsse-nio-10.48.23.86-8445-exec-8][] cpm.saml.framework.impl.SAMLFacadeImpl -::::- AuthenticatePortalUser - added user groups from SAML response to AuthenticationResult, all retrieved groups:[f626733b-eb37-4cf2-b2a6-c2895fd5f4d3]
2020-09-16 10:44:11,320 DEBUG [https-jsse-nio-10.48.23.86-8445-exec-8][] cpm.saml.framework.impl.SAMLFacadeImpl -::::- Authenticate SAML User - result:PASSED
スポンサーログインが正常に行われたときにISEインターフェイス(Operations > Troubleshoot > Diagnostic Tools > TCP Dump)で取得されたキャプチャには、2種類のトラフィックだけが表示されます。ポータルFQDNのクライアントDNS解決、およびクライアントからポータルへのTLSセッション(ポート8445、ポータルFQDNはTLSサーバ名表示(SNI)として表示)。
| 会話 | 方向 | 概要 |
|---|---|---|
| クライアント<-> ISE:8445(TLS、SNI =ポータルFQDN) | ブラウザ – > PSN | ポータルページ+ SAML POST(ACS) |
| client -> DNS:ポータルFQDN | ブラウザ – >リゾルバ | ポータルの名前解決 |
| login.microsoftonline.comへのトラフィックがない | — | IdPレッグがISEに接触しない |
すべてが暗号化されていても、TLS Client Helloはクリアテキストで送信され、ポータルFQDNをサーバ名表示(SNI)として伝送します。 これは、TCPストリームとスポンサーポータルを正しく一致させるためのキャプチャ内の唯一の場所です。
Frame 96: 1981 bytes on wire
Internet Protocol Version 4, Src: 192.168.1.162 (client), Dst: 192.168.1.204 (ISE PSN)
Transmission Control Protocol, Src Port: 43395, Dst Port: 8445
Transport Layer Security
TLSv1 Record Layer: Handshake Protocol: Client Hello
Handshake Protocol: Client Hello
Extension: server_name (len=24)
Server Name Indication extension
Server Name: sponsor.n3tgeek.com
Extension: supported_versions (len=7) TLS 1.3, TLS 1.2
8445 sponsor.n3tgeek.com (x12 -- the portal leg, to ISE)
443 login.microsoftonline.com (the IdP leg -- never seen on ISE)
443 aadcdn.msauth.net (Microsoft sign-in page assets)
443 login.live.com / login.microsoft.com
(unrelated background traffic omitted for clarity)
注:ISEは、スポンサー認証中にEntra IDと通信することはありません。SAML要求と応答は、ユーザブラウザ(リダイレクトとPOSTのバインディング)を通過します。 つまり、ポータルSSOが機能するためにISEノードがMicrosoftへのアウトバウンド接続を必要とせず、トラブルシューティングの際にIdPレッグをISEではなくクライアントでキャプチャする必要があります。
| 改定 | 発行日 | コメント |
|---|---|---|
2.0 |
02-Oct-2026
|
スペル、文法、読みやすさを考慮したセクションへの水平線の挿入、CCWエラーの修正、代替テキストの更新を更新。 |
1.0 |
19-Oct-2020
|
初版 |