刷新令牌请求返回新的刷新令牌?

时间:2015-10-07 20:05:20

标签: api asp.net-web-api oauth-2.0 google-oauth

我在自己的Web API和ASP.NET C#上使用Oauth2来在Web应用上使用该API。在我的网络应用程序上,我正在制作HttpWebRequests。当我的访问令牌过期时,我正在调用方法" RefreshToken"提出获取新访问令牌的请求。这很好地工作没有问题...除了我得到的响应包含一个新的刷新令牌???我只期待新的访问令牌。我甚至认为没有再次传递凭证就可以做到这一点,但是我的grant_type = refresh_token以某种方式生成了一个新的刷新令牌,这让我很关注。

1 个答案:

答案 0 :(得分:2)

请参阅Taiseer Joudeh的this post(顺便提一下这是一系列非凡的帖子)。

您将在SimpleRefreshTokenProvider的CreateAsync方法中找到刷新令牌,并重新创建,提供“滑动过期”。如果您不希望每次都不删除/重新创建新的刷新令牌。

以下是我正在讨论的代码行:

var result = await tokenRepository.AddRefreshToken(token);

AddRefreshToken实际上删除并重新创建了令牌,如下所示:

public async Task<bool> AddRefreshToken(AspNetRefreshToken token)
{
    var existingToken = _context.AspNetRefreshTokens.SingleOrDefault(r => r.Subject == token.Subject && r.ClientId == token.ClientId);

    if (existingToken != null)
    {
        await RemoveRefreshToken(existingToken);
    }

    _context.AspNetRefreshTokens.Add(token);

    return await _context.SaveChangesAsync() > 0;
}

所以再一次,没有看到你的代码,我会说它按预期工作。如果您不想要滑动过期,请不要让提供者每次都重新创建刷新令牌。