Tous les produits
Search
Centre de documentation

Object Storage Service:Include a V1 signature in a URL

Dernière mise à jour :Sep 24, 2026

Autorisez les requêtes en générant une URL présignée. Une URL présignée constitue une alternative à l'utilisation du champ Authorization dans l'en-tête d'une requête HTTP. Elle contient une signature ainsi que d'autres informations de requête nécessaires. Cette méthode permet d'accorder un accès temporaire aux ressources Object Storage Service (OSS) à un tiers pour une période donnée, sans exposer vos identifiants d'accès. Cette rubrique décrit comment inclure une signature V1 dans une URL.

Important

OSS prend en charge l'algorithme de signature V4, plus sécurisé. Utilisez les signatures V4 pour améliorer la sécurité. Pour plus d'informations, consultez la section Signatures V4.

Implémentation de la signature via le SDK

Les SDK OSS implémentent automatiquement les signatures V1. Vous n'avez pas besoin de gérer les signatures lorsque vous utilisez un SDK OSS. Pour comprendre l'implémentation de la signature pour un langage spécifique, consultez le code source du SDK. Le tableau suivant répertorie les fichiers qui implémentent la signature pour chaque SDK.

SDK

Implémentation de la signature

Exemple d'utilisation

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

Remarques sur l'utilisation

  • Si vous utilisez une URL signée, les données autorisées sont exposées sur Internet jusqu'à l'expiration de l'URL. Évaluez les risques avant d'utiliser cette méthode.

  • OSS ne permet pas d'inclure des signatures à la fois dans l'URL et dans l'en-tête de la requête simultanément.

  • Générez une URL présignée pour une opération PUT afin de garantir que le contenu correct est chargé. Lorsqu'un SDK présigne une requête, il calcule la somme de contrôle MD5 du corps de la requête et l'inclut dans l'URL présignée. L'utilisateur doit charger un contenu dont la somme de contrôle MD5 correspond à celle figurant dans l'URL présignée. Sinon, l'opération échoue. Pour valider la somme MD5, ajoutez l'en-tête Content-MD5 à la requête.

