2011-07-08 35 views
0

如果oData或AJAX服務在身份驗證Cookie過期並且需要續訂時應如何響應?針對AJAX/oData身份驗證的HTTP響應和標頭?

什麼應該在服務器發送到客戶端時

  1. 的OData的或AJAX服務接入禁止(拒絕訪問)

  2. 當會話證書是過時了,需要換新,也許通過重定向到ADFS,OpenID或Azure ACS IDP

只看維基百科讓我猜猜我應該發送一些版本的403.x for t他是第一個場景,第二個場景是401。

請確認上述內容是否正確,以及我應該在響應標題和正文中包含哪些內容。我

一些例子假設是不正確的做到以下幾點:

  • 默默的錯誤了AJAX服務和返回數據
  • 嘗試AJAX調用重定向到IDP
  • 發送錯誤文本未使用JSON格式的客戶端

回答

1

它總是安全地使用HTTP狀態代碼來播放您自己的令牌或任何類型的代碼。

由於OData的基本原理是使任何知道如何通信HTTP的客戶端成爲可能,所以在HTTP狀態代碼中播放是有意義的。客戶將決定如何處理特定的狀態碼。

0

HTTP狀態碼是要走的路。 OData特別沒有定義任何已經在較低級別上實現的任何內容(例如安全和身份驗證)。

401用於未認證,403用於未授權。對於secnario 1,你只能說「訪問被拒絕」,但不是爲什麼你拒絕訪問。用戶是否未通過身份驗證?然後返回401.用戶是否已通過身份驗證但缺少權限?然後返回403

對於方案2,我會同意,返回一個詳細的401種狀態(有一個有效的「WWW身份驗證」標頭爲您的身份驗證提供即)

維基百科的文章,我建議從(你可能已經找到了):https://secure.wikimedia.org/wikipedia/en/wiki/List_of_HTTP_status_codes

希望這可以幫助別人。 :-)