我有一個使用IdentityServer承載令牌認證/訪問令牌驗證進行安全保護的Web API 2 OData v3服務。客戶端是SPA應用程序。我成功使用oidc-token-manager.js庫進行身份驗證,並將授權http頭中的訪問令牌傳遞給使用XMLHttpRequest的常規odata crud操作。IdentityServer3訪問令牌驗證和預簽名url
我的odata服務還支持流式傳輸以上傳和下載文件。同樣,爲了上傳文件,我可以使用XMLHttpRequest在Authorization http頭中傳遞訪問令牌。
但是,要下載文件,我想使用具有href(odata文件下載url通常爲format/odata/myfiles(1)/ $ value)的錨標記。當用戶點擊鏈接時,它應該下載文件(odata服務將內容處置附件頭添加到響應中)。
但是,由於它是由瀏覽器創建的,因此無法在此GET請求的授權標頭中添加訪問令牌。是否有可能將訪問令牌作爲查詢字符串添加到href中的url(所謂的預先登記的url)?這甚至是一個好(安全)的想法?在服務器上,我在我的Startup.cs中使用app.UseIdentityServerBearerTokenAuthentication,那麼這是否能夠在查詢字符串以及授權http頭中查找訪問令牌?
千恩萬謝
REMCO
雖然我發現[此鏈接](http://stackoverflow.com/questions/24501358/how-to-set-a-header-for-a-http-get-request-and -trigger-file-download/24523253#24523253),它顯示了我可以如何將http頭傳入get請求並觸發文件下載,但獲取有關IdentityServer3和預簽名url的回答的問題仍然很有趣 –
由於令牌非常大,您很可能會超出查詢字符串的最大長度。另外,考慮到通過將該標記添加到url,它很可能會被代理等記錄下來,這是你不想要的。當作爲頭部發送時,或在帖子正文中發送時,它位於SSL請求中。 –