刪除 cookie 後,Chrome 會從哪裡獲取我的身份?
我試圖弄清楚當向身份提供者(帶有證書身份驗證的 SAML)進行身份驗證時,Google CHrome 從哪裡獲取我的身份我嘗試過的內容:
刪除所有 cookie、保存的密碼、記憶體文件
從我的個人商店中刪除我的個人證書(我使用的證書))
在 Firefox 上,這足以讓 IDP 註銷我並在我刷新頁面時再次提示我輸入證書,但在 Chrome 上,它只會讓我重新登錄!
在 chrome://password-manager-internals/ 上,我可以看到載入密碼的過程(我不知道是哪個密碼,因為我輸入的唯一密碼是解密我刪除的使用者證書的密碼!):
Message: PasswordAutofillAgent::DidStartProvisionalLoad PasswordManager::DidNavigateMainFrame: false The new state of the UI: 0 Message: PasswordAutofillAgent::SendPasswordForms only_visible: false Security origin: https://ADFS-IDP/ Number of all forms: 1 Message: PasswordAutofillAgent::SendPasswordForms only_visible: true Security origin: https://ADFS-IDP/ Number of all forms: 1 Form found on page: { Action : https://ADFS-IDP/ , Form name or ID : } Form is visible: false Some control elements not associated to a form element are visible: false Message: PasswordManager::CreatePendingLoginManagers Message: PasswordManager::OnPasswordFormsRendered Message: PasswordManager::IsAutomaticSavePromptAvailable Message: No provisional save manager HTML form for submit: { Action : https://ADFS-IDP/ , Form name or ID : }
我的問題是:Chrome 從哪裡獲得我的身份,而 Firefox 沒有?我猜 Chrome 有許多基於 Windows 的身份驗證功能,因為在 Edge 瀏覽器上也會發生同樣的事情,請問有什麼想法嗎?
SAML 身份驗證使用 AD FS 或其他身份提供程序進行 SAML SSO,瀏覽器本身絕不是 IdP。事實上,Chrome 能夠獲取 Windows 會話令牌並將其傳遞給服務提供商 (SP)。SAML 本身不使用證書作為身份,但您的 ADFS 伺服器可以。如果您的 ADFS 配置為多種方式來辨識使用者,即使沒有證書也可以。
注意:證書身份驗證通常由 ADFS 用於外部使用者身份驗證,當 AD 不可訪問而主要身份源仍為 AD 時。
要使 Azure AD 實現 SSO,使用“ Windows 10 帳戶”的特殊載入項。在大多數情況下,許多公司都使用混合身份模式,因此 Azure AD 將使用者身份驗證用於本地 ADFS。
注意:刪除證書並已在 ADFS 上進行身份驗證時,您的會話令牌將保留在 Windows 會話中。
如果您在私有模式下執行 Chrome,則不會發生 SSO,因為此模式無權訪問 Windows 會話上下文。
為了更深入地研究 SAML 身份驗證如何在 Chrome 中發生,我建議安裝SAML 消息解碼器外掛。這將為您提供有關 SAML 請求和響應的線索。在請求中,您應該檢查saml2p:AuthnRequest和saml2:Issuer。我會查看請求中的AssertionConsumerServiceURL和Destination以確定它的來源。
您還需要檢查samlp:Response和它的Issuer。通過 issuer 值,您將了解 IdP 已響應的內容,並且在有效負載的主題會話中,您將看到如何辨識使用者。