如何使用asp.net web api实现脱机令牌

如何使用asp.net web api实现脱机令牌,asp.net,api,rest,oauth-2.0,asp.net-web-api2,Asp.net,Api,Rest,Oauth 2.0,Asp.net Web Api2,我已经实现了一个带有承载令牌的rest API,现在我需要允许API的客户端可以使用相同令牌连接API,例如1年。我认为在API中实现刷新令牌可以实现我的目标,但不可能在原始令牌过期后使用带有刷新令牌的新令牌,我认为这是一个坏消息—增加API中每个令牌的时间,因为客户端必须选择是否需要脱机令牌 我的API是用ASP.NET Web API 2构建的,其中已经存在OAuth 2的一个实现。好吧,我错了,因为在原始令牌过期时可能会刷新相同的令牌,但是我们需要确保每个令牌都有自己的过期日期,并且刷新令

我已经实现了一个带有承载令牌的rest API,现在我需要允许API的客户端可以使用相同令牌连接API,例如1年。我认为在API中实现刷新令牌可以实现我的目标,但不可能在原始令牌过期后使用带有刷新令牌的新令牌,我认为这是一个坏消息—增加API中每个令牌的时间,因为客户端必须选择是否需要脱机令牌


我的API是用ASP.NET Web API 2构建的,其中已经存在OAuth 2的一个实现。

好吧,我错了,因为在原始令牌过期时可能会刷新相同的令牌,但是我们需要确保每个令牌都有自己的过期日期,并且刷新令牌的过期日期大于身份验证令牌

这里我有一个代码示例来演示如何设置刷新令牌过期日期

public async Task CreateAsync(AuthenticationTokenCreateContext context)
{
    var refreshToken = Guid.NewGuid().ToString("n");

    context.Ticket.Properties.IssuedUtc = DateTime.UtcNow;
    context.Ticket.Properties.ExpiresUtc = DateTime.UtcNow.AddYears(1);

    context.SetToken(refreshToken);
}
上面将刷新令牌到期时间设置为1年