Object Storage Service (OSS) akan secara bertahap menghentikan penggunaan Signature V1. Untuk memastikan kelancaran aplikasi Anda, segera tingkatkan ke Signature V4 yang lebih aman.
Cara meningkatkan dari Signature V1 ke Signature V4
Ikuti panduan yang sesuai untuk menyelesaikan peningkatan berdasarkan penggunaan Anda saat ini.
Alat | Tipe | Versi yang mendukung V4 | Panduan peningkatan |
OSS SDK | Java | ||
Python V2 | |||
Python V1 | |||
Go V2 | |||
Go V1 | |||
PHP V2 | |||
PHP V1 | |||
C# V2 | |||
C# V1 | |||
JavaScript | |||
C++ | |||
C | |||
Swift | |||
Objective-C | |||
Android | |||
ossutil | ossutil 2.0 | ||
ossutil 1.0 | |||
ossfs | ossfs 2.0 | ||
ossfs 1.0 | |||
API (konstruksi tanda tangan manual) | Untuk informasi tentang cara meningkatkan algoritma tanda tangan V1 yang dibuat secara manual ke V4, lihat API (konstruksi tanda tangan manual). | ||
Konsol OSS | OSS ditingkatkan secara otomatis. Prosesnya transparan bagi pengguna. | ||
OSS SDK
Java
Tingkatkan OSS Java SDK ke versi 3.17.4 atau yang lebih baru.
Saat menginisialisasi OSS Client dengan Signature V4, ikuti langkah-langkah berikut:
Tentukan ID wilayah bucket sebagai pengenal untuk wilayah permintaan. Sebagai contoh, ID wilayah untuk China (Hangzhou) adalah
cn-hangzhou.Nyatakan secara eksplisit penggunaan algoritma tanda tangan V4, seperti:
SignVersion.V4.
Contoh kode
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
public class OSSClientV4 {
public static void main(String[] args) throws Exception {
// Tentukan endpoint wilayah tempat bucket berada. Dalam contoh ini, endpoint wilayah China (Hangzhou) digunakan.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan ID wilayah bucket. Dalam contoh ini, ID wilayah China (Hangzhou) digunakan: cn-hangzhou.
String region = "cn-hangzhou";
// Dapatkan kredensial dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan bahwa variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Buat instance OSSClient.
// Saat Anda tidak lagi menggunakan instance OSSClient, panggil metode shutdown untuk melepaskan sumber daya.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
// Nyatakan secara eksplisit penggunaan algoritma tanda tangan V4.
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
// Gunakan instance OSSClient untuk mengirim permintaan, seperti mengunggah, mengunduh, atau mengelola objek.
// Saat Anda tidak lagi menggunakan instance OSSClient, panggil metode shutdown untuk melepaskan sumber daya.
ossClient.shutdown();
}
}Python
Python SDK V2
Semua versi OSS Python SDK V2 mendukung Signature V4 secara default.
Saat menginisialisasi OSS Client dengan Signature V4, lakukan langkah berikut:
Tentukan ID wilayah bucket sebagai pengenal untuk wilayah permintaan. Sebagai contoh, ID wilayah untuk China (Hangzhou) adalah
cn-hangzhou.
Contoh kode
import alibabacloud_oss_v2 as oss
def main():
# Dapatkan kredensial akses dari variabel lingkungan untuk autentikasi.
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Muat konfigurasi default SDK dan tentukan penyedia kredensial.
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
# Metode 1: Tentukan hanya wilayah.
# Tentukan wilayah tempat bucket berada. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
cfg.region = 'cn-hangzhou'
# # Metode 2: Tentukan endpoint dan wilayah.
# # Tentukan wilayah tempat bucket berada. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
# cfg.region = 'cn-hangzhou'
# # Tentukan endpoint publik wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com.
# # Untuk menggunakan protokol HTTP, atur endpoint menjadi http://oss-cn-hangzhou.aliyuncs.com.
# cfg.endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'
# Gunakan konfigurasi untuk membuat instance Client.
client = oss.Client(cfg)
# Gunakan instance Client untuk melakukan operasi selanjutnya.
# Panggil fungsi utama saat skrip dijalankan langsung.
if __name__ == "__main__":
main() # Titik masuk skrip. Saat skrip dijalankan langsung, fungsi utama dipanggil.Python SDK V1
Tingkatkan OSS Python SDK V1 ke versi 2.18.4 atau yang lebih baru.
Saat menginisialisasi OSS Client dengan Signature V4, lakukan langkah-langkah berikut:
Tentukan ID wilayah bucket sebagai pengenal untuk wilayah permintaan. Sebagai contoh, ID wilayah untuk China (Hangzhou) adalah
cn-hangzhou.Nyatakan secara eksplisit penggunaan algoritma tanda tangan V4. Contohnya:
oss2.ProviderAuthV4.
Contoh kode
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum Anda menjalankan kode contoh, pastikan bahwa variabel lingkungan telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com.
endpoint = 'yourEndpoint'
# Tentukan wilayah endpoint. Contoh: cn-hangzhou.
region = 'cn-hangzhou'
# Tentukan nama bucket.
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', region=region) Go
Go SDK V2
Semua versi OSS Go SDK V2 mendukung Signature V4 secara default.
Saat menginisialisasi OSS Client dengan Signature V4, lakukan langkah berikut:
Tentukan ID wilayah bucket sebagai pengenal untuk wilayah permintaan. Sebagai contoh, ID wilayah untuk China (Hangzhou) adalah
cn-hangzhou.
Contoh kode
package main
import (
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v/credentials"
)
func main() {
// Metode 1: Tentukan hanya wilayah.
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion("cn-hangzhou")
// Metode 2: Tentukan endpoint dan wilayah.
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
// Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com. Untuk menggunakan protokol HTTP, atur endpoint menjadi http://oss-cn-hangzhou.aliyuncs.com
// cfg := oss.LoadDefaultConfig().
// WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
// WithRegion("cn-hangzhou").
// WithEndpoint("https://oss-cn-hangzhou.aliyuncs.com")
// Buat instance OSSClient
client := oss.NewClient(cfg)
// Gunakan instance OSSClient untuk melakukan operasi selanjutnya...
}
Go SDK V1
Semua versi Go SDK V2 mendukung Signature V4 secara default. Kami merekomendasikan Anda bermigrasi dari Go SDK V1 ke Go SDK V2.
Tingkatkan OSS Go SDK V1 ke versi 3.0.2 atau yang lebih baru.
Saat menginisialisasi OSS Client dengan Signature V4, lakukan langkah-langkah berikut:
Tentukan ID wilayah bucket sebagai pengenal untuk wilayah permintaan. Sebagai contoh, ID wilayah untuk China (Hangzhou) adalah
cn-hangzhou.Nyatakan secara eksplisit penggunaan algoritma tanda tangan V4. Contohnya:
oss.AuthV4.
Contoh kode
package main
import (
"log"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
// Panggil handleError untuk menangani kesalahan yang tidak dapat diperbaiki dan hentikan program setelah mencatat pesan kesalahan.
func handleError(err error) {
log.Fatalf("Error: %v", err)
}
// Gunakan setupClient untuk membuat dan mengonfigurasi instance OSSClient.
// Parameter:
//
// endpoint: endpoint wilayah tempat bucket berada.
// region: wilayah tempat bucket berada.
//
// Kembalikan instance OSSClient yang dibuat.
func setupClient(endpoint, region string) (*oss.Client, error) {
// Dapatkan kredensial akses dari variabel lingkungan.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
return nil, err
}
// Buat instance OSSClient dan gunakan algoritma tanda tangan V4.
client, err := oss.New(endpoint, "", "", oss.SetCredentialsProvider(&provider), oss.AuthVersion(oss.AuthV4), oss.Region(region))
if err != nil {
return nil, err
}
return client, nil
}
func main() {
// Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com. Tentukan endpoint sebenarnya Anda.
endpoint := "yourEndpoint"
// Tentukan ID wilayah yang sesuai dengan endpoint. Contoh: cn-hangzhou.
region := "yourRegion"
// Periksa apakah variabel lingkungan telah dikonfigurasi.
if endpoint == "" || region == "" {
log.Fatal("Silakan atur yourEndpoint dan yourRegion.")
}
// Buat dan konfigurasikan instance OSSClient.
client, err := setupClient(endpoint, region)
if err != nil {
handleError(err)
}
// Tampilkan informasi klien.
log.Printf("Client: %#v\n", client)
}
PHP
PHP SDK V2
Semua versi OSS PHP SDK V2 mendukung Signature V4 secara default.
Saat menginisialisasi OSS Client dengan Signature V4, lakukan langkah berikut:
Tentukan ID wilayah bucket sebagai pengenal untuk wilayah permintaan. Contohnya, ID wilayah untuk China (Hangzhou) adalah
cn-hangzhou.
<?php
// Sertakan file autoload untuk memuat dependensi.
require_once __DIR__ . '/../vendor/autoload.php;
use AlibabaCloud\Oss\V2 as Oss;
// Gunakan EnvironmentVariableCredentialsProvider untuk mengambil AccessKey ID dan AccessKey secret dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
# Muat konfigurasi default SDK dan tentukan penyedia kredensial.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider(credentialsProvider: $credentialsProvider); // Tentukan penyedia kredensial.
// Metode 1: Tentukan hanya wilayah.
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
$cfg->setRegion(region: "cn-hangzhou");
// // Metode 2: Tentukan endpoint dan wilayah.
// // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
// // Tentukan endpoint publik wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com.
// // Untuk menggunakan protokol HTTP, atur endpoint menjadi http://oss-cn-hangzhou.aliyuncs.com.
// $cfg->setRegion(region: 'cn-hangzhou')->setEndpoint(endpoint: 'https://oss-cn-hangzhou.aliyuncs.com');
// Buat instance OSSClient.
$client = new Oss\Client($cfg);
// Gunakan instance OSSClient untuk melakukan operasi selanjutnya.PHP SDK V1
Tingkatkan OSS PHP SDK V1 ke versi 2.7.0 atau yang lebih baru.
Saat menginisialisasi OSS Client dengan Signature V4, lakukan langkah-langkah berikut:
Tentukan ID wilayah bucket sebagai pengenal untuk wilayah permintaan. Contohnya, ID wilayah untuk China (Hangzhou) adalah
cn-hangzhou.Nyatakan secara eksplisit penggunaan algoritma tanda tangan V4. Contohnya:
OSS_SIGNATURE_VERSION_V4.
Contoh kode
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\Core\OssException;
try {
// Dapatkan kredensial akses dari variabel lingkungan dan simpan dalam penyedia. Sebelum Anda menjalankan kode contoh ini, pastikan bahwa variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
$provider = new EnvironmentVariableCredentialsProvider();
// Tentukan Endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com.
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
// Tentukan wilayah yang sesuai dengan Endpoint. Misalnya, cn-hangzhou.
"region" => "cn-hangzhou"
);
$ossClient = new OssClient($config);
} catch (OssException $e) {
printf($e->getMessage() . "\n");
return;
}C#
C# SDK V2
Semua versi OSS C# SDK V2 mendukung Signature V4 secara default.
Saat menginisialisasi OSS Client dengan Signature V4, lakukan langkah berikut:
Tentukan ID wilayah bucket sebagai pengenal untuk wilayah permintaan. Sebagai contoh, ID wilayah untuk China (Hangzhou) adalah
cn-hangzhou.
using OSS = AlibabaCloud.OSS.V2; // Buat alias untuk Alibaba Cloud OSS SDK untuk menyederhanakan penggunaan selanjutnya
var region = "cn-hangzhou"; // Wajib. Atur wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou
var endpoint = null as string; // Opsional. Tentukan endpoint yang digunakan untuk mengakses layanan OSS. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com
// Muat konfigurasi default OSS SDK, yang secara otomatis membaca informasi kredensial (seperti AccessKey) dari variabel lingkungan
var cfg = OSS.Configuration.LoadDefault();
// Secara eksplisit atur untuk menggunakan variabel lingkungan untuk mendapatkan kredensial untuk autentikasi (format: OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET)
cfg.CredentialsProvider = new OSS.Credentials.EnvironmentVariableCredentialsProvider();
// Atur wilayah bucket dalam konfigurasi
cfg.Region = region;
// Jika endpoint ditentukan, timpa endpoint default
if(endpoint != null)
{
cfg.Endpoint = endpoint;
}
// Buat instance OSS client menggunakan informasi konfigurasi
using var client = new OSS.Client(cfg);
// Gunakan instance client yang dibuat untuk melakukan operasi selanjutnya...C# SDK V1
Tingkatkan OSS C# SDK V1 ke versi 2.14.0 atau yang lebih baru.
Saat menginisialisasi OSS Client dengan Signature V4, lakukan langkah-langkah berikut:
Tentukan ID wilayah bucket sebagai pengenal untuk wilayah permintaan. Sebagai contoh, ID wilayah untuk China (Hangzhou) adalah
cn-hangzhou.Nyatakan secara eksplisit penggunaan algoritma tanda tangan V4. Contohnya:
SignVersion.V4.
Contoh kode
using Aliyun.OSS;
using Aliyun.OSS.Common;
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum Anda menjalankan kode contoh, pastikan bahwa variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret=Environment.GetEnvironmentVariable ("OSS_ACCESS_KEY_SECRET");
// Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com.
const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
const string region = "cn-hangzhou";
// Buat instance ClientConfiguration dan modifikasi parameter default berdasarkan kebutuhan Anda.
var conf = new ClientConfiguration();
// Tentukan tanda tangan V4.
conf.SignatureVersion = SignatureVersion.V4;
// Buat instance OSSClient.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);Node.js
Tingkatkan OSS Node.js SDK ke versi 6.20.0 atau yang lebih baru.
Saat menginisialisasi OSS Client dengan Signature V4, ikuti langkah-langkah berikut:
Tentukan ID wilayah OSS khusus bucket sebagai pengenal untuk wilayah permintaan. Sebagai contoh, ID wilayah untuk China (Hangzhou) adalah
oss-cn-hangzhou.Nyatakan secara eksplisit penggunaan algoritma tanda tangan V4. Contohnya:
authorizationV4.
const OSS = require('ali-oss');
const client = new OSS({
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum Anda menjalankan kode contoh, pastikan bahwa variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), atur wilayah menjadi oss-cn-hangzhou.
region: 'oss-cn-hangzhou',
// Gunakan algoritma tanda tangan V4
authorizationV4: true,
// Tentukan nama bucket.
bucket: 'yourBucketName',
// Tentukan endpoint publik untuk wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com.
endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
});Browser.js
Tingkatkan OSS Browser.js SDK ke versi 6.20.0 atau yang lebih baru.
Saat menginisialisasi OSS Client dengan Signature V4, ikuti langkah-langkah berikut:
Tentukan ID wilayah OSS khusus bucket sebagai pengenal untuk wilayah permintaan. Sebagai contoh, ID wilayah untuk China (Hangzhou) adalah
oss-cn-hangzhou.Nyatakan secara eksplisit penggunaan algoritma tanda tangan V4. Contohnya:
authorizationV4.
Contoh kode
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<!-- Impor file SDK -->
<script
type="text/javascript"
src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.20.0.min.js"
></script>
<script type="text/javascript">
const client = new OSS({
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi oss-cn-hangzhou.
region: 'yourRegion',
authorizationV4: true,
// Tentukan pasangan AccessKey sementara yang diperoleh dari Security Token Service (STS). Pasangan AccessKey terdiri dari AccessKey ID dan AccessKey secret.
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeySecret',
// Tentukan token keamanan yang diperoleh dari STS.
stsToken: 'yourSecurityToken',
// Tentukan nama bucket. Contoh: examplebucket.
bucket: "examplebucket",
});
</script>
</body>
</html>C++
Tingkatkan OSS C++ SDK ke versi 1.10.0 atau yang lebih baru.
Saat menginisialisasi OSS Client dengan Signature V4, ikuti langkah-langkah berikut:
Tentukan ID wilayah bucket sebagai pengenal untuk wilayah permintaan. Sebagai contoh, ID wilayah untuk China (Hangzhou) adalah
cn-hangzhou.Nyatakan secara eksplisit penggunaan algoritma tanda tangan V4. Contohnya:
SignatureVersionType::V4.
Contoh kode
#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;
int main(void)
{
/* Inisialisasi informasi tentang akun yang digunakan untuk mengakses OSS. */
/* Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com. */
std::string Endpoint = "yourEndpoint";
/* Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou. */
std::string Region = "yourRegion";
/* Inisialisasi sumber daya, seperti sumber daya jaringan. */
InitializeSdk();
ClientConfiguration conf;
conf.signatureVersion = SignatureVersionType::V4;
/* Dapatkan kredensial akses dari variabel lingkungan. Sebelum Anda menjalankan kode contoh, pastikan bahwa variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. */
auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
OssClient client(Endpoint, credentialsProvider, conf);
client.SetRegion(Region);
/* Lepaskan sumber daya, seperti sumber daya jaringan. */
ShutdownSdk();
return 0;
}C
Tingkatkan OSS C SDK ke versi 3.11.0 atau yang lebih baru.
Saat menginisialisasi OSS Client dengan Signature V4, lakukan langkah-langkah berikut:
Tentukan ID wilayah bucket sebagai pengenal untuk wilayah permintaan. Sebagai contoh, ID wilayah untuk China (Hangzhou) adalah
cn-hangzhou.Nyatakan secara eksplisit penggunaan algoritma tanda tangan V4. Contohnya:
signature_version = 4.
Contoh kode
#include "oss_api.h"
#include "aos_http_io.h"
/* Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com. */
const char *endpoint = "yourEndpoint";
/* Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou. */
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
options->config = oss_config_create(options->pool);
/* Gunakan string char* untuk menginisialisasi tipe data aos_string_t. */
aos_str_set(&options->config->endpoint, endpoint);
/* Dapatkan kredensial akses dari variabel lingkungan. Sebelum Anda menjalankan kode contoh, pastikan bahwa variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. */
aos_str_set(&options->config->access_key_id, getenv("OSS_ACCESS_KEY_ID"));
aos_str_set(&options->config->access_key_secret, getenv("OSS_ACCESS_KEY_SECRET"));
// Tentukan dua parameter tambahan.
aos_str_set(&options->config->region, region);
options->config->signature_version = 4;
/* Tentukan apakah akan menggunakan CNAME untuk mengakses OSS. Nilai 0 menunjukkan bahwa CNAME tidak digunakan. */
options->config->is_cname = 0;
/* Tentukan parameter jaringan. Parameter kedua dalam fungsi ini menentukan kepemilikan ctl. Secara default, nilai parameter kedua adalah 0. */
options->ctl = aos_http_controller_create(options->pool, 0);
}
int main() {
aos_pool_t *p;
oss_request_options_t *options;
/* Inisialisasi variabel global. Anda hanya perlu menginisialisasi variabel global sekali dalam siklus hidup program. */
if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
return -1;
}
/* Inisialisasi pool memori dan opsi. */
aos_pool_create(&p, NULL);
options = oss_request_options_create(p);
init_options(options);
/* Kode logika. Dalam contoh ini, kode logika dihilangkan. */
/* Lepaskan pool memori. Operasi ini melepaskan sumber daya memori yang dialokasikan untuk permintaan. */
aos_pool_destroy(p);
/* Lepaskan sumber daya global yang dialokasikan. Anda hanya perlu melepaskan sumber daya global sekali dalam siklus hidup program. */
aos_http_io_deinitialize();
return 0;
}Swift
Semua versi OSS Swift SDK mendukung Signature V4 secara default.
Saat menginisialisasi OSS Client dengan Signature V4, Anda harus mengikuti langkah berikut:
Tentukan ID wilayah bucket sebagai pengenal untuk wilayah permintaan. Sebagai contoh, ID wilayah untuk China (Hangzhou) adalah
cn-hangzhou.
import AlibabaCloudOSS
import Foundation
@main
struct Main {
static func main() async {
// Tentukan wilayah tempat bucket berada. Contoh: China (Hangzhou) adalah cn-hangzhou.
let region = "cn-hangzhou"
// Opsional. Tentukan endpoint untuk mengakses OSS. Untuk China (Hangzhou), atur Endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com.
let endpoint: String? = nil
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum Anda menjalankan kode ini, pastikan bahwa variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
let credentialsProvider = EnvironmentCredentialsProvider()
// Konfigurasikan parameter klien OSS.
let config = Configuration.default()
.withRegion(region) // Atur wilayah tempat bucket berada.
.withCredentialsProvider(credentialsProvider) // Atur kredensial akses.
// Atur endpoint kustom.
if let endpoint = endpoint {
config.withEndpoint(endpoint)
}
// Buat instance klien OSS.
let client = Client(config)
}
}iOS
Perbarui OSS iOS SDK ke versi 2.11.1 atau yang lebih baru.
Saat menginisialisasi OSS Client dengan Signature V4, ikuti langkah-langkah berikut:
Tentukan ID wilayah bucket sebagai pengenal untuk wilayah permintaan. Sebagai contoh, ID wilayah untuk China (Hangzhou) adalah
cn-hangzhou.Nyatakan secara eksplisit penggunaan algoritma tanda tangan V4, seperti:
OSSSignVersionV4.
Contoh kode
// Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com.
NSString *endpoint = @"yourEndpoint";
// Tentukan pasangan AccessKey sementara yang diperoleh dari STS. Pasangan AccessKey terdiri dari AccessKey ID dan AccessKey secret.
NSString *accessKeyId = @"yourAccessKeyId";
NSString *accessKeySecret = @"yourAccessKeySecret";
// Tentukan token keamanan yang diperoleh dari STS.
NSString *securityToken = @"yourSecurityToken";
NSString *region = @"yourRegion";
id<OSSCredentialProvider> credentialProvider = [[OSSStsTokenCredentialProvider alloc] initWithAccessKeyId:accessKeyId secretKeyId:accessKeySecret securityToken:securityToken];
OSSClientConfiguration *configuration = [OSSClientConfiguration new];
configuration.signVersion = OSSSignVersionV4;
OSSClient *client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credentialProvider clientConfiguration:configuration];
client.region = region;Android
-
Tingkatkan OSS Android SDK ke versi 2.3 atau yang lebih baru.
-
Saat menginisialisasi OSS Client dengan Signature V4, ikuti langkah-langkah berikut:
-
Tentukan ID wilayah bucket sebagai pengenal untuk wilayah permintaan. Sebagai contoh, ID wilayah untuk China (Hangzhou) adalah
cn-hangzhou. -
Nyatakan secara eksplisit penggunaan algoritma tanda tangan V4. Contohnya:
SignVersion.V4.
-
Contoh kode
// Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com.
String endpoint = "yourEndpoint";
// Tentukan pasangan AccessKey sementara yang diperoleh dari STS.
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";
// Tentukan token keamanan yang diperoleh dari STS.
String securityToken = "yourSecurityToken";
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
String region = "yourRegion";
OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(accessKeyId, accessKeySecret, securityToken);
ClientConfiguration config = new ClientConfiguration();
config.setSignVersion(SignVersion.V4);
// Buat instance OSSClient.
OSSClient oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider);
oss.setRegion(region);
ossutil
ossutil 2.0
Semua versi antarmuka baris perintah ossutil 2.0 mendukung Signature V4 secara default.
Dibandingkan dengan Signature V1, saat menggunakan Signature V4, Anda harus mengatur parameter Region ke ID wilayah bucket ketika mengonfigurasi ossutil.
Perintah contoh
Please enter Region [cn-hangzhou]:cn-hangzhouossutil 1.0
Semua versi ossutil 2.0 mendukung Signature V4 secara default. Kami merekomendasikan Anda untuk bermigrasi dari ossutil 1.0 ke ossutil 2.0.
Versi 1.7.12 dan yang lebih baru dari antarmuka baris perintah ossutil 1.0 mendukung Signature V4.
Dibandingkan dengan Signature V1, saat menggunakan Signature V4, Anda harus melakukan hal berikut dalam perintah:
Atur opsi
--sign-versionmenjadiv4.Atur opsi
--regionke ID wilayah bucket.
Perintah contoh
./ossutil64 --sign-version v4 --region cn-hangzhou mb oss://examplebucketossfs
ossfs 2.0
Semua versi ossfs 2.0 (Pratinjau) mendukung Signature V4, tetapi menggunakan Signature V1 secara default.
Sebelum melakukan peningkatan, jalankan perintah
ossfs --versionuntuk memeriksa versi saat ini dan selesaikan prasyarat berikut sesuai dengan versi Anda.PentingPenghapusan instalasi akan mengganggu layanan Anda. Kami menyarankan untuk melaksanakan operasi ini selama jam-jam sepi.
Lepaskan sistem file OSS yang telah dipasang. Ganti
<mountpoint>dengan direktori aktual Anda.sudo umount <mountpoint>Setelah dilepas, ikuti perintah contoh untuk meningkatkan.
Dibandingkan dengan Signature V1, ketika menggunakan Signature V4, Anda harus melakukan hal berikut dalam perintah mount:
Atur opsi
oss_regionke ID Wilayah bucket.
Perintah Contoh
ossfs2 mount /tmp/ossfs2-bucket/ -c /etc/ossfs2.conf --oss_region=cn-hongkongossfs 1.0
Versi 1.91.4 dan yang lebih baru dari ossfs 1.0 mendukung Signature V4.
Sebelum melakukan peningkatan, jalankan perintah
ossfs --versionuntuk memeriksa versi saat ini dan selesaikan prasyarat berikut sesuai dengan versi Anda.PentingPenghapusan instalasi akan mengganggu layanan Anda. Kami menyarankan untuk melaksanakan operasi ini selama jam-jam sepi.
Tingkatkan ke V4 jika persyaratan versi terpenuhi
Lepaskan sistem file OSS yang telah dipasang. Ganti
<mountpoint>dengan direktori aktual Anda.sudo umount <mountpoint>Setelah dilepas, ikuti Perintah Contoh untuk meningkatkan.
Tingkatkan ke V4 jika persyaratan versi tidak terpenuhi
Lepaskan sistem file OSS yang telah dipasang. Ganti
<mountpoint>dengan direktori aktual Anda.sudo umount <mountpoint>Hapus versi lama.
Jika Anda menginstal ossfs menggunakan manajer paket seperti
aptatauyum, jalankan perintah berikut:sudo apt remove ossfs # Untuk sistem Ubuntu/Debian sudo yum remove ossfs # Untuk sistem CentOS/Anolis/Alibaba Cloud LinuxJika Anda mengompilasi dan menginstal ossfs dari kode sumber, masuk ke direktori instalasi dan jalankan perintah berikut:
sudo make uninstall
Setelah menginstal versi baru, ikuti Perintah Contoh untuk meningkatkan.
Dibandingkan dengan Signature V1, ketika menggunakan Signature V4, Anda harus melakukan hal berikut dalam perintah mount:
Atur opsi
sigv4.Atur opsi
regionke ID Wilayah bucket.
Perintah Contoh
ossfs examplebucket -o sigv4 -o region=cn-hangzhou /tmp/ossfs -o url=http://oss-cn-hangzhou.aliyuncs.com API (konstruksi tanda tangan manual)
Kami menyarankan Anda menggunakan kit pengembangan perangkat lunak (SDK) OSS untuk mengirim permintaan karena SDK secara otomatis menghitung tanda tangan. Jika SDK OSS tidak dapat digunakan, Anda harus membangun tanda tangan V4 secara manual dan memastikan bahwa permintaannya valid.
Metode tanda tangan | Deskripsi | Referensi |
Sertakan tanda tangan di header | Di OSS, metode yang paling umum untuk verifikasi identitas adalah dengan menyertakan tanda tangan di Authorization header dari permintaan HTTP. Semua operasi OSS, kecuali yang menggunakan tanda tangan POST atau tanda tangan URL, memerlukan autentikasi melalui Authorization header. | |
Sertakan tanda tangan di URL | Anda dapat memberikan akses pihak ketiga ke Sumber daya OSS Anda untuk periode validitas tertentu tanpa mengungkapkan Kredensial akses Anda dengan menghasilkan URL yang ditandatangani yang mencakup tanda tangan dan informasi permintaan lainnya yang diperlukan. | |
Tanda tangan permintaan POST | Tanda tangan PostObject adalah mekanisme yang memungkinkan Anda mengunggah file langsung ke OSS melalui formulir HTML. Mekanisme ini memungkinkan pengguna untuk membuat formulir HTML pada Klien, seperti peramban web. Formulir tersebut mencakup bidang untuk file yang akan diunggah dan parameter lainnya yang diperlukan, seperti tanda tangan, Pasangan Kunci Akses, nama bucket, dan kunci objek. Saat formulir dikirim, informasi ini dikirim ke OSS melalui permintaan HTTP POST, dan OSS memverifikasi validitas permintaan POST tersebut. |
Jadwal penghentian dan dampak dari Signature V1
Berdasarkan Pengumuman Penghentian Signature Versi 1 untuk Alibaba Cloud Object Storage Service, Signature V1 untuk Alibaba Cloud Object Storage Service akan secara bertahap dihentikan bagi pelanggan baru (UID baru) mulai 1 Maret 2025. Mulai 1 September 2025, Signature V1 tidak akan lagi diperbarui, dipelihara, atau tersedia untuk bucket baru.
Perbandingan antara Signature V1 dan Signature V4
Item | ||
Algoritma tanda tangan | HMAC-SHA1 | HMAC-SHA256 |
Periode validitas URL bertanda tangan | Waktu penandatanganan bisa lebih dari 7 hari di masa lalu. Periode validitas dapat melebihi 7 hari. | Waktu penandatanganan dibatasi hingga 7 hari ke belakang. Periode validitas dibatasi hingga 7 hari. |
Konstruksi string tanda tangan | String tanda tangan mencakup metode HTTP, Content-MD5, Content-Type, tanggal, header yang dinormalisasi, dan jalur sumber daya. | String tanda tangan memiliki struktur yang lebih kompleks, mencakup metode permintaan, URI yang dinormalisasi, parameter kueri yang dinormalisasi, header yang dinormalisasi, header tambahan yang ditandatangani, dan hash muatan. |
Header dan parameter kueri yang dinormalisasi | Hanya header dengan awalan `x-oss-` yang dinormalisasi. Hanya beberapa parameter kueri yang disertakan dalam tanda tangan. | Semua header dengan awalan `x-oss-` dan header bertanda tangan default (seperti `content-type` dan `content-md5`) dinormalisasi. Header tambahan yang ditandatangani juga didukung. |
Pengkodean jalur sumber daya | Karakter garis miring (/) dalam jalur sumber daya dikodekan. | Karakter |
Format timestamp dan tanggal | Menggunakan format tanggal HTTP standar, misalnya, Wed, 21 Oct 2015 07:28:00 GMT. | Menggunakan format ISO 8601 untuk waktu UTC, misalnya, 20151021T072800Z. |
Informasi wilayah | Tanda tangan tidak mencakup informasi wilayah. | Aturan tanda tangan memperkenalkan konsep wilayah. Baik string tanda tangan maupun kunci tanda tangan harus mencakup ID wilayah. |
FAQ
Bagaimana cara memeriksa dengan cepat apakah saya menggunakan Signature V1 atau Signature V4?
Anda dapat menggunakan LogSearch atau alat pengambilan paket seperti Wireshark atau Fiddler untuk melihat bidang Authorization di dalam header permintaan HTTP yang dikirim ke OSS.
Signature V1: Bidang
Authorizationdimulai denganOSSdan memiliki format berikut:Authorization: OSS <AccessKeyId>:<Signature>Signature V4: Bidang
Authorizationdimulai denganOSS4-HMAC-SHA256dan memiliki format berikut:Authorization: OSS4-HMAC-SHA256 Credential=<AccessKeyId>/<Date>/<Region>/oss/aliyun_v4_request, AdditionalHeaders=<Headers>, Signature=<Signature>
Bagaimana cara dengan cepat menganalisis kesalahan SignatureDoesNotMatch
Jika perhitungan tanda tangan salah, sistem akan mengembalikan kode kesalahan SignatureDoesNotMatch. Untuk menemukan masalah dengan cepat, Anda dapat membandingkan informasi terkait tanda tangan yang dihasilkan oleh server dan klien. Tanggapan dari server mencakup informasi kunci berikut:
CanonicalRequest: String kueri kanonis yang dihasilkan oleh server.StringToSign: String-to-sign yang dihasilkan oleh server berdasarkan permintaan yang telah dikanonisasi.Signature: Nilai tanda tangan akhir yang dihitung oleh server.
Dengan membandingkan bidang-bidang ini dengan bidang yang sesuai yang dihasilkan oleh klien, Anda dapat dengan cepat mengidentifikasi perbedaan dan menemukan sumber kesalahan. Contohnya:
Jika
CanonicalRequesttidak konsisten, urutan penyambungan atau format parameter permintaan mungkin salah.Jika
StringToSigntidak konsisten, tanggal, wilayah, atau informasi produk cloud mungkin disetel secara salah.Jika
Signaturetidak konsisten, mungkin ada masalah dengan perhitungan kunci turunan atau implementasi algoritma tanda tangan.