七牛云——对象存储私有空间下载凭证认证失败401[“error“:“download token auth failed“]解决方案
問題描述
官方文檔?
對象存儲?>?產品手冊?>?安全機制?>?下載憑證:https://developer.qiniu.com/kodo/manual/1202/download-token?
解決方案
1、SECRET_KEY不正確。
SecretKey可在下面這地方獲取:
2、?DownloadUrl不完整
DownloadUrl需要包括協議://自定義域名[或者測試域名]/文件名
DownloadUrl = 'http://78re52.com1.z0.glb.clouddn.com/resource/flower.jpg'例:?
/*** 獲取私有空間文件* @param fileKey* @return*/public String getPrivateFile(String fileKey) throws Exception{String encodedFileName = URLEncoder.encode(fileKey, "utf-8").replace("+", "%20");String publicUrl = String.format("%s/%s", "http://" + domain, encodedFileName) ;long expireInSeconds = 3600;//1小時,可以自定義鏈接過期時間String finalUrl = auth.privateDownloadUrl(publicUrl, expireInSeconds);return finalUrl;}?3、官方文檔中的注意事項
注意:
-
為確保客戶端、業務服務器和七牛服務器對于授權截止時間的理解保持一致,需要同步校準各自的時鐘。頻繁返回 401 狀態碼時請先檢查時鐘同步性與生成 e 參數值的代碼邏輯。
-
token 必須放在請求的最后,token 之后的參數會被忽略。以請求?http://test.cinem.net/aaaa.jpg?e=1778754963&token=sQvk4AXf0rEkzcytkr...XjI0M:zwvwiM0wsMBRj46xcby05U=&attname=geral_TS-PFS3010-8ET為例,此時attname=geral_TS-PFS3010-8ET會被忽略,并不生效。
-
對于包含中文或其它非英文字符的 Key,需要做到以下兩點:
-
Key 本身要做 UTF-8 編碼
-
為 URL 簽名之前,對 Path 部分(不含前導 / 符號,通常就是 Key 本身,即上例中的 resource/flower.jpg)做一次URL 安全的 Base64 編碼。
-
參考文章
七牛圖片下載之Token生成
總結
以上是生活随笔為你收集整理的七牛云——对象存储私有空间下载凭证认证失败401[“error“:“download token auth failed“]解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Security——认证失
- 下一篇: Spring Boot——一种包含分页和