2014-01-07 39 views
0

我想發送一個OpenID請求的狀態,並通過OpenID提供程序(OP)響應恢復它。爲此,SAMLSSO使用「RelayState」參數。 OpenID中有這樣的方法嗎?在OpenID中,是否有像SAMLSSO RelayState這樣的概念?

我檢查了specification,似乎如果我將一個參數像RelayState追加到'openid.return_to'併發送請求,OP應該將它發送迴響應的'openid.return_to'參數中。

但規格也提到:

的的return_to URL可以作爲一種機制,依賴方能夠檢附認證請求認證響應上下文。 本文檔沒有定義RP可以確保查詢參數未被外部修改的機制;這種機制可以由RP本身來定義。

在SAMLSSO中,保證在RelayState中發送的相同值將由IdP發回。但有了OpenID規範中的上述說法,我不確定使用'openid.return_to'是實現此目的的正確方法。有沒有其他更好的方法?或者我是否以任何方式誤解了這一陳述?

回答

1

就我所見,openid.return_to是將RelayState傳遞到OpenID請求的唯一方法。作爲規範你巧妙地引用狀態:

  • 「的的return_to URL可以被用作依賴方附加關於認證請求認證響應方面的機制。」也就是說,該URL可以像SAMLSSO使用的那樣通過GET參數考慮中繼狀態,如?RelayState=%2Fpost-login-page
  • 「本文沒有定義一種機制,通過這種機制,RP可以確保查詢參數不被外界修改;這種機制可以由RP本身來定義。」也就是說,這個端點也應該驗證請求本身,就像SAML通過SHA指紋等一樣。
  • 所以最後你可以有一個return_to URL來評估OpenID驗證的結果,有或沒有RelayState,比如如/base?RelayState=或只是/base

前段時間你問過這個問題,所以請讓我們知道你是否找到了更好的選擇。但現在我只是在原始文章openid.return_to中確認了這個假設,這是考慮類似RelayState的唯一方法。有人請糾正我,如果我錯了!

相關問題