OAuth刷新令牌返回invalid_grant

时间:2016-08-18 21:53:04

标签: .net oauth

与许多人一样,我使用Taiser Joudah文章来创建我的刷新令牌提供程序(以及他用于创建访问令牌的其他文章)。对我来说奇怪的是它在我的本地服务器上工作正常,但当我将它移动到另一台服务器时失败。 Auth和Resource服务器都是相同的服务器(实际上是相同的应用程序)。不确定在不同的服务器上可能存在什么差异。我已经跟踪了SQL并且它正在执行令牌的获取和删除,因此我知道它正在执行代码,但每次刷新都返回invalid_grant并且用户已经注销。

1 个答案:

答案 0 :(得分:0)

这是我在文章中看到的唯一返回invalid_grant的地方:

using (AuthRepository _repo = new AuthRepository())
{
    IdentityUser user = await _repo.FindUser(context.UserName, context.Password);

    if (user == null)
    {
        context.SetError("invalid_grant", "The user name or password is incorrect.");
        return;
    }
}

您是非本地服务器上存在的用户名/密码对吗?

如果本地和非本地服务器不共享同一个数据库:

  • 您可能正在使用无效的刷新令牌,或者已过期或已撤消
  • 使用的客户端凭据可能与发出刷新令牌的客户端
  • 不匹配

也可能是重定向URI与本地服务器与非本地服务器不同。

invalid_grant
   The provided authorization grant (e.g., authorization
   code, resource owner credentials) or refresh token is
   invalid, expired, revoked, does not match the redirection
   URI used in the authorization request, or was issued to
   another client.

https://tools.ietf.org/html/rfc6749#section-5.2