我正在使用SAML爲運行tomcat的Web服務器實施SSO身份驗證流程。使用POST或重定向綁定時,一切正常,但從我讀過的支持REST API前面的SAML身份驗證的操作中,我還需要配置和使用ECP配置文件。如何使用SAML ECP配置文件配置Keycloak
首先糾正我,如果我錯了,但ECP流程應該是這樣的:
- 客戶端訪問SP REST API
- 客戶知道自己需要進行身份驗證,所以他建立了必要的ECP標題(
Accept: application/vnd.paos+xml
和PAOS: urn:liberty:paos:2003-08;urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp
)
- 客戶知道自己需要進行身份驗證,所以他建立了必要的ECP標題(
- SP看到客戶端沒有通過認證,並返回包含PAOS索取SOAP包絡。
- 客戶負責將其發送給其ECP消費者服務上的相應IdP。
- 對IDP挑戰認證客戶端
- 國內流離失所者返回另一個SOAP信封的形式的響應,包含在其體內的SAML響應
- 客戶端必須發送該響應SP的ECP/SOAP斷言使用者服務
問題是這一切的工作,直到第6步在這一步,我有問題,該響應包絡的體內含有一種目標屬性,它指向的POST斷言消費服務 SP。此目標屬性由keycloak設置,並與我想要發送響應的實際ECP服務不匹配。我們使用的SAML庫是opensaml,它根據這個Destination屬性檢查請求URI,如果它們不匹配,則拋出異常org.opensaml.xml.security.SecurityException: SAML message intended destination endpoint did not match recipient endpoint
。
我明白爲什麼會引發此異常,但無法理解如何使用SP的ECP/SOAP服務配置Keycloak。在Keycloak的管理控制檯中,我只能配置SSO POST/Redirect和SLO POST/Redirect的URL,但沒有關於ECP。
我目前正在配置另一個IdP,但我確實希望確保Keycloak也可以成爲我們解決方案的支持服務器。