本文檔介紹如何將Microsoft Entra ID配置為Cisco ISE發起人門戶的SAML身份提供程式。
思科建議您瞭解以下主題:
本文件中的資訊是以下列硬體與軟體版本為依據:
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。

1.在ISE上,導航到Administration > Identity Management > External Identity Sources > SAML Id Providers,然後點選Add按鈕。
2.輸入ID提供方名稱,然後按一下提交以儲存它。ID Provider Name僅對ISE有效,如下圖所示。

1.定位至工作中心>訪客訪問>門戶和元件>發起人門戶,然後選擇發起人門戶。在此示例中,使用保證人門戶(預設)。

2.展開Portal Settings,然後在身份源序列中選擇新的SAML身份提供方。為發起人門戶配置完全限定域名(FQDN),並注意HTTPS埠(8445是發起人門戶的預設設定)。 按一下「Save」。

1.導航回到SAML提供方,然後開啟「服務提供方資訊」選項卡。確認發起人門戶出現在「包括以下門戶」下 — 在匯出之前,門戶必須繫結到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配置說明的自述檔案。
根據XML檔案:
SingleLogoutService ResponseLocation="https://sponsor.n3tgeek.com:8445/sponsorportal/SSOLogoutResponse.action"
entityID="http://CiscoISE/1f789a00-ad9d-4ec0-9a47-ce4909a65db2"
AssertionConsumerService Location="https://sponsor.n3tgeek.com:8445/sponsorportal/SSOLoginResponse.action"
AssertionConsumerService Location="https://192.168.1.204:8445/sponsorportal/SSOLoginResponse.action"
AssertionConsumerService Location="https://prox-ise04.n3tgeek.com:8445/sponsorportal/SSOLoginResponse.action"
附註:本實驗使用單個ISE節點,因此匯出的XML僅包含節點三個AssertionConsumerService條目:發起人門戶FQDN、節點IP和節點FQDN。在多節點部署中,XML列出為發起人門戶服務的每個節點的條目(門戶FQDN,以及每個節點的IP和FQDN)。 將所有這些URL新增為Entra ID中的回覆URL,而不僅僅是某個節點的URL。如果回覆URL中缺少節點的URL,則當使用者重定向到該節點時,身份驗證失敗。
1.登入到Microsoft Entra管理中心。

2.定位至Entra ID >使用者>新使用者>建立新使用者,然後建立僅雲測試使用者。

附註:使用僅雲成員使用者而不是邀請訪客 — 訪客根據其主租戶進行身份驗證,產生的NameID格式會阻止ISE提取使用者名稱。新使用者必須在首次登入時更改密碼,具有安全預設值的租戶還需要註冊MFA;在「驗證」部分之前完成這兩項。
1.定位至Entra ID >「組」>「新建組」。

2.將Group type保留為Security。設定群組名稱,如下圖所示:

3.開啟「組成員」頁,按一下「新增成員」,搜尋測試使用者,選擇它,然後按一下選擇。

4.記下Group Object ID,在此螢幕中,發起人組的Group為48f07fce-26e5-41e5-a82b-ed095b32bab8。

1.定位至Entra ID > Enterprise apps > All applications > New application。

2.選擇建立自己的應用程式。

3.輸入名稱,選擇「集成您在相簿(非相簿)中找不到的所有其他應用程式」,然後單擊「創建」。

1.在應用程式中,導航到使用者和組>新增使用者/組,然後分配先前建立的組。

新增使用者/組:
附註:如果您的租戶使用Microsoft Entra ID Free,則組分配不可用 — 改為直接分配測試使用者;每一步都是相同的。

1.因此,應用程序的「用戶和組」選單必須填充所選的組。

1.在應用程式中,導航至設定單一登入。

2.選擇SAML,然後按一下基本SAML配置旁邊的編輯。

3.使用ISE SP元資料XML中的entityID值填充識別符號(實體ID),並使用其中列出的每個AssertionConsumerService位置填充回覆URL。對於註銷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上的Download。

2.下載的聯盟後設資料由Microsoft簽名並包含ISE所需的一切;idP實體ID、SSO/SLO終結點和令牌簽名證書(此處縮寫):
...(signed by Microsoft)...
...(WS-Fed RoleDescriptor sections — not used by ISE)...
MIIC8DCC...(Entra ID token signing certificate)...
3.在匯入時(步驟4),這些欄位將成為單點登入/註銷URL和「身份提供程式配置」頁籤中的「簽名證書」條目。
附註:Entra ID令牌簽名證書有效期為三年。當其旋轉時,再次下載聯合後設資料XML並將其重新匯入到ISE中,或SSO突然停止工作。配置證書上的通知電子郵件以獲得過期警告。
1.導航到管理>身份管理>外部身份源> SAML Id提供程式> [您的提供程式],開啟身份提供程式配置頁籤,按一下選擇檔案,選擇聯合後設資料XML,然後按一下儲存。單點登入/註銷URL和簽名證書將填充。

