亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

API 簽名算法 對(duì)象存儲(chǔ) US3

ernest.wang / 2973人閱讀

摘要:通常我們將此過(guò)程稱(chēng)為簽署請(qǐng)求并且我們將輸出算法稱(chēng)為簽名,因?yàn)樗鼤?huì)模擬真實(shí)簽名的安全屬性。查詢字符串請(qǐng)求身份驗(yàn)證方法與普通的方法稍有差異,不同之處僅在于請(qǐng)求參數(shù)和元素的格式。請(qǐng)注意,在中,位置元素已替換為。

API 簽名算法

本篇目錄

空間管理簽名算法文件管理簽名算法文件 ETag 生成方法

US3 REST API 基于 HMAC(哈希消息身份驗(yàn)證碼)密鑰使用自定義 HTTP 方案進(jìn)行身份驗(yàn)證。要對(duì)請(qǐng)求進(jìn)行身份驗(yàn)證,您首先需要合并請(qǐng)求的選定元素以形成一個(gè)字符串。然后,您可以使用 UCloud 私有訪問(wèn)密鑰來(lái)計(jì)算該字符串的 HMAC。通常我們將此過(guò)程稱(chēng)為“簽署請(qǐng)求”并且我們將輸出 HMAC 算法稱(chēng)為“簽名”,因?yàn)樗鼤?huì)模擬真實(shí)簽名的安全屬性。最后,您可以使用本部分中介紹的語(yǔ)法,作為請(qǐng)求的參數(shù)添加此簽名。

系統(tǒng)收到經(jīng)身份驗(yàn)證的請(qǐng)求時(shí),將提取您申領(lǐng)的 UCloud 私有訪問(wèn)密鑰,并以相同的使用方式將它用于計(jì)算已收到的消息的簽名。然后,它會(huì)將計(jì)算出的簽名與請(qǐng)求者提供的簽名進(jìn)行對(duì)比。如果兩個(gè)簽名相匹配,則系統(tǒng)認(rèn)為請(qǐng)求者必須擁有對(duì) UCloud 私有訪問(wèn)密鑰的訪問(wèn)權(quán)限,因此充當(dāng)向其頒發(fā)密鑰的委托人的頒發(fā)機(jī)構(gòu)。如果兩個(gè)簽名不匹配,那么請(qǐng)求將被丟棄,同時(shí)系統(tǒng)將返回錯(cuò)誤消息。

基于以上的原理,我們對(duì)空間管理和文件管理兩套接口提供兩種原理一樣但是細(xì)節(jié)不同的鑒權(quán)過(guò)程。

空間管理簽名算法

賬戶的公私鑰可以在 UCloud 控制臺(tái)中 API 產(chǎn)品 - API 密鑰,點(diǎn)擊顯示 API 密鑰獲取。

空間管理的簽名使用查詢字符串的簽名方式,客戶端通過(guò)把簽名字段作為一個(gè) query 字段傳遞給服務(wù)端請(qǐng)求授權(quán)驗(yàn)證。攜帶了簽名(Signature)的創(chuàng)建空間請(qǐng)求具有如下的格式:

GET /Type=public&BucketName=demobucket&PublicKey=uclouddemo@mail.com45207436768156091&Action=CreateBucket&Signature=13f7989d4a5a8ued83c0e57ah43b3607bc506c7c HTTP/1.1

其中 Signature 的偽代碼計(jì)算方式如下:

//生成請(qǐng)求的 query 字典
querys = {"PublicKey" : publicKey} + {其他 query 字段}
//對(duì) query 字典按照字典排序方式(lexicographical order)排序
querys = querys.sort()
//生成 signstring
signstring = ""
for key, value in querys {
   signstring += key + value
}
//將私鑰加入簽名
signstring += privateKey
//按照SHA1(RFC 3174)計(jì)算簽名
signature = sha1(signstring)
//以16進(jìn)制顯示簽名
signature = HEX(signature)

其他空間管理 API 的簽名均可使用同樣的計(jì)算方式生成。

文件管理簽名算法

