【问题标题】:OAuth Refresh token returns invalid_grantOAuth 刷新令牌返回 invalid_grant
【发布时间】:2016-08-22 04:20:15
【问题描述】:

像许多人一样,我使用Taiser Joudah 文章来创建我的刷新令牌提供程序(以及他的另一篇关于创建访问令牌的文章)。对我来说奇怪的是,它在我的本地服务器上运行良好,但当我将它移动到另一台服务器时失败。 Auth 和 Resource 服务器都是同一个服务器(实际上是同一个应用程序)。不知道在不同的服务器上会有什么区别。我跟踪了 SQL,它正在执行令牌的获取和删除,所以我知道它正在执行代码,但每次刷新都会返回 invalid_grant 并且用户已注销。

【问题讨论】:

    标签: .net oauth


    【解决方案1】:

    这是我在文章中看到的唯一一个返回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://www.rfc-editor.org/rfc/rfc6749#section-5.2

    【讨论】:

    • 我有你显示的相同的 invalid_grant 代码,但它在用于初始登录的 GrantOwnerResourceCredentials 方法中。至于规范中的 invalid_grant 原因,我看不出其中任何一个适用。刷新令牌参数,如过期和/或重定向 URI(未指定,因为这不是第三方身份验证提供程序实现)不会改变,它肯定没有发给另一个客户端,也没有以前被撤销。
    • @HisDivineShadow 以便您的本地和非本地服务器共享相同的数据库?另外,有时间偏差的机会吗?
    • 不,本地和开发实例使用自己的数据库(在不同的数据库服务器上)。访问令牌和刷新令牌在同一个应用内的同一台服务器上生成时会出现什么时间偏差?
    • @HisDivineShadow 您是否设法解决了这个问题。我撞到了同样的砖墙。 JWT 可以工作(奇怪的是,如果我在其生命周期内使用刷新令牌请求一个新的 JWT,我可以生成一个新的 JWT),但是当 JWT 过期并且我将授权类型作为 refresh_token 发送时(再次仅在发布时)我收到'invalid_grant' 错误。现在,再次如您所说,该调用正在访问 RefreshTokenProvider 'ReceiveAsync',但随后完全丢失了在本地调用的 'CreateAsync' ??
    • @MatthewFlynn 不,我从来没有发现是什么原因造成的,因为我更改了我的应用程序以使用不同的身份验证提供程序,所以它变得没有实际意义。如果您弄清楚了,请在此处发布答案,因为我仍然想知道导致问题的原因。
    猜你喜欢
    • 1970-01-01
    • 2012-12-27
    • 2015-07-16
    • 2013-05-10
    • 1970-01-01
    • 2013-12-04
    • 2021-11-21
    • 2017-05-16
    • 2020-05-05
    相关资源
    最近更新 更多