2013-03-07 1 views
3

Когда мы обновляем нашу авторизацию с использованием DotNetOpenAuth, в ответ добавляется новый Oauth2.0RefreshToken. Поскольку сам RefreshToken является долгоживущим токеном, почему мы получаем новый RefreshToken после каждого запроса?Что делать с новым RefreshToken, которое вы получаете после обновления авторизации с помощью DotNetOpenAuth

И какой лучший способ справиться с этим новым 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

ответ

4

Обновленный токен, который вы возвращаете в ответ, может быть включен или не включен в ответ. Если он присутствует, спецификация говорит, что вы должны использовать новый токен обновления для всех будущих токенов. Если вы снова используете старый, сервер авторизации может полностью отозвать авторизацию.

Причина в этом, исходя из моего понимания обсуждений в Рабочей группе, заключается в том, что, периодически изменяя токен обновления на клиенте, сервер авторизации может определить, был ли токен обновления случайно пропущен третьим лицам. Поскольку и одобренный клиент, и сторонняя сторона будут использовать один и тот же токен обновления, если одна сторона получит новый токен обновления, другой будет по-прежнему использовать старый. Когда приходит старый, тот факт, что есть два клиента, использующих один токен обновления, подскажет серверу auth о нарушении безопасности, и он может закрыть его.

+0

Большое спасибо за этот замечательный ответ! –