我正在尝试为我的Web应用程序实现OAUTH2,但即使登录到应用程序工作,刷新令牌也会导致HTTP 400" invalid_grant"。 具体来说,该项目是带有OWIN OAuth提供程序的ASP.NET WebAPI。这已经杀了我几天没有运气,所以任何帮助将不胜感激:)
答案 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:
对已部署的网址Constants\Paths.cs
进行必要的更改。
即使在此之后它也无效。但是,一旦我们将所有路径更改为 HTTPS ,一切都开始顺利进行。
如果你仍然被卡住,请试试。