【发布时间】:2015-04-13 09:18:53
【问题描述】:
如here 所述,我已为我的 Web 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 中的任何方法时:标头中的不记名令牌为:
Authorization: Bearer qwertyuiop.....
我收到此错误:
{"Message":"Authorization has been denied for this request."}
虽然只有 5 分钟,并且令牌应该持续 15 天,但它会在 5 分钟内到期。 当我在 5 分钟的间隔内请求任何方法“get”/“post”时,我的 JSON 数据得到了正确的响应。总之,授权成功。
我已经通过 Fiddler、Chrome 的 REST 插件和使用 API 的移动应用程序对其进行了测试,从而重复了这种行为。
我有如下会话的 web.config 值(我认为它是相关的)
<sessionState timeout="180" />
请注意,不使用表单身份验证,因此 web.config 中该部分的超时是不必要的。
知道发生了什么吗?此超时导致使用 API 的移动应用程序的用户不时重新登录。任何帮助将不胜感激。
谢谢。
【问题讨论】:
-
我也有同样的问题!!有什么帮助吗?
-
添加机器密钥就可以了。 why_not 在下面也提到过。如何将Why_not 的帖子标记为答案?
标签: asp.net-mvc-4 authorization asp.net-web-api2 bearer-token