刷新令牌在GoDaddy上过期,但在使用OAuthAuthorizationServerProvider

时间:2017-08-01 14:25:10

标签: c# .net oauth authorization

我创建了一些使用基于令牌的身份验证的网站,我在GoDaddy上托管它们。 身份验证使用 Microsoft.Owin.Security.OAuth.OAuthAuthorizationServerProvider 。可以在此处找到身份验证代码:https://github.com/quintonn/BasicAuthentication

现在我的问题如下:

当我使用用户名和密码登录时,我获得了访问和刷新令牌。如果刷新令牌仍然有效,我可以获得新的访问令牌。似乎每次我将新代码部署到服务器时,所有刷新和访问令牌都将变为无效,并且使用我的网站的任何用户都必须再次登录。我试图在我的开发机器上复制它,但重新启动它,运行IIS RESET,但在我的本地机器上,我仍然登录。

奇怪的是,我看到的错误(在开发工具中)只是" {invalid_grant}"无理由或没有更多信息。这不是我的代码所在,我无法弄清楚我的请求有什么问题以及为什么这只发生在我在GoDaddy上托管的网站上。

如果有人有任何想法或建议,那就太棒了。

提前致谢。

1 个答案:

答案 0 :(得分:1)

默认情况下,令牌由owin主机的保护锁签名。在SystemWeb托管中,该保护密钥是web.config中的machineKey设置。

收到后,相同的代码用于解码令牌。在开发机器上,此代码永远不会更改。我不知道GoDaddy是如何工作的,但似乎每个部署都在另一台(虚拟)机器上(webfarm?)。

一旦机器密钥改变,就不能再解码令牌。因此要求所有用户再次登录。错误“无效授权”是底层身份流的一部分,负责解码和评估收到的令牌。

为了解决这个问题,你必须在配置中设置一个固定的代码。