2014-06-12 20 views
0

我正在與一位建立了自行開發的引擎來生成SAML斷言的客戶合作。我們使用ForumSentry來驗證斷言,但摘要未能驗證。我們已經有十幾個其他客戶向我們發送了SAML斷言,對於web SSO來說,這非常好,我確信ForumSys擁有許多100多位ForumSentry的客戶,他們的工作也非常完美。SAML斷言中的哪些數據被消解?

我花了很多時間試圖瞭解到什麼是摘要,並試圖找到摘要算法的XML樣本。我失敗了,我希望得到一些幫助。

在我看來,唯一簽署的數據是引用URI,而不是所有其他的斷言的「參數」,如主體,發行人等。這是正確的/我不明白什麼?這是什麼背景?如果正確,其他數據如何防止被篡改?

有沒有假設Web SSO必須通過HTTPS來保護整個斷言的完整性?

什麼數據完全形成簽名的數據?有人可能會發佈一個示例,包括簽名前數據和後期標準化數據。

任何其他背景信息將是偉大的。

回答

1

SAML使用XML DSig進行簽名。當一個SAML實體(一個斷言,一個完整的響應,元數據等)被簽名時,它通過使用XML Dsig套件中的特定算法來完成。

  • 簽名的引用必須指向簽名實體的ID。對於<assertion>節點的ID屬性的已簽名聲明。
  • 使用的規範化算法必須是專有規範化。這並不影響實際的XML內容,它是加密庫使用的XML解析器的一條指令,它確保空格的差異等不會影響已簽名數據的有效性。

XML DSig分兩步工作。 *首先計算簽名中每個引用的散列值。對於SAML簽名,應只有一個對封閉實體的ID屬性的引用。 *然後通過包含散列的XML計算加密簽名。

這意味着可以使用單個簽名來驗證多個XML片段的完整性,但在SAML中不使用該功能。

由於每個簽名只包含一個對簽名實體的ID屬性的引用,因此整個實體受簽名保護。

如果您需要更多關於XML簽名如何與SAML協同工作的詳細信息,那麼我建議您閱讀SAML core spec第5.4節。