2017-08-30 29 views
1

我工作的一個項目,我需要做的SAML實施,我有一些疑問:SAML集成在Java中

  1. 什麼是元數據文件,它是如何在SAML有用嗎?
  2. SAML如何確保來自IdP的響應在中轉時未被惡意用戶更改?驗證惡意用戶。
  3. Here is the list可用的SAML xml架構。我將如何使用它在java中產生模擬SAML請求?
+0

2)SAML斷言由身份提供者簽名,服務提供者使用服務提供者的公鑰驗證簽名。 – lexicore

回答

0

我已成功使用http://projects.spring.io/spring-security-saml/作爲此功能。它使用Spring安全性的基本概念,並增加了對SAML的支持。

元數據文件及其在SAML中的用處如何?

元數據包含有關服務提供者或身份提供者的基本信息。例子可見 https://www.samltool.com/sp_metadata.php https://www.samltool.com/idp_metadata.php

如何SAML可以確保從IDP來的響應沒有在運輸中間惡意用戶改變了嗎?

SAML斷言由私鑰簽名。收到後,他們被驗證(使用公共密鑰)。由於私鑰是祕密的,因此任何人都無法修改SAML文檔並簽名。

我將如何使用它在java中產生模擬SAML請求?

對於模擬SAML請求,您可以僅POST POST硬編碼的XML文檔(SAML斷言)。對於這種工作方式,您需要進行以下更改 1)更新該模擬文檔中的時間戳 2)配置Spring SAML以使用不帶標記的SAML聲明。該解決方案僅適用於開發。

另一種選擇是在https://docs.spring.io/spring-security-saml/docs/1.0.x/reference/html/chapter-idp-guide.html#chapter-idp-guide-adfs-test(使用Spring SAML示例應用程序)

+0

我會嘗試從開始執行簽名驗證,即使它看起來像更多的鬥爭。我已經看到幾個應用程序無需任何票證驗證即可投入生產:/ – gusto2

+0

有關使用私鑰簽名聲明的一些信息....如何創建私鑰?我如何簽署斷言? (我不介意,即使答案很長,謝謝) – computerscientist123

+0

IdP需要對斷言進行簽名,SP只是根據配置的證書驗證簽名。通常圖書館會爲你提供,IdP必須向你提供公共證書。 – gusto2

1

我將延長的Bartosz的答案描述。我將假設您想要實施服務提供商並使用SAML WebSSO配置文件。

什麼是元數據文件,它在SAML中的用處如何?

元數據允許自動的IdP或SP信息的導入(其ENTITYID,端點,證書,支載綁定)

如何SAML可以確保從IDP來 響應不被改變惡意用戶在中間的 中轉?驗證惡意用戶。

這是一個非常重要的部分。基礎 - 數據由發行者的私鑰簽署。有兩種選擇 - 整個 消息被簽名或斷言被簽名(或兩者)。服務提供商絕對必須檢查發行人的身份證(EntityID),有效期和簽名。在這裏,我建議你使用成熟的框架(spring-security或OpenSAML),並檢查使用版本的安全論壇,因爲有些版本容易受到「簽名注入」攻擊。

以下是可用的SAML xml模式列表 。我將如何使用它在java中生成一個模擬SAML 請求?

肯定,你應該瞭解SAML認證流程,並通過essages和不同的選項(例如重定向癟綁定使用和編碼消息,綁定後僅編碼)

我建議你看看ssocircle.com ,他們可以使用公共IdP進行測試並使用工具來解碼saml消息。你不能簡單地嘲笑消息,因爲他們的時效有限。我爲開發和測試所做的 - 我安裝了simpleSAMLphp,這是一個簡單而有效的php工具,用於配置SAML IdP或SP。

+0

有關元數據文件的一些問題。 1)整合SAML我是否需要SP和IdP的元數據文件? 2)我手動創建元數據文件? 3)你能簡單解釋一下entityID是什麼嗎? – computerscientist123

+0

1.您不需要任何元數據文件爲必填項,IdP需要關於SP的信息(EntityID,端點,證書(可選),並且SP需要關於IdP(EntityID,端點,證書)2的信息),或者您可以導出元數據,如果你有它的服務3.每一方(IdP,每個SP)都需要它的標識符,就是這樣,只是一個標識符,理論上它可以是任何字符串,但我們建議以URL的形式區分不同的環境,階段,...) – gusto2

+0

(可能是一個愚蠢的問題)SAML斷言與請求/響應之間的區別是什麼?斷言像一個請求和響應的umberalla名稱? – computerscientist123