繁体   English   中英

在WINhost上没有记住ASP.NET SPA WEBAPI BEARER TOKEN

[英]ASP.NET SPA WEBAPI BEARER TOKEN not being remembered on winhost

我有这个使用BEARER TOKEN身份验证的ASP.NET Web SPA web api项目。

我已将它部署到几个不同的地方,本地和蔚蓝云,我没有看到这个问题。

由于预算原因,我决定从托管公司(winhost)购买。 当站点仅从此主机运行时,我只看到以下问题。

问题是在您登录站点并闲置X分钟后,下一个请求失败,直到您刷新并登录。 (我得到401(未经授权))

令牌的到期似乎只有10-20分钟,而不是2周(默认情况下,天蓝色和我的视觉工作室本地)。 我收到时还打印了令牌,为期2周。

我期待的行为是要缓存的承载令牌(我已通过记录标头确认),然后与下一个请求一起发送,然后授权并返回结果。

这个新主机有一些默认的IIS设置,我认为它打破了它。 我已经不得不更改一些默认设置,例如通过IIS管理器手动关闭基本身份验证。

有任何想法吗?

我能找到的唯一符合我所看到的描述的是这个链接。 ASP.NET Web API授权令牌提前到期

我想对那篇文章发表评论,但我没有足够高的声望点。 出于方便,我在下面复制了这篇文章。

我已经实现安全我的网络API(个人账户)的讨论在这里

我在godaddy(共享主机)上托管了该网站,并且其工作正常。 当我使用url“domain.com/token”请求令牌时,我会获得有效期为15天的令牌。 我在“StartupAuth.cs”中设置了这个

AccessTokenExpireTimeSpan = TimeSpan.FromDays(15)

例如:

{
  "access_token":"qwertyuiop.....",
  "token_type":"bearer",
  "expires_in":1209599, 
  "userName":"user@example.com",
  ".issued":"Wed, 11 Feb 2015 01:00:00 GMT",
  ".expires":"Thu, 26 Feb 2015 01:00:00 GMT"
}

(我将值放在上面的代码中,但是您可以了解“.expires”字段。

获取令牌后5分钟,当我尝试通过传递授权访问“get”或“post”或我的API中的任何方法时:标头中的bearer token为:

Authorization: Bearer qwertyuiop.....

我收到此错误:

{"Message":"Authorization has been denied for this request."}

虽然它只是5分钟而且令牌应该持续15天,但它会在5分钟内到期。 当我在5分钟的间隔内请求任何方法“获取”/“发布”时,我在JSON中得到了我的数据的正确响应。 简而言之,授权成功。

我通过Fiddler,Chrome的REST插件以及使用API​​的移动应用程序进行测试,重复了这种行为。

我有会话的web.config值如下(我认为它的相关)

<sessionState timeout="180" />

请注意,不使用表单身份验证,因此不需要在web.config中的该部分超时。

知道发生了什么事吗? 此超时导致使用API​​的移动应用程序的用户不时地重新登录。 任何帮助,将不胜感激。

谢谢。

在IIS中,可以在应用程序级别设置机器密钥,每次应用程序池回收时都会生成新的机器密钥,因此您需要一个新的令牌

这里回答

添加到web.config不受应用程序池回收的影响

<system.web>
   <machineKey validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"
            decryptionKey="261F793EB53B761503AC445E0CA28DA44AA9B3CF06263B77"
            validation="SHA1"/>

请在此处阅读如何生成https://support.microsoft.com/en-us/kb/312906

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM