【问题标题】:OAUth2 ASP.NET invalid_grantOAUth2 ASP.NET invalid_grant
【发布时间】:2015-07-30 09:39:13
【问题描述】:

我正在尝试为我的 Web 应用程序实现 OAUTH2,但即使登录应用程序有效,刷新令牌也会导致 HTTP 400“invalid_grant”。 具体来说,该项目是一个带有 OWIN OAuth 提供程序的 ASP.NET WebAPI。这已经让我死了好几天没有运气所以任何帮助将不胜感激:)

【问题讨论】:

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


    【解决方案1】:

    您是否正确设置了OAuthAuthorizationServerOptions.RefreshTokenProvider

    如果您需要示例,Katana 的沙盒项目包含一个最小实现,展示了如何轻松配置它以使用数据保护块(IIS 上的机器密钥)保护和序列化刷新令牌:https://github.com/jchannon/katanaproject/blob/master/tests/Katana.Sandbox.WebServer/Startup.cs#L169-L173

    app.UseOAuthAuthorizationServer(new OAuthAuthorizationServerOptions  {
        RefreshTokenProvider = new AuthenticationTokenProvider {
            OnCreate = CreateRefreshToken,
            OnReceive = ReceiveRefreshToken,
        }
    });
    
    private void CreateRefreshToken(AuthenticationTokenCreateContext context) {
        context.SetToken(context.SerializeTicket());
    }
    
    private void ReceiveRefreshToken(AuthenticationTokenReceiveContext context) {
        context.DeserializeTicket(context.Token);
    }
    

    如果仍然不起作用,请尝试启用跟踪以确定 invalid_grant 错误的根本原因:http://katanaproject.codeplex.com/wikipage?title=Debugging&referringTitle=Documentation

    【讨论】:

      【解决方案2】:

      在 Azure 上部署 AuthorizationServer 并尝试通过 localhost 访问它时,我们遇到了同样的问题。 后来我们部署了所有 3 个:

      • 授权服务器
      • AuthrizationCodeGrant
      • 资源服务器

      Constants\Paths.cs 中对已部署的 URL 进行了必要的更改。 即使在此之后它也没有工作。但是,一旦我们将所有路径更改为 HTTPS,一切都开始顺利运行。

      如果你仍然卡住,请尝试一下。

      【讨论】:

        猜你喜欢
        • 2012-09-25
        • 2014-09-22
        • 2016-03-05
        • 2023-03-10
        • 2021-06-15
        • 2017-09-17
        • 2016-09-23
        • 2015-09-17
        • 2020-10-07
        相关资源
        最近更新 更多