日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

在URL中包含V1簽名

除了通過HTTP請求頭部的Authorization字段進行簽名授權外,您還可以生成一個包含簽名和其他必要的請求信息的預簽名URL。通過這種方式,您可以在不透露訪問憑證的情況下,授予第三方在特定有效期內對OSS資源的訪問權限。本文介紹如何使用V1簽名算法實現在URL中包含簽名。

重要

OSS支持更安全的V4簽名算法,建議您使用V4簽名。更多信息,請參見V4簽名

SDK簽名實現

OSS SDK已自動實現V1簽名,您使用OSS SDK時無需關注簽名問題。如果您想了解具體語言的簽名實現,請參考OSS SDK的代碼。OSS SDK簽名實現的文件請參見下表。

SDK

簽名實現

使用示例

Java

OSSV1Signer.java

Java

PHP

SignerV1.php

PHP

Node.js

signatureUrl.js

Node.js

Browser.js

Browser.js

Python

auth.py

Python

Android

ObjectURLPresigner.java

Android

iOS

OSSClient.m

iOS

Go

v1.go

Go

C++

SignerV1.cc

C++

C

oss_auth.c

C

.Net

OssClient.cs

.NET

Ruby

bucket.rb

Ruby

注意事項

  • 使用在URL中簽名的方式,會將授權的數據在過期時間內暴露在互聯網上,請預先評估使用風險。

  • OSS不支持同時在URLHeader中包含簽名。

  • 您可以為PUT操作生成一個預簽名的URL,該URL用于檢查是否上傳了正確的內容。SDK對請求進行預簽名時,將計算請求正文的校驗和,并生成包含在預簽名URL中的MD5校驗和。用戶必須上傳與SDK生成的MD5校驗和相同的內容,否則操作失敗。如果要驗證MD5,只需在請求中增加Content-MD5頭即可。

