【问题标题】:OWIN OAuth 2.0 Authorization Server Refresh TokenOWIN OAuth 2.0 授权服务器刷新令牌
【发布时间】:2014-07-09 19:04:06
【问题描述】:

我运行这个示例应用程序:

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) Bad Request。

我的问题是:

如果令牌过期,是否可以刷新令牌?或者如果用户尝试访问受保护的资源,如何自动刷新过期的令牌?

【问题讨论】:

  • 是的,有可能。您必须返回带有访问令牌的刷新令牌,并且客户端将能够使用刷新令牌获取新的访问令牌。有关更多信息,您可以查看此示例 [链接](leastprivilege.com/2013/11/15/…)

标签: oauth owin


【解决方案1】:

默认情况下,如果相关身份验证令牌已过期,OWIN 会拒绝刷新令牌。以下是示例,您可以如何覆盖此行为:

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

【讨论】:

  • 刷新令牌的目的是什么?难道它不应该让客户端无需再次登录就可以检索新的访问令牌吗?原谅我,但你的回答让我很困惑。
猜你喜欢
  • 2015-01-15
  • 1970-01-01
  • 1970-01-01
  • 2013-10-05
  • 1970-01-01
  • 2020-04-24
  • 2012-04-18
  • 2016-08-12
  • 2017-04-09
相关资源
最近更新 更多