2014-05-21 156 views
1

我運行此示例應用程序:OWIN的OAuth 2.0授權服務器刷新令牌

http://www.asp.net/aspnet/overview/owin-and-katana/owin-oauth-20-authorization-server

從下載:

http://code.msdn.microsoft.com/OWIN-OAuth-20-Authorization-ba2b8783

在AuthorizationServer項目Startup.Auth.cs文件,我添加

AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(1), 

裏面

app.UseOAuthAuthorizationServer(new OAuthAuthorizationServerOptions { 

因此,令牌將在1分鐘後過期。

1分鐘後和令牌過期,我嘗試刷新令牌,它給我的錯誤

遠程服務器返回錯誤:(400)錯誤的請求。

我的問題是:

是否有可能刷新如果令牌到期令牌?或者如果用戶試圖訪問受保護的資源,自動刷新過期令牌怎麼樣?

+0

是的,這是可能的。您必須使用訪問令牌返回刷新令牌,並且客戶端將能夠使用刷新令牌獲取新的訪問令牌。欲瞭解更多信息,你可以看到這個示例[鏈接](http://leastprivilege.com/2013/11/15/adding-refresh-tokens-to-a-web-api-v2-authorization-server/ ) –

回答

2

默認情況下,如果相關身份驗證令牌已過期,OWIN會拒絕刷新令牌。下面是例子,你如何覆蓋這種行爲:

public class RefreshTokenProvider : IAuthenticationTokenProvider 
{ 
     public async Task ReceiveAsync(AuthenticationTokenReceiveContext context) 
     { 
      var ticket = LoadAuthenticationTicketFromDatabase(); 
      context.DeserializeTicket(ticket); 
      context.Ticket.Properties.ExpiresUtc = DateTime.MaxValue; 
    } 
} 
相關問題