【问题标题】:Refresh Token request returning new refresh token?刷新令牌请求返回新的刷新令牌?
【发布时间】:2016-01-05 05:33:22
【问题描述】:

我在自己的 Web API 和 ASP.NET C# 上使用 Oauth2 在 Web 应用程序上使用该 API。在我的网络应用程序上,我正在制作 HttpWebRequests。当我的访问令牌过期时,我正在调用一种方法“RefreshToken”,该方法发出请求以获取新的访问令牌。这很好用,没有问题......除了我得到的响应包含一个新的刷新令牌???我期待的只是新的访问令牌。如果不再次传递凭据,我什至认为这是不可能的,但我的 grant_type=refresh_token 以某种方式生成了一个新的刷新令牌,这让我很担心。

【问题讨论】:

  • 我的 grant_type=password 和 grant_type=refresh_token 响应都如下所示:
  • 你有seen this吗?

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


【解决方案1】:

请参阅 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;
}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-20
    • 2012-02-16
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-31
    相关资源
    最近更新 更多