全部产品
Search
文档中心

Object Storage Service:Konfigurasikan kredensial akses (C# SDK V1)

更新时间:Nov 30, 2025

Untuk membuat permintaan ke Object Storage Service (OSS) menggunakan kit pengembangan perangkat lunak (SDK) C#, Anda harus mengonfigurasi kredensial akses. Layanan Alibaba Cloud menggunakan kredensial ini untuk memverifikasi identitas dan izin akses Anda. Anda dapat menyediakan kredensial dengan berbagai cara sesuai kebutuhan autentikasi dan otorisasi skenario Anda.

Catatan

Pilih penyedia kredensial

OSS mendukung berbagai cara untuk menginisialisasi penyedia kredensial. Anda dapat memilih metode inisialisasi berdasarkan kebutuhan autentikasi dan otorisasi Anda.

Metode inisialisasi penyedia kredensial

Skenario

Memerlukan pasangan AccessKey atau token Security Token Service (STS) yang telah ada sebelumnya

Jenis kredensial dasar

Masa berlaku kredensial

Metode rotasi atau pembaruan kredensial

Gunakan pasangan AccessKey Pengguna RAM

Aplikasi yang berjalan di lingkungan aman dan stabil yang tidak rentan terhadap serangan eksternal. Aplikasi ini memerlukan akses jangka panjang ke layanan Alibaba Cloud tanpa rotasi kredensial yang sering.

Ya

Pasangan AccessKey

Jangka panjang

Rotasi manual

Gunakan kredensial akses sementara STS

Aplikasi yang berjalan di lingkungan tidak tepercaya. Metode ini memungkinkan Anda mengontrol periode validitas dan izin akses.

Ya

Token STS

Sementara

Pembaruan manual

Gunakan RAMRoleARN

Aplikasi yang memerlukan akses resmi ke layanan Alibaba Cloud, seperti akses lintas akun.

Ya

Token STS

Sementara

Auto-refresh

Gunakan ECSRAMRole

Aplikasi yang berjalan pada instance Elastic Compute Service (ECS), instance Elastic Container Instance (ECI), atau node pekerja Container Service for Kubernetes.

Tidak

Token STS

Sementara

Auto-refresh

Gunakan OIDCRoleARN

Aplikasi tidak tepercaya yang berjalan pada node pekerja Container Service for Kubernetes.

Tidak

Token STS

Sementara

Auto-refresh

Gunakan CredentialsURI

Aplikasi yang perlu memperoleh kredensial akses dari sistem eksternal.

Tidak

Token STS

Sementara

Auto-refresh

Gunakan kredensial akses kustom

Jika metode sebelumnya tidak memenuhi kebutuhan Anda, Anda dapat menyesuaikan cara memperoleh kredensial.

Kustom

Kustom

Kustom

Kustom

Contoh konfigurasi umum

Menggunakan AK Pengguna RAM

Jika aplikasi Anda diterapkan di lingkungan aman dan stabil, memerlukan akses jangka panjang ke OSS, dan tidak memungkinkan rotasi kredensial yang sering, Anda dapat menginisialisasi penyedia kredensial dengan pasangan AccessKey (ID AccessKey dan Rahasia AccessKey) dari Akun Alibaba Cloud atau Pengguna RAM. Namun, metode ini mengharuskan Anda memelihara pasangan AccessKey secara manual, sehingga meningkatkan risiko keamanan dan kompleksitas pemeliharaan. Untuk memperoleh pasangan AccessKey, lihat CreateAccessKey - Buat pasangan AccessKey untuk Akun Alibaba Cloud atau Pengguna RAM.

Variabel lingkungan

Peringatan

Akun Alibaba Cloud memiliki izin penuh atas semua resource. Jika pasangan AccessKey bocor, hal ini menimbulkan risiko keamanan signifikan bagi sistem Anda. Kami tidak merekomendasikan penggunaan pasangan AccessKey Akun Alibaba Cloud. Sebagai gantinya, gunakan pasangan AccessKey Pengguna RAM dengan izin minimum yang diperlukan.

  1. Atur variabel lingkungan menggunakan pasangan AccessKey.

    Mac OS X, Linux, atau Unix

    export ALIBABA_CLOUD_ACCESS_KEY_ID=<ALIBABA_CLOUD_ACCESS_KEY_ID>
    export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<ALIBABA_CLOUD_ACCESS_KEY_SECRET>

    Windows

    set ALIBABA_CLOUD_ACCESS_KEY_ID=<ALIBABA_CLOUD_ACCESS_KEY_ID>
    set ALIBABA_CLOUD_ACCESS_KEY_SECRET=<ALIBABA_CLOUD_ACCESS_KEY_SECRET>
  2. Teruskan informasi kredensial menggunakan variabel lingkungan.

    using Aliyun.OSS;
    using Aliyun.OSS.Common;
    using Aliyun.OSS.Common.Authentication;
    
    // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah diatur.
    var accessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID");
    var accessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
    var credentialsProvider = new DefaultCredentialsProvider(new DefaultCredentials(accessKeyId, accessKeySecret, ""));   
    
    // Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir 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";
    
    var conf = new ClientConfiguration();
    
    var client = new OssClient(endpoint, credentialsProvider, conf);
    client.SetRegion(region);                                                                                                                        

Kredensial statis

Kode contoh berikut menunjukkan cara menyematkan kredensial akses secara langsung dan mengatur eksplisit pasangan AccessKey yang akan digunakan.

Peringatan

Jangan menyematkan kredensial akses dalam aplikasi di lingkungan produksi. Metode ini hanya untuk pengujian.

using Aliyun.OSS;
using Aliyun.OSS.Common;
using Aliyun.OSS.Common.Authentication;

// Ganti nilai contoh dengan ID AccessKey dan Rahasia AccessKey aktual Anda.
var accessKeyId = "LTAI5tQQx1DWEYK7********" ;
var accessKeySecret = "s5LkMqKmmKbt3zjs7MNJTj********" ;
var credentialsProvider = new DefaultCredentialsProvider(new DefaultCredentials(accessKeyId, accessKeySecret, ""));   

// Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir 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";

var conf = new ClientConfiguration();

var client = new OssClient(endpoint, credentialsProvider, conf);
client.SetRegion(region);     

Gunakan kredensial akses sementara STS

Jika aplikasi Anda memerlukan akses sementara ke OSS, Anda dapat menginisialisasi penyedia kredensial dengan kredensial identitas sementara (ID AccessKey, Rahasia AccessKey, dan token keamanan) yang diperoleh dari Security Token Service (STS). Namun, metode ini mengharuskan Anda memelihara token STS secara manual, sehingga meningkatkan risiko keamanan dan kompleksitas pemeliharaan. Selain itu, untuk mengakses OSS secara sementara beberapa kali, Anda harus merefresh token STS secara manual.

Penting

Variabel lingkungan

  1. Atur variabel lingkungan menggunakan kredensial identitas sementara.

    Mac OS X, Linux, atau Unix

    export ALIBABA_CLOUD_ACCESS_KEY_ID=<ALIBABA_CLOUD_ACCESS_KEY_ID>
    export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<ALIBABA_CLOUD_ACCESS_KEY_SECRET>
    export ALIBABA_CLOUD_SECURITY_TOKEN=<ALIBABA_CLOUD_SECURITY_TOKEN>

    Windows

    set OSS_ACCESS_KEY_ID=<ALIBABA_CLOUD_ACCESS_KEY_ID>
    set OSS_ACCESS_KEY_SECRET=<ALIBABA_CLOUD_ACCESS_KEY_SECRET>
    set OSS_SESSION_TOKEN=<ALIBABA_CLOUD_SECURITY_TOKEN>
  2. Teruskan informasi kredensial menggunakan variabel lingkungan.

    using Aliyun.OSS;
    using Aliyun.OSS.Common;
    using Aliyun.OSS.Common.Authentication;
    
    // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID, ALIBABA_CLOUD_ACCESS_KEY_SECRET, dan ALIBABA_CLOUD_SECURITY_TOKEN telah diatur.
    var accessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID");
    var accessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
    var token = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_SECURITY_TOKEN");
    
    var credentialsProvider = new DefaultCredentialsProvider(new DefaultCredentials(accessKeyId, accessKeySecret, token));
    
    // Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir 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";
    
    var conf = new ClientConfiguration();
    
    var client = new OssClient(endpoint, credentialsProvider, conf);
    client.SetRegion(region);
    

Kredensial statis

Anda dapat menyematkan kredensial secara langsung dalam aplikasi untuk mengatur eksplisit pasangan AccessKey sementara yang akan digunakan.

using Aliyun.OSS;
using Aliyun.OSS.Common;
using Aliyun.OSS.Common.Authentication;

// Ganti nilai contoh dengan ID AccessKey sementara, Rahasia AccessKey, dan token keamanan aktual Anda.
var accessKeyId = "STS.NTZdStF79CVRTQuWCfXTT****";
var accessKeySecret = "5rm8PfEiK8enp56zzAMX4RbZUraoKbWXvCf1xAuT****"
var token = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_SECURITY_TOKEN");

var credentialsProvider = new DefaultCredentialsProvider(new DefaultCredentials(accessKeyId, accessKeySecret, token));

// Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir 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";

var conf = new ClientConfiguration();

var client = new OssClient(endpoint, credentialsProvider, conf);
client.SetRegion(region);

Contoh konfigurasi spesifik skenario lainnya

Gunakan RAMRoleARN

Jika aplikasi Anda memerlukan akses resmi ke OSS, seperti akses lintas akun, Anda dapat menginisialisasi penyedia kredensial menggunakan RAMRoleARN. Metode ini menggunakan token STS sebagai kredensial dasar. Dengan menentukan Nama Sumber Daya Alibaba Cloud (ARN) dari role RAM, tool kredensial mengambil token STS dari layanan STS dan secara otomatis merefresh token tersebut sebelum kedaluwarsa. Anda juga dapat memberikan nilai pada policy untuk membatasi role RAM pada set izin yang lebih kecil.

Penting
  • Akun Alibaba Cloud memiliki izin penuh atas semua resource. Jika pasangan AccessKey bocor, hal ini menimbulkan risiko keamanan signifikan bagi sistem Anda. Kami tidak merekomendasikan penggunaan pasangan AccessKey Akun Alibaba Cloud. Sebagai gantinya, gunakan pasangan AccessKey Pengguna RAM dengan izin minimum yang diperlukan.

  • Untuk informasi selengkapnya tentang cara membuat pasangan AccessKey untuk Pengguna RAM, lihat Buat pasangan AccessKey. ID AccessKey dan Rahasia AccessKey Pengguna RAM hanya ditampilkan saat dibuat. Anda harus segera menyimpannya. Jika lupa Rahasia AccessKey, Anda harus membuat pasangan AccessKey baru untuk rotasi.

  • Untuk memperoleh RAMRoleARN, lihat CreateRole - Buat role.

  1. Instal library kredensial Alibaba Cloud. Untuk informasi selengkapnya, lihat Kelola kredensial akses.

  2. Konfigurasikan kredensial akses.

    using Aliyun.OSS;
    using Aliyun.OSS.Common;
    using Aliyun.OSS.Common.Authentication;
    
    class CredentialsProviderWrapper : ICredentialsProvider
    {
        private Aliyun.Credentials.Client client;
        public CredentialsProviderWrapper(Aliyun.Credentials.Client client)
        {
            this.client = client;
        }
    
        public ICredentials GetCredentials()
        {
            var accessKeyId = client.GetAccessKeyId();
            var accessKeySecret = client.GetAccessKeySecret();
            var token = client.GetSecurityToken();
            return new DefaultCredentials(accessKeyId, accessKeySecret, token);
        }
    
        public void SetCredentials(ICredentials creds)
        {
        }
    };
    
    var config = new Aliyun.Credentials.Models.Config()
    {
        Type = "ram_role_arn",
        AccessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
        AccessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
        // Secara default, operasi berikut menggunakan nilai parameter yang dimasukkan langsung. Anda juga dapat menambahkan variabel lingkungan dan menggunakan Environment.GetEnvironmentVariable("<variable_name>") untuk memperoleh parameter yang sesuai.
        // ARN dari role RAM yang akan diasumsikan. Contoh: acs:ram::123456789012****:role/adminrole
        RoleArn = "<RoleArn>", // Variabel lingkungan default untuk RoleArn adalah ALIBABA_CLOUD_ROLE_ARN.
        // Nama sesi role.
        RoleSessionName = "<RoleSessionName>", // Variabel lingkungan default untuk RoleSessionName adalah ALIBABA_CLOUD_ROLE_SESSION_NAME.
    };
    var credentialsClient = new Aliyun.Credentials.Client(config);
    
    var credentialsProvider = new CredentialsProviderWrapper(credentialsClient);
    
    // Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir 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";
    
    var conf = new ClientConfiguration();
    
    var client = new OssClient(endpoint, credentialsProvider, conf);
    client.SetRegion(region);
    

Menggunakan role RAM ECS

Jika aplikasi Anda berjalan pada instance Elastic Compute Service (ECS), instance Elastic Container Instance (ECI), atau node pekerja Container Service for Kubernetes, kami merekomendasikan Anda menggunakan ECSRAMRole untuk menginisialisasi penyedia kredensial. Metode ini menggunakan token STS sebagai kredensial dasar. ECSRAMRole memungkinkan Anda mengaitkan role dengan instance ECS, instance ECI, atau node pekerja Container Service for Kubernetes. Hal ini memungkinkan token STS direfresh secara otomatis di dalam instance. Metode ini tidak mengharuskan Anda menyediakan pasangan AccessKey atau token STS, sehingga menghilangkan risiko pemeliharaan manual. Untuk memperoleh ECSRAMRole, lihat CreateRole - Buat role.

  1. Instal library kredensial Alibaba Cloud. Untuk informasi selengkapnya, lihat Kelola kredensial akses.

  2. Konfigurasikan ECSRAMRole sebagai kredensial akses.

using Aliyun.OSS;
using Aliyun.OSS.Common;
using Aliyun.OSS.Common.Authentication;

class CredentialsProviderWrapper : ICredentialsProvider
{
    private Aliyun.Credentials.Client client;
    public CredentialsProviderWrapper(Aliyun.Credentials.Client client)
    {
        this.client = client;
    }

    public ICredentials GetCredentials()
    {
        var accessKeyId = client.GetAccessKeyId();
        var accessKeySecret = client.GetAccessKeySecret();
        var token = client.GetSecurityToken();
        return new DefaultCredentials(accessKeyId, accessKeySecret, token);
    }

    public void SetCredentials(ICredentials creds)
    {
    }
};

var config = new Aliyun.Credentials.Models.Config()
{
    Type = "ecs_ram_role",
    // Opsional. Nama role RAM ECS. Jika Anda tidak menentukan parameter ini, nama role akan diambil secara otomatis. Kami merekomendasikan Anda menentukan parameter ini untuk mengurangi jumlah permintaan.
    RoleName = "<RoleName>"     
};
var credentialsClient = new Aliyun.Credentials.Client(config);

var credentialsProvider = new CredentialsProviderWrapper(credentialsClient);

// Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir 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";

var conf = new ClientConfiguration();

var client = new OssClient(endpoint, credentialsProvider, conf);
client.SetRegion(region);

Menggunakan OIDCRoleARN

Setelah Anda mengonfigurasi role RAM untuk node pekerja di Container Service for Kubernetes, aplikasi dalam pod pada node tersebut dapat mengambil token STS dari role terkait melalui layanan meta global, mirip dengan aplikasi yang diterapkan pada ECS. Namun, jika Anda menerapkan aplikasi tidak tepercaya pada kluster kontainer, seperti aplikasi yang dikirimkan pelanggan yang kodenya tidak terlihat oleh Anda, Anda mungkin tidak ingin mereka mengambil token STS dari role RAM instans yang terkait dengan node pekerja melalui layanan meta global. Untuk mencegah risiko keamanan terhadap resource cloud Anda sekaligus memungkinkan aplikasi tidak tepercaya ini mengambil token STS yang diperlukan secara aman dan mencapai minimisasi izin tingkat aplikasi, gunakan fitur RAM Roles for Service Accounts (RRSA). Metode ini menggunakan token STS sebagai kredensial dasar. Kluster kontainer Alibaba Cloud membuat dan memasang file token OpenID Connect (OIDC) akun layanan yang sesuai untuk pod aplikasi berbeda serta menyuntikkan informasi konfigurasi terkait ke dalam variabel lingkungan. Tool kredensial mengambil informasi konfigurasi dari variabel lingkungan dan memanggil operasi AssumeRoleWithOIDC dari STS untuk menukar token OIDC dengan token STS dari role yang terikat. Metode ini tidak mengharuskan Anda menyediakan pasangan AccessKey atau token STS, sehingga menghilangkan risiko pemeliharaan manual. Untuk informasi selengkapnya, lihat Isolasi izin pod berdasarkan RRSA.

Variabel lingkungan berikut disuntikkan:

ALIBABA_CLOUD_ROLE_ARN: ARN dari role RAM.

ALIBABA_CLOUD_OIDC_PROVIDER_ARN: ARN dari penyedia OIDC.

ALIBABA_CLOUD_OIDC_TOKEN_FILE: Jalur ke file token OIDC.

Konfigurasikan OIDCRoleArn sebagai kredensial akses.

using Aliyun.OSS;
using Aliyun.OSS.Common;
using Aliyun.OSS.Common.Authentication;

class CredentialsProviderWrapper : ICredentialsProvider
{
    private Aliyun.Credentials.Client client;
    public CredentialsProviderWrapper(Aliyun.Credentials.Client client)
    {
        this.client = client;
    }

    public ICredentials GetCredentials()
    {
        var accessKeyId = client.GetAccessKeyId();
        var accessKeySecret = client.GetAccessKeySecret();
        var token = client.GetSecurityToken();
        return new DefaultCredentials(accessKeyId, accessKeySecret, token);
    }

    public void SetCredentials(ICredentials creds)
    {}
};

var config = new Aliyun.Credentials.Models.Config()
{
    Type = "oidc_role_arn",
    // ARN dari role RAM. Anda dapat mengatur RoleArn menggunakan variabel lingkungan ALIBABA_CLOUD_ROLE_ARN.
    RoleArn = "<RoleArn>",
    // ARN dari penyedia OIDC. Anda dapat mengatur OidcProviderArn menggunakan variabel lingkungan ALIBABA_CLOUD_OIDC_PROVIDER_ARN.
    OIDCProviderArn = "<OidcProviderArn>",
    // Jalur ke file token OIDC. Anda dapat mengatur OidcTokenFilePath menggunakan variabel lingkungan ALIBABA_CLOUD_OIDC_TOKEN_FILE.
    OIDCTokenFilePath = "<OidcTokenFilePath>",
    // Nama sesi role. Anda dapat mengatur RoleSessionName menggunakan variabel lingkungan ALIBABA_CLOUD_ROLE_SESSION_NAME.
    RoleSessionName = "<RoleSessionName>",
    // Opsional. Kebijakan akses yang lebih restriktif. Contoh: {"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"}
    Policy = "<Policy>",
    RoleSessionExpiration = 3600  
};
var credentialsClient = new Aliyun.Credentials.Client(config);
var credentialsProvider = new CredentialsProviderWrapper(credentialsClient);
// Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir 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";
var conf = new ClientConfiguration();
var client = new OssClient(endpoint, credentialsProvider, conf);
client.SetRegion(region);

Menggunakan CredentialsURI

Jika aplikasi Anda perlu mengambil kredensial Alibaba Cloud dari sistem eksternal untuk mencapai manajemen kredensial fleksibel dan akses tanpa kunci, Anda dapat menginisialisasi penyedia kredensial menggunakan CredentialsURI. Metode ini menggunakan token STS sebagai kredensial dasar. Tool kredensial mengambil token STS dari URI yang Anda sediakan untuk menyelesaikan inisialisasi klien kredensial. Metode ini tidak mengharuskan Anda menyediakan pasangan AccessKey atau token STS, sehingga menghilangkan risiko pemeliharaan manual. Layanan backend yang menyediakan respons CredentialsURI harus mengimplementasikan logika auto-refresh untuk token STS guna memastikan aplikasi Anda selalu dapat mengambil kredensial yang valid.

using Aliyun.OSS;
using Aliyun.OSS.Common;
using Aliyun.OSS.Common.Authentication;

class CredentialsProviderWrapper : ICredentialsProvider
{
    private Aliyun.Credentials.Client client;
    public CredentialsProviderWrapper(Aliyun.Credentials.Client client)
    {
        this.client = client;
    }

    public ICredentials GetCredentials()
    {
        var accessKeyId = client.GetAccessKeyId();
        var accessKeySecret = client.GetAccessKeySecret();
        var token = client.GetSecurityToken();
        return new DefaultCredentials(accessKeyId, accessKeySecret, token);
    }



    public void SetCredentials(ICredentials creds)
    {}
};

var config = new Aliyun.Credentials.Models.Config()
{
    // Jenis kredensial.
    Type = "credentials_uri",
    // URI tempat memperoleh kredensial. Formatnya adalah http://local_or_remote_uri/. Anda dapat mengatur CredentialsURI menggunakan variabel lingkungan ALIBABA_CLOUD_CREDENTIALS_URI.
    CredentialsURI = "<CredentialsURI>" 
};
var credentialsClient = new Aliyun.Credentials.Client(config);
var credentialsProvider = new CredentialsProviderWrapper(credentialsClient);
// Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir 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";
var conf = new ClientConfiguration();
var client = new OssClient(endpoint, credentialsProvider, conf);
client.SetRegion(region);

Gunakan kredensial akses kustom

Jika metode konfigurasi sebelumnya tidak memenuhi kebutuhan Anda, Anda juga dapat mengimplementasikan antarmuka Credential Providers untuk menyesuaikan cara penyediaan kredensial.

using Aliyun.OSS;
using Aliyun.OSS.Common;
using Aliyun.OSS.Common.Authentication;

class CustomCredentialsProvider : ICredentialsProvider
{
    public CustomCredentialsProvider()
    {
    }

    public ICredentials GetCredentials()
    {
        // TODO
        // Metode kustom untuk memperoleh kredensial akses.

        string accessKeyId;
        string accessKeySecret;
        //string token;

        // Kembalikan kredensial jangka panjang: access_key_id, access_key_secret.
        return new DefaultCredentials(accessKeyId, accessKeySecret, "");

        // Kembalikan kredensial sementara: access_key_id, access_key_secret, token.
        // Untuk kredensial sementara, Anda harus merefresh kredensial berdasarkan waktu kedaluwarsanya.
        // return new DefaultCredentials(accessKeyId, accessKeySecret, token);
    }

    public void SetCredentials(ICredentials creds)
    {
    }
};

var credentialsProvider = new CustomCredentialsProvider();

// Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir 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";

var conf = new ClientConfiguration();

var client = new OssClient(endpoint, credentialsProvider, conf);
client.SetRegion(region);

Bagaimana cara melihat pasangan AccessKey Pengguna RAM? Apakah saya dapat melihat Rahasia AccessKey lama?

  1. Untuk melihat pasangan AccessKey Pengguna RAM, lihat Lihat informasi AccessKey Pengguna RAM.

  2. Rahasia AccessKey Pengguna RAM hanya ditampilkan saat dibuat dan tidak dapat diambil kembali nanti. Jika Anda lupa Rahasia AccessKey, Anda tidak dapat mengambilnya kembali. Anda dapat membuka Konsol RAM, memilih pengguna tertentu, dan membuat pasangan AccessKey baru untuk rotasi. Untuk informasi selengkapnya, lihat Buat pasangan AccessKey.

Bagaimana cara memecahkan masalah error AccessDenied yang terjadi saat saya mengunggah file menggunakan pasangan AccessKey Pengguna RAM?

Error AccessDenied saat mengunggah file biasanya terjadi karena informasi AccessKey yang salah digunakan atau Pengguna RAM belum diberikan izin untuk mengunggah file. Anda dapat memeriksa hal-hal berikut:

  1. Pastikan pasangan AccessKey Pengguna RAM benar. Untuk informasi selengkapnya, lihat Lihat informasi AccessKey Pengguna RAM.

  2. Rahasia AccessKey Pengguna RAM hanya ditampilkan saat dibuat dan tidak dapat diambil kembali nanti. Jika Anda lupa Rahasia AccessKey, Anda tidak dapat mengambilnya kembali. Anda dapat membuka Konsol RAM, memilih pengguna tertentu, dan membuat pasangan AccessKey baru untuk rotasi. Untuk informasi selengkapnya, lihat Buat pasangan AccessKey.

  3. Anda dapat login ke Konsol RAM, memilih pengguna tertentu, dan memberikan izin kepada Pengguna RAM untuk mengunggah file ke OSS.

Bagaimana cara memecahkan masalah kegagalan koneksi yang terjadi saat saya mengakses OSS menggunakan titik akhir publik?

Kegagalan koneksi ke titik akhir publik biasanya terjadi karena alamat titik akhir yang salah digunakan atau wilayah bucket tidak sesuai dengan titik akhir yang diminta. Anda dapat memeriksa hal-hal berikut:

  1. Pastikan wilayah bucket. Anda dapat login ke Konsol Manajemen Alibaba Cloud, menemukan bucket Anda, dan memastikan wilayahnya.

  2. Gunakan titik akhir yang benar. Anda harus menggunakan titik akhir publik yang sesuai berdasarkan wilayah bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), gunakan oss-cn-hangzhou.aliyuncs.com. Untuk informasi selengkapnya tentang titik akhir setiap wilayah, lihat Wilayah dan titik akhir.

  3. Periksa konektivitas jaringan. Anda harus memastikan lingkungan jaringan Anda dapat mengakses Internet untuk mencegah kegagalan koneksi akibat masalah jaringan.

Jika terjadi error, bagaimana cara mengetahui jenis error spesifiknya?

Untuk informasi tentang jenis error, lihat Kode kesalahan EC dalam dokumentasi OSS. Misalnya, untuk error umum terkait autentikasi, lihat 02-AUTH.