Vai*_* J. 10 authorization asp.net-mvc-4 asp.net-web-api2 bearer-token
我已经实现安全我的网络API(个人账户)的讨论在这里.
我在godaddy(共享主机)上托管了该网站,并且其工作正常.当我使用url"domain.com/token"请求令牌时,我会获得有效期为15天的令牌.我在"StartupAuth.cs"中设置了这个
AccessTokenExpireTimeSpan = TimeSpan.FromDays(15)
Run Code Online (Sandbox Code Playgroud)
例如:
{
"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"
}
Run Code Online (Sandbox Code Playgroud)
(我将值放在上面的代码中,但是您可以了解".expires"字段.
获取令牌后5分钟,当我尝试通过传递授权访问"get"或"post"或我的API中的任何方法时:标头中的bearer token为:
Authorization: Bearer qwertyuiop.....
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
{"Message":"Authorization has been denied for this request."}
Run Code Online (Sandbox Code Playgroud)
虽然它只是5分钟而且令牌应该持续15天,但它会在5分钟内到期.当我在5分钟的间隔内请求任何方法"获取"/"发布"时,我在JSON中得到了我的数据的正确响应.简而言之,授权成功.
我通过Fiddler,Chrome的REST插件以及使用API的移动应用程序进行测试,重复了这种行为.
我有会话的web.config值如下(我认为它的相关)
<sessionState timeout="180" />
Run Code Online (Sandbox Code Playgroud)
请注意,不使用表单身份验证,因此不需要在web.config中的该部分超时.
知道发生了什么事吗?此超时导致使用API的移动应用程序的用户不时地重新登录.任何帮助,将不胜感激.
谢谢.
小智 9
检查WebServer,在IIS中,可以在应用程序级别设置机器密钥,每次应用程序池回收时都会生成新的机器密钥,因此您需要一个新的令牌.您可以在网站级别或根服务器级别上设置计算机密钥.也许这可能有所帮助
添加到web.config不受应用程序池回收的影响
<system.web>
<machineKey validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"
decryptionKey="261F793EB53B761503AC445E0CA28DA44AA9B3CF06263B77"
validation="SHA1"/>
Run Code Online (Sandbox Code Playgroud)
请在此处阅读如何生成https://support.microsoft.com/en-us/kb/312906
归档时间: |
|
查看次数: |
6747 次 |
最近记录: |