瀏覽器憑證是一個簽名文檔,使用 CA 的公鑰,我的使用者代理程式能夠驗證它。
在SAML的元資料檔中,也有一個證書,但它似乎只是別的東西。它是什麼以及它的具體用途是什麼?
答案1
已經習慣了生產一份簽署的文件。 IdP 元資料中的憑證用於簽署身分提供者 (IdP) 並傳輸到服務提供者 (SP) 的 SAML 令牌(「斷言」)。
由於斷言是透過使用者的 Web 瀏覽器傳輸的,因此必須防止使用者對其進行篡改(例如,以便使用者無法添加更多群組或其他屬性),因此它使用 IdP 的私鑰進行數位簽名, SP 在允許您登入之前驗證該簽名。
換句話說,如果 SAML 斷言大致相當於 OIDC 中的簽章 JWT 令牌,則憑證將像 JWT 簽章金鑰一樣使用。
(實際上,您或許可以將 SAML 斷言稱為“證書”,將頒發 IdP 稱為“認證機構”...)
此外,SP 還可以擁有自己的證書,IdP 可以使用該證書加密斷言(例如,如果它包含不應洩露給用戶的內部數據,例如影子禁令狀態,或者只是為了最大限度地減少暴露,例如 SSN)。這是可選的。
SP 擁有自己的憑證的另一個原因是他們可以簽署註銷請求被發送回 IdP。 SAML2 協定支援“單點註銷”,即從一個 SP 註銷後,您將從所有其他 SP 以及 IdP 本身註銷,但該協議涉及一長串通過可能不一定相互信任的位置的重定向。
附註:儘管SAML 中的憑證與TLS 中的「簽署文件」相同,但一個很大的區別是,在大多數情況下,SAML 憑證是自簽署的,SP 只關心確切的公鑰,而忽略所有其他密鑰欄位。 (實際上,使用 X.509 憑證的最大原因是因為 SAML 使用預先存在的 XML-DSig 標準,並且所有工具/函式庫都希望處理憑證。)但這並不是說它們不能由 CA 簽發;這是受支持但很少需要的。