2012-04-04 61 views
5

我即將開始開發業務應用程序,希望前端成爲單頁JavaScript解決方案。後端是作爲REST API提供的。我怎樣才能以安全的方式從JavaScript前端訪問REST API?從JavaScript中使用REST Oauth 2.0 API的安全方式

我已經開始在我的REST API中開發Oauth 2.0,並且我已經知道「隱式授權流程」,它是JavaScript客戶端的推薦流程。問題是這個流程應該只提供短暫的訪問令牌(可能是1小時?)。

我的系統的用戶通常會在早上登錄,並在離開工作前全天(8小時)在應用程序中工作並註銷,但如果訪問令牌只能存活一個小時,他們將不得不每小時再次登錄這是不可接受的。你如何解決這個問題?

+1

我能想到的一個解決方案是,不用返回一個在1小時內過期的訪問令牌,我可以返回滑動過期的access_token。對於客戶對API的每次呼叫,到期時間被更新,即20分鐘。但是這被認爲是安全的嗎?我從來沒有見過使用滑動過期的Oauth服務器? – rgullhaug 2012-04-04 08:39:23

回答

5

我們(Ping身份)支持在我們的OAuth AS實現中滑動訪問令牌的過期 - 沒有任何OAuth 2.0規範明智地表示您不能這樣做。對於其他授權類型,您可能需要刷新令牌來延長使用壽命 - 但隱含不適用於他們。

不確定您是否需要JavaScript OAuth工具包,但here's one可能適合您的用途。

+1

感謝您花時間回答我的問題。我會實現滑動過期,也非常感謝你的javascript工具包,我會檢查出來:)另外一個問題:在隱式流程中,我們沒有提供客戶端祕密(因爲它不能在客戶端保密),但我們需要確定哪個客戶端連接到我們的服務,因爲不同的客戶端可以訪問API的不同部分。將檢查redirect_uri與註冊的redirect_uri相同是否足以保證我們正在與正確的客戶端交談? – rgullhaug 2012-04-04 19:07:56

+1

是的 - redirect_uri比較是要走的路。就像你說的,你維持客戶端的祕密只有這麼長時間纔是祕密。 – 2012-04-04 20:56:26