2014-02-10 45 views
0

目前我正在使用ASP.Net Web API開發REST Web服務,我只從Katana Stack定製開箱即用OAuth提供程序。這個項目的要求也是系統必須能夠處理任何請求時負載平衡器應用在這個系統架構中。 回到我的問題,如何使用loadbalancer時,使ASP.Net Web API令牌對多個應用程序服務器仍然有效?如何在使用loadbalancer時使ASP.Net Web API令牌對多個應用程序服務器仍然有效?

感謝

+0

你在說什麼ASP.Net Web API令牌? –

+0

我的意思是OAuth令牌 – tanto

回答

0

它不是從問題清楚,如果你要充當身份提供商或消耗3PTY身份提供服務...... - 我假設你會IDP和你需要以某種方式在羣集中以相同的方式處理已認證的用戶。這是負載均衡器背後的各種服務器之間的「共享會話狀態」的常見問題。

有兩種方式:

  • 投入到一些企業解決方案(如ScaleOut狀態服務器)和鉤你的應用程序也它
  • 寫自己的

如果您決定寫你自己的窮人「共享會話狀態」有幾種方法。 1)數據庫表 - 使用參數[Key],[Value],[Date](在您的情況下,可能鍵爲OAuth Token,數值爲該用戶的狀態,[Date]是創建令牌的日期;每次觸摸狀態時,您必須通過[Key]更新[Value];還可以根據[日期]實施某種清除

2)Web服務 - 部署box)服務,它將充當「共享會話提供者」 - 與數據庫表基本相同,只有值存儲到HttpCache而不是db表中

3)客戶端上的所有內容 - 提供「共享狀態」不是太長(個人推薦4KB最大)你可以使用cookies直接在客戶端存儲數值

+0

感謝您的回答,實際上我是在上面提到的實施第1和第2點,但它不是解決我上面不明確的問題的方案。但是今天我已經解決了我的問題,解決方案是我必須實現Microsoft.Owin.Security.DataProtection.IDataProtector作爲訪問令牌格式。 AccessTokenFormat =新的TicketDataFormat(新的ApiTokenProtector()) – tanto

相關問題