簽名實現

  • 簽名示例

    https://examplebucket.oss-cn-hangzhou.aliyuncs.com/oss-api.pdf?OSSAccessKeyId=nz2p***********&Expires=1141889120&Signature=****Pxyb****mGa%****272YEAiv****

    如果需要使用STS用戶構造URL簽名,則必須攜帶security-token。

    https://examplebucket.oss-cn-hangzhou.aliyuncs.com/oss-api.pdf?OSSAccessKeyId=nz2p***********&Expires=1141889120&Signature=****Pxyb****mGa%****272YEAiv****&security-token=CAIS****q6Ft5B2yfSjIr****Oz31blR9oWmWBf****DR/xm3Imc****IHxMdHJsCeAcs/Q0lGFR5/sflqJIR****EvCUcZr8szfWcsZos2****u5Jko1be0ewHKeQKZsebWZ+LmNpy/Ht6md1HDkAJq3LL+bk/Mdle5MJqP+/kFC9MMRVuAcCZhDtVbLRcYgq18D3bKMuu3ORPHm3fZCFES2jBxkmRi86+ysIP+phPVlw/90fRH5dazcJW0Zsx0OJo6Wcq+3+FqM6DQlTNM6hwNtoUO1fYUommb54nDXwQIvUjfbtC5qIM/cFVLAYEhAL****TGkvl1h/fejYyfyW****kFCHiPF****JCUSbr4a4sjF6zyPnPWycyCLYXleLzhxPWd/2kagAGaXG69BqwYNvrKKI3W8****bNc1wQDMXQfiHpFCRG6lYhh3****pwH90A3sTlxzRGvi8+****JwrluOHWs+Fj6S6s0cOhKvKRWYE8UuWeXIvv4l6DAGwH****LjLC11f5prUJ****b+3hwuBod32Jx+us/1p996Glao725orcb****

    您可以在簽名URL中添加想要授權的IP地址、IP地址段或VPC ID,避免未授權的終端訪問OSS資源。

    https://examplebucket.oss-cn-hangzhou.aliyuncs.com/oss-api.pdf?&OSSAccessKeyId=44CF****************&Expires=1475462111&Signature=77Dv****************&x-oss-ac-subnet-mask=32
  • 參數說明

    名稱

    類型

    是否必選

    描述

    OSSAccessKeyId

    字符串

    指定URL簽名中使用的AccessKey ID。

    Expires

    數字

    Unix時間戳(自UTC時間19700101號開始的秒數),用于標識該URL的超時時間,單位為秒。如果OSS接收到該URL請求的時間晚于簽名中包含的Expires參數時,則返回請求超時的錯誤碼。例如,當前時間是1141889060,開發者希望創建一個60秒后自動失效的URL,則可以設置Expires時間為1141889120。

    說明

    出于安全考慮,OSS控制臺中默認URL的有效時間為3600秒,最大值為32400秒。關于修改URL超時時間的具體操作,請參見使用文件URL。

    Signature

    字符串

    簽名信息。格式如下:

    Signature = urlencode(base64(hmac-sha1(AccessKeySecret,
              VERB + "\n" 
              + CONTENT-MD5 + "\n" 
              + CONTENT-TYPE + "\n" 
              + EXPIRES + "\n" 
              + CanonicalizedOSSHeaders
              + CanonicalizedResource)))
    • 所有OSS支持的請求和各種Header參數,在URL中進行簽名的算法和在Header中包含簽名的算法類似。

    • 生成URL中的簽名字符串時,除了將Date參數替換為Expires參數外,仍然包含CONTENT-TYPE、CONTENT-MD5、CanonicalizedOSSHeaders簽名版本1中定義的Header(請求中雖然仍有Date請求Header,但無需將Date加入簽名字符串中)。

    • URL中包含簽名時必須對URL進行編碼。如果在URL中多次傳入Signature、ExpiresOSSAccessKeyId,則以第一次傳入的值為準。

    • 使用URL簽名時,OSS會先驗證請求時間是否晚于Expires時間,然后再驗證簽名。

    security-token

    字符串

    安全令牌。只有當使用STS用戶構造URL簽名時,才需要設置此參數。

    說明

    關于搭建STS服務的具體操作,請參見使用STS臨時訪問憑證訪問OSS。您可以通過調用STS服務的AssumeRole接口或者使用各語言STS SDK來獲取臨時訪問憑證。臨時訪問憑證包括臨時訪問密鑰(AccessKey IDAccessKey Secret)和安全令牌(SecurityToken)。

    x-oss-ac-source-ip

    字符串

    指定IP地址或者IP地址段。

    重要
    • 該參數只需要在生成signature時使用,不需要在URL中攜帶該參數。

    • 如果在生成簽名時添加了IP地址或IP地址段,則需要傳遞參數x-oss-ac-subnet-mask,用于標記子網掩碼。

    x-oss-ac-subnet-mask

    數字

    子網掩碼中1的個數。如果請求中攜帶該參數,OSS會將實際請求IP地址與子網掩碼進行求與,然后用于計算簽名是否正確。如果該參數被惡意篡改,將導致簽名無法校驗通過。

    x-oss-ac-vpc-id

    字符串

    指定VPC ID。指定該參數后,OSS會判斷是否為對應VPC ID來源的請求。如果請求是從該VPC ID發起且該參數已賦值,則同時校驗VPC ID和來源IP地址或IP地址段。

    x-oss-ac-forward-allow

    布爾型

    指定是否允許轉發請求。OSS如果檢測到該字段并且請求中帶有X-Forwarded-For(可能為多個IP地址),則將X-Forwarded-For的值用于計算簽名校驗。

    取值如下:

    • true:表示允許轉發請求。

      重要

      設置為true存在請求頭被篡改劫持的風險。

    • false(默認值):不允許轉發請求。

  • 生成簽名的Python示例代碼(只涉及必選參數)

    import base64
    import hmac
    import hashlib
    import urllib
    h = hmac.new("accesskey",
                 "GET\n\n\n1141889120\n/examplebucket/oss-api.pdf",
                 hashlib.sha1)
    urllib.quote(base64.encodestring(h.digest()).strip())

錯誤碼

錯誤碼

返回消息

描述

AccessDenied

403 Forbidden

URL中添加簽名時,Signature、ExpiresOSSAccessKeyId順序可以調換,但不能缺少Signature、ExpiresOSSAccessKeyId中的一個或者多個。

AccessDenied

403 Forbidden

訪問的當前時間晚于請求中設定的Expires時間或時間格式錯誤。

InvalidArgument

400 Bad Request

URL中包含Signature、Expires、OSSAccessKeyId中的一個或者多個,并且Header中也包含簽名消息。