2016-08-19 56 views
0

我的理解:在Azure應用服務中,您可以通過在Azure門戶中設置「Always On」設置將服務設置爲基本上永不「入睡」。服務停止後Azure應用服務令牌丟失

雖然這是對服務的一個簡單改變,但我試圖避免服務在不使用時不斷運行,並且增加了託管服務的每月費用。

我的兩難處境是我有一個Azure App Service正在運行,我對Xamarin Forms應用程序進行了身份驗證。在登錄過程中,我將OAuth令牌返回給設置爲在15天內過期的客戶端(需要測試一段時間)。

Azure服務運行時一切正常,但如果Azure服務「睡着了」,那麼我將被迫再次登錄 - 這導致我相信服務發出的令牌在服務掉落後已經丟失睡着了。

我的問題是:有沒有辦法在「入睡」之前將當前令牌存儲在Azure表存儲器(或其他東西)中,然後在服務「喚醒」時從同一存儲器中取出?

我發現下面的問題,但不能得到的如何堅持承載令牌清醒的認識: How are bearer tokens stored server-side in Web API 2?

我一直在尋找高和低,如何做到這一點明確的指示,讓如果這甚至是可能的話就單獨使用

任何幫助將不勝感激。

+0

爲了說明這是您的場景,您正在構建自定義身份驗證機制,它將爲您的客戶端提供訪問令牌,並且您的客戶端將利用此令牌訪問服務中的API?現在你想將這個令牌存儲在Table Storage中? –

+0

嗨加里 - 是的,但不是針對特定用戶,而是針對所有有效(未過期)令牌。作爲一個例子(使用傳統的asp.net網站),您可以使用global.asax在Application_Start/Application_Stop上執行某些活動。我想在應用程序服務休眠之前堅持這些標記(不做任何請求),但是當它醒來時,我想重新加載持久性標記,以便不需要以下內容: - 強制用戶重新登錄移動應用程序 - 未將Azure應用程序服務設置爲「始終開啓」 除非您認爲可能比使用Azure表格存儲更好。 – XxtappsxX

回答

1

你找到的答案是How are bearer tokens stored server-side in Web API 2?是對的。通常,我們會將訪問令牌存儲在客戶端。你可以將它存儲在你的客戶端,本地存儲,sqlite甚至文件中的任何地方。只是爲了確保,您的應用程序可以取回訪問令牌。

當您的應用程序向受保護服務器發送HTTP請求時,您將在Authorization標頭中設置訪問令牌。

而你的服務器一旦得到一個HTTP請求,它就會驗證令牌並授權用戶。