聯合認證-SAML(三)
2 SAML 的 2 種典型模式在協議的角度, SAML 原理非常類似 CAS 和 Kerberos , CAS 協議依賴于 CAS Server , Kerberos 依賴于 KDC ,而 SAML 則依賴于 Identity Provider 。
根據 Service Provider( 以下簡稱 SP) 和 Identity Provider( 以下簡稱 IDP) 的交互方式, SAML 可以分為以下幾種模式:一種是 SP 拉方式,一種是 IDP 推方式。
在 SAML 中,最重要的環節是 SP 如何獲取對 Subject 的斷言, SP 拉方式是 SP 主動到 IDP 去了解 Subject 的身份斷言,而 IDP 推方式則是 IDP 主動把 Subject 的身份斷言通過某種途徑告訴 SP 。
2.1 SAML 的 POST/Artifact Bindings 方式(即 SP 拉方式)
該方式的主要特點是, SP 獲得客戶端的憑證 ( 是 IDP 對 Subject 的一種身份認可 ) 之后,主動請求 IDP 對 Subject 的憑證的斷言。如下圖所示: Subject 是根據憑證去訪問 SP 的。憑證代表了 Subject 的身份,它類似于“來自 IDP 證明:我就是 Peter ,法國公民”。
現在,讓我們看看 SP 拉方式是如何進行的:
Subject 訪問 SP 的受保護資源, SP 發現 Subject 的請求中沒有包含任何的授權信息,于是它重定向用戶訪問 IDP.
協議執行:
1,Subject 向 IDP 請求憑證 ( 方式是提交用戶名 / 密碼 )
2,IDP 通過驗證 Subject 提供的信息,來確定是否提供憑證給 Subject
3,假如 Subject 的驗證信息正確,他將獲取 IDP 的憑證以及將服務請求同時提交給 SP 。
4,SP 接受到 Subject 的憑證,它是提供服務之前必須驗證次憑證,于是,它產生了一個 SAML 請求,要求 IDP 對憑證斷言
5,憑證是 IDP 產生的,它當然知道憑證的內容,于是它回應一個 SAML 斷言給 SP
6,SP 信任 IDP 的 SAML 斷言,它會根據斷言結果確定是否為 Subject 提供服務。