2012-06-24 33 views
3

我們正在開發使用雲中文件的不同客戶端應用程序。文件必須以安全的授權訪問方式安全地存儲在雲中。另外,一些客戶端應用程序必須能夠通過臨時URL同時讀取這些文件。 我們試圖將其實現到Azure中,但我們遇到了以下問題: - 將私有容器中的blob存儲並生成共享訪問密鑰時,只有一個用戶可以在特定時間讀取該文件。系統的工作方式如下:客戶端應用程序要求Web服務器爲該Blob生成公用URL並將其返回以供使用。問題在於如果另一個客戶端應用程序要求該服務爲同一個blob生成公用URL。在那一刻,第一個變得無法使用。 - 我們公開的容器,但我們沒辦法保留永久URL到blob如何爲同一個Azure blob生成多個臨時訪問URL?

那麼,我們如何爲私有容器中存儲的同一個blob生成多個臨時訪問URL(共享密鑰或類似)呢? 將URL從Windows Azure傳輸到Windows Azure的最佳做法是什麼?即使臨時像20分鐘那樣,其他人也無法捕獲並重用該URL?任何解決方案將與未來的CDN集成一起工作嗎?

我們感謝您的幫助。 謝謝!

+1

「問題是如果另一個客戶端應用程序要求服務爲同一個blob生成一個公共URL,那麼第一個應用程序將無法使用。」 什麼?這不是共享訪問簽名的工作方式。除非你正在使用容器級訪問策略,並且你正在銷燬舊的策略? 你能分享你的代碼嗎? – smarx

+0

同意smarx - 這沒有意義(不是SAS如何工作)。至於未來的CDN使用問題,Windows Azure CDN中的文件必須是公開訪問的。 – mcollier

+1

@smarx - 我認爲你是對的。我發現這個:lPermissions.SharedAccessPolicies.Clear(); –

回答

0

您可以爲blob生成多個共享訪問簽名,並且它們都可以同時使用。這聽起來像您可能在每次生成新的共享訪問簽名時無意中撤銷舊的存儲訪問策略。通過保留(並可能重新使用)舊的存儲訪問策略來解決問題。請參閱以下鏈接以獲取更多信息和示例代碼:

http://msdn.microsoft.com/en-us/library/windowsazure/jj721951.aspx

http://msdn.microsoft.com/en-us/library/windowsazure/ee393341.aspx

爲了保護共享訪問簽名,你應該從服務器通過加密通道發送到客戶端。使用SSL或類似的。

我不相信CDN解決方案可以幫助您滿足您的要求。

相關問題