2016-10-26 64 views
1

我們有一家醫院作爲想要開發應用程序的客戶。這個應用程序可能會使用各種驗證方式,其中OAuth2是一種驗證方式。他們的要求清單,其中的一種困惑的我:該醫院對以下OAuth要求有何意義?

對於每個用戶會話,應用程序需要產生不可預知的 「狀態參數」。應用程序需要驗證發送到重定向URL的每個請求的「狀態值」爲 ;記錄所有授權請求的「狀態」 ;並且「狀態值」具有 以使用它接收的訪問令牌進行驗證。

儘管他們沒有特別提到它,但我猜這是關於OAuth的。我有一些OAuth2的經驗。我知道什麼訪問令牌和刷新令牌。但這個故事高於我的頭。他們在談論什麼樣的"state parameter""state value"

有人能說出這個故事嗎?

回答

2

這是一個關於該OAuth的2.0在授權請求作爲用於對跨站請求僞造保護,並在一般的請求和響應相關聯的推薦參數(https://tools.ietf.org/html/rfc6749#section-4.1.1)定義了state參數:

狀態

 RECOMMENDED. An opaque value used by the client to maintain 
    state between the request and callback. The authorization 
    server includes this value when redirecting the user-agent back 
    to the client. The parameter SHOULD be used for preventing 
    cross-site request forgery as described in Section 10.12. 
1

我相信他們選擇了寫上自己的話一個OAuth 2.0客戶端應用程序的要求。該規範規定:

客戶端必須爲其重定向URI實現CSRF保護。這通常通過要求發送到重定向URI端點的任何請求包括將請求綁定到用戶代理的經認證狀態(例如用於認證用戶代理的會話cookie的散列)的值來實現。 當發出授權請求時,客戶端應該利用「狀態」請求參數將此值傳遞給授權服務器。

(重點煤礦,閱讀整個故事section 10.12 of the specification

有關如何使用狀態參數可以參考Using the State Parameter更一步一步的指導方針。該頁面提到Auth0,但對於任何其他OAuth 2.0兼容服務器,該過程應該是相同的。還要注意,具體步驟假設基於瀏覽器的應用程序,並將不可預知的狀態參數存儲在Web存儲中。其他類型的客戶將使用其他商店,但原則保持不變。