我希望確認RelayState是有效簽名的SAML註銷請求所必需的。SAML /是需要簽名註銷請求的RelayState嗎?
我們已將Microsoft的ADFS 2012 R2與Oracle的聯合身份驗證聯盟,其中ADFS是SP,OIF是IdP。作爲基礎,我們遵循Integrating ADFS 2.0/3.0 SP with OIF IdP。
一切正常,除了註銷。我們有另一個SP正在註銷並與OIF合作。我們發現的一個不同之處在於,ADFS未發送帶有簽名註銷請求的RelayState參數,但另一個SP是。我一直在使用SAMLTool's Validate Logout Req,在這裏我輸入以下內容:源
- SAML註銷請求
- ENTITYID
- 目標URL,註銷請求
- SigAlg
- 的簽名目的地SAML註銷請求
- X.509證書來源(簽名檢查)
- 忽略計時問題:檢查
那然後給我的錯誤:
In order to check Signature you must provide the RelayState parameter and the X.509 cert
如果我在SAMLTool's Validate Logout Req其他值一起我輸入的RelayState然後返回報告,我簽署了註銷請求是有效的。
在ADFS的情況下,因爲它沒有RelayState參數,所以我不能得到SAMLTool's Validate Logout Req來說ADFS的註銷是有效的。所有這一切,我無法在SAML規範中的任何地方找到說明RelayState是簽名註銷請求所必需的。任何人都可以確認它是必需的,並用文檔備份它?對於SAML LogoutRequestType
<element name="LogoutRequest" type="samlp:LogoutRequestType" />
<complexType name="LogoutRequestType">
<complexContent>
<extension base="samlp:RequestAbstractType">
<sequence>
<choice>
<element ref="saml:BaseID" />
<element ref="saml:NameID" />
<element ref="saml:EncryptedID" />
</choice>
<element ref="samlp:SessionIndex" minOccurs="0" maxOccurs="unbounded" />
</sequence>
<attribute name="Reason" type="string" use="optional" />
<attribute name="NotOnOrAfter" type="dateTime" use="optional" />
</extension>
</complexContent>
</complexType>
<element name="SessionIndex" type="string" />
換句話說,它不是強制性的。該工具在要求時不正確。 ADFS例如不爲SP啓動提供它。 – nzpcmad
謝謝。我會接受這個答案並與甲骨文開一張票,看看他們在說什麼。如果有什麼有趣的結果,我會嘗試返回這裏進行狀態更新。 –
我們最終解決了我們的問題,並在ADFS和OAM之間註銷現在正在運行。主要問題是OAM中過時的ADFS元數據。 –