asp.net-mvc-4 - ASP.NET Web API 授权 token 提前过期

标签 asp.net-mvc-4 authorization asp.net-web-api2 bearer-token

我已经为我的 Web api(个人帐户)实现了安全性,如所讨论的 here .

我在 godaddy(共享主机)上托管了该网站,并且运行良好。 当我使用 url“domain.com/token”请求 token 时,我得到的 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”字段的概念。

获取 token 后 5 分钟,当我尝试通过传递授权来访问“get”或“post”或 API 中的任何方法时: header 中的不记名 token 为:

Authorization: Bearer qwertyuiop.....

我收到此错误:

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

虽然只有 5 分钟,并且 token 应该持续 15 天,但它会在 5 分钟内过期。 当我在 5 分钟的间隔内请求任何方法“get”/“post”时,我会得到正确的响应以及 JSON 数据。总之,授权成功。

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

我的 session 的 web.config 值如下(我认为它相关)

<sessionState timeout="180" />

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

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

谢谢。

最佳答案

检查Web服务器,在IIS中,机器 key 可以在应用程序级别设置,每次应用程序池回收时都会生成一个新的机器 key ,因此您需要一个新的 token 。您可以在网站级别或根服务器级别设置机器 key 。也许这可能有帮助

关于asp.net-mvc-4 - ASP.NET Web API 授权 token 提前过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28480848/

相关文章:

c# - 如何在我的 JQUERY 提交中添加额外的数据?

php - 如何防止用户通过编写 URL 直接访问我的 html 页面?

java - Keycloak公共(public)客户端和授权

python - 我是否使用 IOT 设备的 websocket 对其进行了过度设计 将数据推送到端点

.net - HttpClient.ReadAsAsync<T> 在使用 [Serializable] 时返回空对象

odata - 从 Web API 处理 OData 时出现值不能为空错误

jquery-mobile - 全局禁用 MVC 移动网站渲染

c# - 局部 View 中的不同模型

asp.net-mvc-4 - 无法让 ASP.NET 4 Web API 返回状态代码 "201 - Created"以成功进行 POST

authentication - OAuth2 对于 Web 应用程序的安全性如何