附註:當前ISE發行版匯出的SP後設資料宣告為WantAssertionsSigned="false"(較早發行版宣告為true);現在,該屬性位於「高級設定」頁籤中的「要求簽名斷言」覈取方塊,預設情況下未選中該覈取方塊。這並不意味著接受未簽名的斷言。ISE始終要求在SAML響應或斷言上至少有一個簽名,即使這兩個覈取方塊都未選中。
可選的「高級設定」選項卡:身份屬性(預設:使用者名稱)選擇使用者名稱的使用位置;如果發起人過濾待審批的訪客清單,則必須配置「電子郵件」屬性;Sign Authentication Request控制請求簽名,並優先於上一個頁籤的只讀「Want Authentication Requests Signed」覈取方塊。

1.開啟Groups頁籤,然後在Group Membership Attribute中貼上步驟3中的宣告名稱:
http://schemas.microsoft.com/ws/2008/06/identity/claims/groups
2.按一下Add。在Name in Assertion中,輸入步驟2中捕獲的組Object ID(該值必須完全匹配)。 在ISE的名稱中,輸入任何有意義的本地標籤(僅在ISE選單內使用的自由格式別名)。 按一下「OK」,然後「Save」。

3.這將建立Entra中的組與可在ISE上使用的組名稱之間的對映。
1.定位至工作中心>訪客訪問>門戶和元件>發起人組,然後選擇要對映的發起人組。在此示例中,ALL_ACCOUNTS(預設值)。

2.按一下Members...,將ISE條目中的IdP:Name移動到Selected User Groups,按一下OK,然後Save。

附註:向發起人分配所有匹配發起人組的許可權。將Entra ID組對映到單個發起人組,除非需要累積許可權。
1.從Portal Test URL(門戶測試URL)鏈接啟動發起人門戶。ISE重定向到Microsoft登入頁面;使用測試使用者憑證進行身份驗證。

2.身份驗證後,瀏覽器返回到門戶並顯示AUP。接受後,發起人具有對映的發起人組許可權。

3.從「歡迎使用」選單註銷將門戶會話和SSO會話乾淨結束。

不支援IdP啟動的SSO:思科ISE不支援IdP啟動的SAML。Microsoft Entra ID中的Test Single Sign-On按鈕(「測試此應用程式」)始終無法進行此整合 — IdP啟動的POST到達SSOLoginResponse.action,並且門戶返回HTTP [400] Bad Request(「由於語法錯誤或資料無效,請求無效」)。 這是預期行為,不是配置錯誤。始終從發起人門戶端進行驗證。

在瀏覽器和Microsoft Entra ID之間進行SAML身份驗證;在涉及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響應之前,Entra 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=...時,會發生這種情況。URL而不是SOLogoutResponse.action。在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令牌簽名證書旋轉(三年生存期)時,會啟用新證書,並且聯合後設資料XML不會重新匯入ISE,每次登入都會在門戶上使用通用「身份驗證失敗」失敗,即使兩端都沒有明顯更改時。

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分鐘)。可以通過可選內容欄位將「再次登入」按鈕新增到門戶錯誤頁面。
由於SAML消息通過瀏覽器傳輸,因此瀏覽器開發工具(F12 > Network Tab)會顯示整個交換。開啟「網路」頁籤後重現登入資訊,並查詢POST to SOLoginResponse.action。在瀏覽器將SAML斷言傳送給ISE的那一刻:

必須在ISE上更改元件的日誌級別。導覽至Operations > Troubleshoot > Debug Wizard > Debug Log Configuration。
| 元件名稱 | 日誌級別 | 日誌檔名 |
| 訪客接入 | 偵錯 | guest.log |
| portal-web-action | 偵錯 | guest.log |
| 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介面(操作>故障排除>診斷工具> TCP轉儲)上捕獲的流量僅顯示兩種流量。門戶FQDN的客戶端DNS解析,以及埠8445上從客戶端到門戶的TLS會話,其中門戶FQDN作為TLS伺服器名稱指示(SNI)可見。
| 對話 | 方向 | 它是什麼 |
|---|---|---|
| 客戶端<-> ISE:8445(TLS,SNI =門戶FQDN) | 瀏覽器 — > PSN | 門戶頁面+ SAML POST(ACS) |
| 客戶端 — > DNS:門戶FQDN | 瀏覽器 — >解析程式 | 門戶名稱解析 |
| 到login.microsoftonline.com沒有流量 | — | IdP支路不會觸及ISE |
儘管所有內容都經過加密,但TLS客戶端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繫結)。 這意味著ISE節點不需要到Microsoft的出站連線才能使門戶SSO正常工作,而且在進行故障排除時,必須在客戶端上捕獲IdP分支,而不是在ISE上。
| 修訂 | 發佈日期 | 意見 |
|---|---|---|
2.0 |
02-Oct-2026
|
更新拼寫、語法、插入水平線以分隔各部分的可讀性、修復CCW錯誤、更新的alt文本。 |
1.0 |
19-Oct-2020
|
初始版本 |