【发布时间】: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
我正在尝试为我的 Web 应用程序实现 OAUTH2,但即使登录应用程序有效,刷新令牌也会导致 HTTP 400“invalid_grant”。 具体来说,该项目是一个带有 OWIN OAuth 提供程序的 ASP.NET WebAPI。这已经让我死了好几天没有运气所以任何帮助将不胜感激:)
【问题讨论】:
标签: asp.net-web-api oauth-2.0 owin
您是否正确设置了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,一切都开始顺利运行。
如果你仍然卡住,请尝试一下。
【讨论】: