OAUth2 ASP.NET invalid_grant

时间:2015-07-30 09:39:14

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

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

2 个答案:

答案 0 :(得分:0)

您是否正确设置了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

答案 1 :(得分:0)

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

  • AuthorizationServer
  • AuthrizationCodeGrant
  • 资源服务器

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

如果你仍然被卡住,请试试。