[英]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"/>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.