2015-11-04 50 views
0

this SO reply描述的OAuth2正常的流程如下:的OAuth - 使用刷新標記的「社會符號的」

訪問令牌
  • 發送API請求
  • 如果訪問令牌無效,嘗試使用刷新令牌
  • 如果刷新請求通過
  • ,更新訪問令牌和更新它如果刷新請求失敗重新發送初始API請求
  • ,要求用戶重新認證

這對大多數API調用都很好,但我不知道一件事:身份驗證。

當用戶嘗試使用他們最喜歡的服務登錄我的新Web應用程序時,我應該使用他們的刷新令牌(或OAuth1中的緩存訪問令牌)嘗試登錄,還是應該始終從服務提供商(Google,Facebook等)獲取新的令牌並放棄存儲的訪問和刷新令牌?

回答

0

用戶驗證和OAuth 2.0是兩回事。差異詳細解釋如下:http://oauth.net/articles/authentication/。即使在OAuth 2.0之上構建用戶身份驗證/ SSO協議(OpenID Connect所執行的操作以及某些特定於供應商的實現),refresh_token仍然始終適用於access_token而不是用戶身份驗證事件或身份標記。

您不能單獨使用刷新令牌來刷新用戶的登錄會話,因爲需要通過瀏覽器與用戶進行某些交互(可能是主動的,可能是被動的)以確認用戶(仍然)存在。

要刷新用戶的登錄會話,你將永遠都重定向到身份提供者,並得到新鮮的認證信息。請注意,該交互可能還會爲您提供一個新的刷新令牌,可用於刷新訪問令牌。