2013-03-07 45 views
3

每當我們使用DotNetOpenAuth刷新我們的授權時,新的Oauth2.0RefreshToken包含在響應中。 由於RefreshToken本身是一個長壽命的標誌,我們在每次請求後獲得新的RefreshToken的原因是什麼?如何使用DotNetOpenAuth刷新授權後收到的新RefreshToken

什麼是處理這個新RefreshTokens的最佳方式,我們是否應該每次刷新我們的授權時存儲新的RefreshToken,或者我們應該保留舊的RefreshToken而忽略新的?

另請參閱此位示例代碼以提供一些上下文。

var serviceDescription = new AuthorizationServerDescription 
{ 
    ProtocolVersion = ProtocolVersion.V20, 
    TokenEndpoint = new Uri(Constants.TokenEndPoint) 
}; 

var client = new WebServerClient(serviceDescription, 
    Constants.ClientId, Constants.ClientSecret); 

var authorization = new AuthorizationState() 
{ 
    //Insert our stored RefreshToken 
    RefreshToken = TokenStore.Instance.RefreshToken 
}; 

if (client.RefreshAuthorization(authorization)) 
{ 
    //Store or ignore the new RefreshToken? 
    var NewRefreshToken = authorization.RefreshToken; 
} 
+0

謝謝!您的問題幫助我瞭解瞭如何使用DotNetOpenAuth庫進行帶有刷新令牌的簡單OAuth2授權。 – palswim 2013-11-19 00:32:16

回答

4

您在響應中返回的刷新令牌可能包含或不包含在響應中。如果它存在,規範說你必須使用新的刷新令牌來進行所有將來的令牌刷新。如果您再次使用舊的授權服務器,授權服務器可能會完全撤銷授權。

從我對工作組討論的理解來看,原因是通過定期更改客戶端上的刷新令牌,授權服務器可以檢測刷新令牌是否已意外泄漏給第三方。由於批准的客戶端和第三方都將使用相同的刷新令牌,因此如果一方接收到新的刷新令牌,則另一方仍會使用舊令牌。當舊的進入時,有兩個客戶端使用同一個刷新令牌的事實會使安全漏洞的auth服務器關閉,並且可能會關閉它。

+0

非常感謝這個深入的答案! – 2013-03-09 15:42:28

相關問題