文件管理的簽名有兩種不同的方式通過(guò) HTTP 請(qǐng)求傳遞給服務(wù)器,分別是身份驗(yàn)證標(biāo)頭和查詢字符串請(qǐng)求身份驗(yàn)證替代項(xiàng)。

身份驗(yàn)證標(biāo)頭

該方式使用 Authorization 頭部字段傳遞簽名數(shù)據(jù),并放置于各 HTTP 請(qǐng)求的報(bào)文頭中,如下圖所示,身份驗(yàn)證標(biāo)頭具有以下形式:

Authorization: UCloud UCloudPublicKey:Signature

其中,Signature 是一個(gè)哈希值,具體為請(qǐng)求中特定元素的 HMAC-SHA1(RFC2104),因此 Signature 會(huì)因請(qǐng)求不同而異。如果客戶端請(qǐng)求中隨附的 Signature 與服務(wù)端計(jì)算出的 Signature 相匹配,則證明請(qǐng)求者擁有 UCloud 允許的訪問(wèn)權(quán)限。以下是 Authorization 身份驗(yàn)證標(biāo)頭構(gòu)造的偽代碼:

Authorization = "UCloud" + " " + UCloudPublicKey + ":" + Signature
Signature = Base64( HMAC-SHA1( UCloudPrivateKey, UTF-8-Encoding-Of( StringToSign ) ) )
StringToSign = HTTP-Verb + "
" +
    Content-MD5 + "
" +
    Content-Type + "
" +
    Date + "
" +
    CanonicalizedUCloudHeaders +
    CanonicalizedResource
CanonicalizedUCloudHeaders = <described below>
CanonicalizedResource = "/" + Bucket + "/" + Key

StringToSign 中包括兩類(lèi)標(biāo)頭元素:

一類(lèi)是位置標(biāo)頭,僅有 3 個(gè),分別是 Content-MD5、Content-Type 和 Date,在 StringToSign 中不包括這些標(biāo)頭的名稱(chēng),僅包括它們?cè)谡?qǐng)求中的值,如果請(qǐng)求中這些標(biāo)頭不存在,需要用空字符串("")代替;另一類(lèi)是 UCloud 附加標(biāo)頭,以X-UCloud-開(kāi)頭,此類(lèi)標(biāo)頭需要按照下面指定的方法構(gòu)造 CanonicalizedUCloudHeaders 字符串后加入到 StringToSign 中。

備注:

如果位置標(biāo)頭不在請(qǐng)求中(例如,Content-Type 或 Content-MD5 對(duì)于 PUT 請(qǐng)求是可選的,并且對(duì)于GET請(qǐng)求沒(méi)有任何意義),必須使用空字符串""替換該位置;BASE64 使用 standardbase64,不是 URLSafe 的 base64 算法,下同;當(dāng)使用 POST 表單上傳時(shí),簽名使用的 Content-Type 字段應(yīng)該是 form 參數(shù)中的 Content-Type 字段(即文件本身的 mimetype),而非 HTTP 請(qǐng)求的 Content-Type。UCloudPublicKey 和 UCloudPrivateKey 對(duì)應(yīng) 令牌管理 中創(chuàng)建的令牌,用戶也可以用 UCloud 私有訪問(wèn)密鑰進(jìn)行訪問(wèn)。Key使用原始字符串即可,無(wú)需經(jīng)過(guò)url編碼

計(jì)算CanonicalizedUCloudHeaders步驟

將每個(gè)以X-UCloud-開(kāi)頭的 HTTP 標(biāo)頭名稱(chēng)轉(zhuǎn)換為小寫(xiě)。例如X-UCloud-Date”改為“x-ucloud-date。

根據(jù)標(biāo)頭名稱(chēng)按字典順序排列標(biāo)頭集。

按照 RFC2616 中第 4.2 節(jié)中的規(guī)定,將相同名稱(chēng)的標(biāo)頭字段合并為一個(gè)header-name:comma-separated-value-list對(duì),各值之間不留空格。

例如,可以將元數(shù)據(jù)標(biāo)頭x-ucloud-meta-username:fredx-ucloud-meta-username:barney合并為單個(gè)標(biāo)頭x-ucloud-meta-username:fred,barney。

