2016-10-13 101 views
0

我正在爲我的應用程序實施App Store,第三方開發人員可以根據我的API構建自己的應用程序。我有一切工作和理解OAuth 2.0的概念,但我沒有看到外部應用程序如何使用一小時後過期的訪問代碼進行永久訪問。現在,您可以使用刷新令牌來申請一個新令牌,但該令牌也會在一段時間後過期。OAuth 2.0授權第三方應用程序的工作流程

那麼,當該應用程序的用戶只允許一次該應用程序時,外部應用程序如何連續連接到我的API?

我的授權碼在10分鐘後到期,1小時後訪問令牌和2周後刷新令牌。

我沒有看到應用程序如何在這段時間後檢索數據,而無需用戶通過oauth重新允許/重新安裝應用程序。

像Facebook等大公司如何接近這個?他們是否擁有永不過期的訪問令牌?

+0

難道我的刷新標記不需要過期日期嗎? –

+0

通常,刷新標記將具有更長的生命期或根本不會過期。 –

+0

我刷新的令牌在2周後過期,只是檢查它。在閱讀了關於Facebook如何做到這一點的一些信息之後,他們似乎使用了持久訪問令牌。這是正確和安全的嗎? –

回答

2

擴展我的評論,使用持票人令牌時的一般建議是,應減少他們的生命期以減輕訪問令牌受到影響。另一方面,每隔一小時詢問用戶憑證將會是UX的惡夢,因此OAuth 2.0的概念爲refresh tokens,這個概念通常具有更長的生命週期,允許應用程序在無需用戶干預的情況下請求新的訪問令牌。

我不熟悉Facebook永久令牌的實現細節,所以我不會對此發表評論,但他們很可能是安全的。但是,您不是Facebook,因此我建議您遵循OAuth 2.0/OpenID Connect等公共標準,而不是嘗試提供定製方法。

關於您對有關永不過期刷新標記的評論,這是一個可接受的解決方案,但它們的生存期只是等式的一部分。您應該考慮它們是多用途還是單用途,它們只能由發給它們的客戶端應用程序使用,由於確保安全存儲的困難等原因,它們不應該被基於瀏覽器的應用程序使用。

+0

感謝您的確認。我會去尋找一個長期存在的刷新令牌(永遠不會過期),因爲那些服務器將被交換到服務器,而不是客戶端。 –

+0

作爲一個輕微的改進,你可以更新刷新令牌以及每個刷新令牌請求上的訪問令牌 –

+0

我同意這個答案。另一個好的做法是在出現刷新令牌的情況下提供撤銷端點 –