Implémentation de la signature

  • Exemple de signature

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

    Si vous utilisez un utilisateur Security Token Service (STS) pour construire une URL signée, vous devez inclure le paramètre 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****

    Ajoutez une adresse IP spécifique, une plage d'adresses IP ou un ID VPC à l'URL signée pour empêcher les clients non autorisés d'accéder aux ressources OSS.

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

    Nom

    Type

    Obligatoire

    Description

    OSSAccessKeyId

    String

    Oui

    L'ID AccessKey utilisé dans la signature de l'URL.

    Expires

    Number

    Oui

    L'heure d'expiration de l'URL au format . Unix time représente le nombre de secondes écoulées depuis le 1er janvier 1970 à 00:00:00 UTC. Si OSS reçoit la requête après l'heure d'expiration, il renvoie un code d'erreur de délai dépassé. Par exemple, si l'heure actuelle est 1141889060 et que vous souhaitez créer une URL expirant dans 60 secondes, définissez Expires sur 1141889120.

    Remarque

    Pour des raisons de sécurité, la durée de validité par défaut d'une URL dans la console OSS est de 3 600 secondes. La durée de validité maximale est de 32 400 secondes. Pour plus d'informations sur la modification de la durée d'expiration de l'URL, consultez la section Utilisation des URL de fichier.

    Signature

    String

    Oui

    Les informations de signature. Le format est le suivant :

    Signature = urlencode(base64(hmac-sha1(AccessKeySecret,
              VERB + "\n" 
              + CONTENT-MD5 + "\n" 
              + CONTENT-TYPE + "\n" 
              + EXPIRES + "\n" 
              + CanonicalizedOSSHeaders
              + CanonicalizedResource)))
    • L'algorithme de signature dans une URL est similaire à l'algorithme d'inclusion d'une signature dans l'en-tête pour toutes les requêtes OSS prises en charge et les paramètres d'en-tête.

    • Lorsque vous calculez la chaîne de signature à ajouter à une URL, les en-têtes définis dans la signature V1, tels que CONTENT-TYPE, CONTENT-MD5 et CanonicalizedOSSHeaders, sont identiques à ceux utilisés pour calculer la signature ajoutée à l'en-tête Authorization. Toutefois, vous devez remplacer le paramètre Date par le paramètre Expires dans la chaîne de signature. Vous pouvez inclure l'en-tête Date dans la requête, mais il n'est pas nécessaire de l'inclure dans la chaîne de signature.

    • Vous devez encoder l'URL de la signature lorsque vous l'incluez dans une URL. Si Signature, Expires ou OSSAccessKeyId sont transmis plusieurs fois dans l'URL, seule la première valeur est utilisée.

    • Lorsqu'une URL signée est utilisée, OSS vérifie d'abord si l'heure de la requête est postérieure à l'heure Expires, puis valide la signature.

    security-token

    String

    Non

    Le jeton de sécurité. Définissez ce paramètre uniquement lorsque vous utilisez un utilisateur STS pour construire l'URL signée.

    Remarque

    Pour plus d'informations sur la configuration du service STS, consultez la section Utilisation des identifiants d'accès temporaires de STS pour accéder à OSS. Vous pouvez obtenir des identifiants d'accès temporaires en appelant l'opération API STS AssumeRole ou en utilisant les SDK STS pour différents langages. Les identifiants d'accès temporaires comprennent une paire AccessKey temporaire (ID AccessKey et secret AccessKey) et un jeton de sécurité (SecurityToken).

    x-oss-ac-source-ip

    String

    Non

    Spécifie l'adresse IP ou la plage d'adresses IP.

    Important
    • Ce paramètre est utilisé uniquement lors de la génération de la signature. Vous n'avez pas besoin d'inclure ce paramètre dans l'URL.

    • Si vous ajoutez une adresse IP ou une plage d'adresses IP lors de la génération de la signature, vous devez également transmettre le paramètre x-oss-ac-subnet-mask pour spécifier le masque de sous-réseau.

    x-oss-ac-subnet-mask

    Number

    Non

    Le nombre de bits à 1 dans le masque de sous-réseau. Si la requête inclut ce paramètre, OSS effectue une opération ET binaire entre l'adresse IP réelle de la requête et le masque de sous-réseau. Le résultat est utilisé pour vérifier la signature. Si ce paramètre est falsifié, la validation de la signature échoue.

    x-oss-ac-vpc-id

    String

    Non

    Spécifie l'ID VPC. Après avoir spécifié ce paramètre, OSS détermine si la requête provient de l'ID VPC correspondant. Si la requête provient de l'ID VPC spécifié et que ce paramètre est défini, OSS valide à la fois l'ID VPC et l'adresse IP source ou la plage d'adresses IP.

    x-oss-ac-forward-allow

    Boolean

    Non

    Indique s'il faut autoriser les requêtes transférées. Si OSS détecte ce champ et que la requête contient X-Forwarded-For, qui peut contenir plusieurs adresses IP, OSS utilise la valeur de X-Forwarded-For pour valider la signature.

    Les valeurs suivantes sont valides :

    • true : Autorise les requêtes transférées.

      Important

      Définir cette valeur sur true crée un risque de falsification ou de détournement de l'en-tête de requête.

    • false (par défaut) : N'autorise pas les requêtes transférées.

  • Exemple de code Python pour la signature (incluant uniquement les paramètres obligatoires)

    import base64
    import hmac
    import hashlib
    from urllib.parse import quote
    
    access_key_secret = "yourAccessKeySecret"
    string_to_sign = "GET\n\n\n1141889120\n/examplebucket/oss-api.pdf"
    
    h = hmac.new(
        access_key_secret.encode('utf-8'),
        string_to_sign.encode('utf-8'),
        hashlib.sha1
    )
    
    signature = quote(base64.b64encode(h.digest()).decode('utf-8'))
    print(signature)

Codes d'erreur

Code d'erreur

Message renvoyé

Description

AccessDenied

403 Forbidden

Les paramètres Signature, Expires et OSSAccessKeyId sont obligatoires. L'ordre des paramètres n'a pas d'importance.

AccessDenied

403 Forbidden

La requête est reçue après l'heure spécifiée dans le paramètre Expires, ou le format de l'heure est incorrect.

InvalidArgument

400 Bad Request

Au moins un des paramètres Signature, Expires et OSSAccessKeyId est inclus dans l'URL, et les informations de signature sont également incluses dans l'en-tête de requête Authorization.