如果我使用我的私鑰對其進行簽名並通過SSL發送,是否需要加密SAML請求?或者更好的做法是使用我的私鑰對其進行簽名,使用身份提供程序公鑰對其進行加密並通過SSL進行傳輸?是否建議對SAML進行簽名和加密並使用SSL?
15
A
回答
37
SAML斷言查詢/請求通常不包含太多私有數據,並且請求本身通常不會保留以備後用,所以幾乎不需要加密SAML請求本身。簽名可以讓接收方驗證內容在傳輸過程中沒有被更改,並且通過SSL進行傳輸會在傳輸過程中提供隱私。在這種情況下加密請求可能是矯枉過正的。
但是,SAML斷言響應是完全不同的動物。包含聲明或斷言的SAML響應可能包含私人數據。根據系統中這些斷言的使用方式,斷言可能會在不同方之間傳遞,其中一些需要密鑰才能解密內容(因爲它們與SAML提供程序之間存在信任關係),另一些則不需要。 SAML斷言可以存儲在緩存或數據庫中,所以你真的不知道將來誰會戳穿它們。
如果SAML響應包含聲明和斷言,其中包含私有數據,並且響應的接收方將無限期地持有SAML斷言或通過您不信任的中間方傳遞SAML斷言,那麼是的, SAML斷言應該被加密並且響應被簽名,不管它是否由SSL傳輸。加密是爲了在數據到達SSL管道的另一端後保護數據的隱私。
2
而且,SSL管道的另一端是瀏覽器。有一個從IdP到瀏覽器的管道,另一個從瀏覽器到服務提供商。如果斷言未加密,斷言將在瀏覽器中供任何人使用。攻擊者可能會在未來的SAML文檔和交互中使用未加密的名稱標識符進行某種攻擊。
+3
但是如果攻擊者擁有瀏覽器並不是我們已經失去了? – sbc
相關問題
- 1. WebCryptoAPI - 它是否支持使用加密令牌進行簽名?
- 2. 如果我使用SSL,是否需要簽名/加密Cookie?
- 3. 加密++ RSA - 使用相同的密鑰對進行加密和簽名
- 4. 使用Apache CXF對SOAP消息進行簽名和加密
- 5. 使用Apache Rampart對SOAP消息進行簽名和加密
- 6. 使用gpg對加密密鑰進行數字簽名
- 7. 對SAML簽名和加密,Windows 8的R2
- 8. 使用SAML執行SSO時,可以使用相同的證書進行簽名和加密嗎?
- 9. 使用SSL進行其他API加密
- 10. Spring Security SAML - 簽名和解密
- 11. SAML響應和斷言是否已簽名/未簽名?
- 12. 護照SAML和SAML加密
- 13. 我是否正確使用RSA加密和簽名?
- 14. 檢查簽名字段是否使用itextsharp進行簽名
- 15. 使用Java進行AES加密並使用Javascript進行解密
- 16. 使用PGP進行加密並使用GPG進行解密
- 17. 加密:使用Linux/gcrypt簽名,使用Android/Java進行驗證
- 18. 使用JavaScript對象簽名和加密(JOSE)和iOS編程中的JWT進行加密?
- 19. 是否使用JavaScript進行不對稱加密?
- 20. 使用Javascript中的加密PGP私鑰生成PGP密鑰對並對文本進行簽名
- 21. 是否可以使用通配符SSL證書進行代碼簽名?
- 22. java使用密鑰對進行加密和解密?
- 23. 使用CipherInputStream和CipherOutputStream對文件進行加密和解密
- 24. 使用C++進行加密和解密
- 25. 使用DES和密碼進行加密
- 26. 使用IOS上的密鑰對json數據進行加密並使用節點j對其進行解密
- 27. 需要關於自簽名SSL和Java的建議
- 28. GPG:如何使用不同密碼短語對多個簽名進行簽名?
- 29. 建議加密url參數而不是以純文本格式進行加密?
- 30. 是否可以配置Azure網站的SSL協議和密碼
「加密是爲了保護數據到達SSL管道另一端後的隱私。」這對我來說很清楚。謝謝! – BernardMarx