通過(guò)將折疊空格(包括換行符)替換為單個(gè)空格,“展開(kāi)”跨多個(gè)行的長(zhǎng)標(biāo)頭(按照 RFC2616 中第 4.2 節(jié)允許的方式)。

刪除標(biāo)頭中冒號(hào)周?chē)目崭?。例如,?biāo)頭x-ucloud-meta-username:fred,barney改為x-ucloud-meta-username:fred,barney。

最后,請(qǐng)向生成的列表中的每個(gè)標(biāo)準(zhǔn)化標(biāo)頭附加換行字符(U+000A)。通過(guò)將此列表中所有的標(biāo)頭規(guī)范化為單個(gè)字符串,構(gòu)建 CanonicalizedUcloudHeaders 元素。

示例

確定使用 API 接口,例如使用 PUTFile 接口,簽名前的請(qǐng)求如下

PUT /demokey HTTP/1.1 Host: demobucket.ufile.ucloud.cn Content-Length: 11434 Content-Type: image/jpeg X-UCloud-Foo: foo X-UCloud-Bar: bar1 X-UCloud-Bar: bar2

拼接簽名字符串對(duì)照 step1 的請(qǐng)求中的各個(gè)參數(shù),程序中的各變量取值如下(采用偽代碼描述)

bucket = "demobucket"
key = "demokey"
http_verb = "PUT"
content_md5 = "" 
content_type = "image/jpeg"
date = "" 
canonicalized_ucloud_headers = "x-ucloud-foo:foo" + "
" + "x-ucloud-bar:bar1,bar2" + 
"
canonicalized_resource = "/" + "demobucket" + "/" + "demokey"
string2sign = "PUT" + "
"
    + "" + "
"
    + "image/jpg" + "
"
    + "" + "
"
    + "x-ucloud-foo:foo" + "
" + "x-ucloud-bar:bar1,bar2" + "
"
    + "/demobucket/demokey"

string2sign = "PUT

image/jpeg

x-ucloud-foo:foo
x-ucloud-bar:bar1,bar2
/demobucket/demokey"
hmac-sha1 運(yùn)算

使用 UCloud 分配給您的私鑰對(duì)簽名字符串做 hmac-sha1 運(yùn)算

hmacstring = hmac-sha1(privateKey, string2sign)
base64 運(yùn)算

對(duì)生成的 hmacstring 做 base64 運(yùn)算

base64string = base64(hmacstring) = S5FVD2w613MKb/hisjaqHdjvn9U=

生成最終簽名格式

signature = UCloud demouser@ucloud.cn13424346821929713944:S5FVD2w613MKb/hisjaqHdjvn9U=

生成帶簽名的 HTTP 請(qǐng)求

PUT /demokey HTTP/1.1 Host: demobucket.ufile.ucloud.cn Content-Length: 11434 Content-Type: image/jpeg X-UCloud-Foo: foo X-UCloud-Bar: bar1 X-UCloud-Bar: bar2 Authorization: UCloud demouser@ucloud.cn13424346821929713944:S5FVD2w613MKb/hisjaqHdjvn9U=

查詢字符串請(qǐng)求身份驗(yàn)證替代項(xiàng)

可以通過(guò)傳遞請(qǐng)求信息作為查詢字符串參數(shù),而不是使用 AuthorizationHTTP 標(biāo)頭來(lái)驗(yàn)證特定類(lèi)型的請(qǐng)求。這在允許第三方瀏覽器直接訪問(wèn)您的 US3 私有空間的文件,而無(wú)需代理請(qǐng)求時(shí)非常有用。其概念是構(gòu)建一個(gè)“預(yù)簽名”的請(qǐng)求并將其編碼為最終用戶瀏覽器可檢索的 URL。此外,您還可以通過(guò)指定過(guò)期時(shí)間來(lái)限制預(yù)簽名請(qǐng)求。

以下是查詢字符串經(jīng)身份驗(yàn)證的 US3 REST 請(qǐng)求示例。

