OAUth2 ASP.NET invalid_grant

OAUth2 ASP.NET invalid_grant

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

你设置正确了吗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

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

  • 授权服务器
  • 授权代码授予
  • 资源服务器

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

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