GET /demokey.jpg?UCloudPublicKey=AKIAIOSFODNN7EXAMPLE&Expires=1141889120&Signature=vjbyPxybdZaNmGa%2ByT272YEAiv4%3D HTTP/1.1
Host: demobucket.s3.ucloud.cn
Date: Mon, 26 Mar 2007 19:37:58 +0000

查詢字符串請(qǐng)求身份驗(yàn)證方法與普通的方法稍有差異,不同之處僅在于 Signature 請(qǐng)求參數(shù)和 StringToSign 元素的格式。下面的偽語(yǔ)法演示了查詢字符串請(qǐng)求身份驗(yàn)證方法。

Signature = URL-Encode( Base64( HMAC-SHA1( UCloudPrivateKey, UTF-8-Encoding-Of( StringToSign ) ) ) );
StringToSign = HTTP-VERB + "
" +
    "
" +
    "
" +
    Expires + "
" +
    CanonicalizedUCloudHeaders +
    CanonicalizedResource; 

請(qǐng)注意,在 StringToSign 中,HTTPDate 位置元素已替換為 Expires。CanonicalizedUCloudHeaders 和 CanonicalizedResource 是相同的。

文件 ETag 生成方法

文件 ETag 可用于查詢文件是否可以進(jìn)行秒傳。

具體算法的偽代碼如下:

if filesize<=4MB:
    hash = base64_url_safe(blkcnt, sha(file))
else:
    hash = base64_url_safe(blkcnt, sha(sha(blk0), sha(blk1)...))
字段含義
    blkcnt:文件以4MB為一個(gè)塊進(jìn)行切分后的塊個(gè)數(shù), 占4個(gè)字節(jié),以小端模式保存。
    blkN:第N(N>=0)個(gè)數(shù)據(jù)塊的數(shù)據(jù)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/126651.html

相關(guān)文章

  • 概覽 對(duì)象存儲(chǔ) US3

    摘要:概覽概覽產(chǎn)品簡(jiǎn)介產(chǎn)品概述功能概覽產(chǎn)品優(yōu)勢(shì)使用限制存儲(chǔ)類(lèi)型地域和域名計(jì)量計(jì)費(fèi)產(chǎn)品價(jià)格計(jì)費(fèi)規(guī)則欠費(fèi)處理計(jì)費(fèi)案例快速上手開(kāi)通服務(wù)開(kāi)始使用控制臺(tái)指南存儲(chǔ)空間日志管理文件管理生命周期靜態(tài)網(wǎng)站托管域名管理鏡像回源跨區(qū)域復(fù)制跨域設(shè)置數(shù)據(jù)分析防盜鏈統(tǒng)計(jì)報(bào) 概覽產(chǎn)品簡(jiǎn)介產(chǎn)品概述功能概覽產(chǎn)品優(yōu)勢(shì)使用限制存儲(chǔ)類(lèi)型地域和域名計(jì)量計(jì)費(fèi)產(chǎn)品價(jià)格計(jì)費(fèi)規(guī)則欠費(fèi)處理計(jì)費(fèi)案例快速上手開(kāi)通 US3 服務(wù)開(kāi)始使用 US3控制臺(tái)指南...

    ernest.wang 評(píng)論0 收藏2651
  • 下載與環(huán)境準(zhǔn)備 對(duì)象存儲(chǔ) US3

    摘要:示例移動(dòng)到可執(zhí)行目錄下配置信息內(nèi)同,配置路徑自定義。卷的序列號(hào)是的目錄個(gè)文件字節(jié)個(gè)目錄可用字節(jié)進(jìn)行掛載操作這里掛載到盤(pán),并且指定為的用戶,日志級(jí)別為,預(yù)讀窗口為,掛載的桶名為注意目前下掛載只能前臺(tái)掛載 下載與環(huán)境準(zhǔn)備本篇目錄運(yùn)行環(huán)境下載鏈接配置賬號(hào)訪問(wèn)信息運(yùn)行環(huán)境US3FS基于Linux下fuse和Windows平臺(tái)下winfsp實(shí)現(xiàn),您的機(jī)器需要支持fuse或winfsp。建議您將US3F...

    ernest.wang 評(píng)論0 收藏902
  • ZPan自建網(wǎng)盤(pán)存儲(chǔ)-基于各大云存儲(chǔ)商的網(wǎng)盤(pán)系統(tǒng)zpan安裝使用教程

    想自建網(wǎng)盤(pán)但是又苦于數(shù)據(jù)太大,購(gòu)買(mǎi)大存儲(chǔ)容量的VPS主機(jī)價(jià)格太貴?不妨試試ZPan自建網(wǎng)盤(pán)存儲(chǔ)。ZPan致力于打造一款不限速的網(wǎng)盤(pán)系統(tǒng),因此采用客戶端直連云存儲(chǔ)的方式進(jìn)行設(shè)計(jì),即它不支持本地存儲(chǔ),你的所有數(shù)據(jù)都是存在第三方存儲(chǔ)商那里。目前ZPan支持所有兼容S3協(xié)議的云存儲(chǔ)平臺(tái),包括阿里云OSS 、騰訊云COS 、七牛云Kodo 、Ucloud US3(暫不支持自動(dòng)設(shè)置CORS) 、華為云OBS ...

    番茄西紅柿 評(píng)論0 收藏2637
  • 【歸檔存儲(chǔ) UArchive】主要概念、產(chǎn)品優(yōu)勢(shì)

    摘要:歸檔存儲(chǔ)空間英文名稱(chēng),是歸檔文件的組織單位,相當(dāng)于目錄的作用,也是計(jì)費(fèi)權(quán)限控制等功能的管理單位。歸檔文件英文名稱(chēng),是數(shù)據(jù)操作的基本單元,支持任意數(shù)據(jù)類(lèi)型。主要概念注:UArchive 產(chǎn)品已作為歸檔存儲(chǔ)類(lèi)型合并至 US3 對(duì)象存儲(chǔ),目前不再向新用戶提供獨(dú)立的歸檔存儲(chǔ)服務(wù)。如需使用更低成本的對(duì)象存儲(chǔ)服務(wù),請(qǐng)至 US3 對(duì)象存儲(chǔ)控制臺(tái) 。更多 US3 歸檔存儲(chǔ)類(lèi)型的使用說(shuō)明請(qǐng)參考 數(shù)據(jù)歸檔方案。...

    Tecode 評(píng)論0 收藏0
  • UCloud對(duì)象存儲(chǔ)us3使用方法

    摘要:文件管理控制臺(tái)文件管理大于工具分片上傳工具使用之前請(qǐng)配置內(nèi)外網(wǎng)不同地區(qū)域名不同,詳情參考文檔上傳工具可以配置相關(guān)客戶端密鑰填寫(xiě)公私鑰注固定域名不加后綴目前僅中國(guó)北京二,中國(guó)香港,越南胡志明,韓國(guó)首爾,巴西圣US3文件管理1、控制臺(tái)文件管理(大于500M 工具分片上傳) 2、filemgr工具h(yuǎn)ttps://docs.ucloud.cn/ufile/tools/tools/tools_file...

    Tecode 評(píng)論0 收藏0
  • 存儲(chǔ)成本降低80%!US3在海量數(shù)據(jù)歸檔存儲(chǔ)下的成本優(yōu)化技術(shù)實(shí)踐

    摘要:三是可以降低我們的寫(xiě)放大,在寫(xiě)入時(shí)不會(huì)由于需要更新元數(shù)據(jù)而寫(xiě)入兩次,這在隨機(jī)能力不是強(qiáng)項(xiàng)的硬盤(pán)場(chǎng)景下也格外重要。前言UCloud在2020年8月正式發(fā)布了基于US3的全新一代歸檔存儲(chǔ)產(chǎn)品,該產(chǎn)品采用UCloud全新自研存儲(chǔ)架構(gòu),相較標(biāo)準(zhǔn)存儲(chǔ)降低近80%存儲(chǔ)成本的同時(shí),與市場(chǎng)同類(lèi)歸檔存儲(chǔ)產(chǎn)品相比降低近30%的價(jià)格。據(jù)IDC的預(yù)測(cè),全球年新增數(shù)據(jù)量到2025年將達(dá)175ZB,真正能存儲(chǔ)下來(lái)的數(shù)據(jù)...

    Tecode 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<