全部产品
Search
文档中心

Object Storage Service:Konfigurasikan kredensial akses (iOS SDK)

更新时间:Nov 30, 2025

Untuk mengirim permintaan menggunakan OSS SDK untuk iOS, Anda harus mengonfigurasi kredensial akses. Layanan Alibaba Cloud menggunakan kredensial akses untuk memverifikasi identitas dan izin akses Anda. Anda dapat menyediakan kredensial melalui berbagai metode sesuai kebutuhan autentikasi dan otorisasi Anda.

Prasyarat

Sebelum mengonfigurasi kredensial akses, Anda harus menginstal OSS SDK untuk iOS. Untuk informasi selengkapnya, lihat Installation.

Inisialisasi penyedia kredensial

Pilih penyedia kredensial

OSS mendukung beberapa metode untuk menginisialisasi penyedia kredensial. Pilih metode yang sesuai dengan kebutuhan autentikasi dan otorisasi skenario Anda.

Metode inisialisasi

Skenario

Diperlukan pasangan AccessKey atau token STS sebelumnya

Kredensial dasar

Masa berlaku kredensial

Metode rotasi atau pembaruan kredensial

Metode 1: Gunakan pasangan AccessKey

Untuk aplikasi yang berjalan di lingkungan aman dan memerlukan akses jangka panjang ke layanan cloud tanpa rotasi kredensial yang sering.

Ya

Access key

Jangka panjang

Rotasi manual

Metode 2: Gunakan token STS

Untuk aplikasi yang berjalan di lingkungan tidak tepercaya di mana Anda ingin mengontrol periode validitas dan izin kredensial.

Ya

STS token

Sementara

Kustom

Metode 3: Gunakan CredentialsURI

Untuk aplikasi yang perlu memperoleh kredensial akses dari sistem eksternal.

Tidak

STS token

Sementara

Auto-refresh

Metode 1: Gunakan pasangan AccessKey

Jika aplikasi Anda memerlukan akses jangka panjang ke OSS, dijalankan di lingkungan yang aman dan stabil, serta tidak mendukung rotasi kredensial yang sering, Anda dapat menggunakan pasangan AccessKey dari Akun Alibaba Cloud atau Pengguna Resource Access Management (RAM) untuk menginisialisasi penyedia kredensial. Pasangan AccessKey terdiri dari ID AccessKey dan Rahasia AccessKey. Namun, metode ini mengharuskan Anda memelihara pasangan AccessKey secara manual, sehingga meningkatkan risiko keamanan dan kompleksitas pemeliharaan. Untuk informasi selengkapnya tentang cara memperoleh pasangan AccessKey, lihat CreateAccessKey.

Peringatan

Contoh kode:

NSString *ak = @"<ALIBABA_CLOUD_ACCESS_KEY_ID>";
NSString *sk = @"<ALIBABA_CLOUD_ACCESS_KEY_SECRET>";

id<OSSCredentialProvider> credentialProvider = [[OSSPlainTextAKSKPairCredentialProvider alloc] initWithPlainTextAccessKey:ak secretKey:sk];

Metode 2: Gunakan token STS

Jika aplikasi Anda memerlukan akses sementara ke OSS dan Anda ingin menerapkan kontrol akses detail halus serta menyesuaikan izin secara real-time untuk meningkatkan keamanan dan fleksibilitas, Anda dapat menggunakan kredensial identitas sementara dari Security Token Service (STS) untuk menginisialisasi penyedia kredensial. Kredensial ini mencakup ID AccessKey, Rahasia AccessKey, dan token STS. Namun, metode ini mengharuskan Anda memelihara token STS secara manual, sehingga meningkatkan risiko keamanan dan kompleksitas pemeliharaan. Untuk informasi selengkapnya tentang cara memperoleh token STS, lihat AssumeRole.

Anda dapat menentukan pasangan AccessKey dan token STS dalam kode Anda untuk mereferensikan kredensial tersebut. Contoh berikut menunjukkan cara memperbarui token STS.

Perbarui token STS secara manual

NSString *ak = @"<ALIBABA_CLOUD_ACCESS_KEY_ID>";
NSString *sk = @"<ALIBABA_CLOUD_ACCESS_KEY_SECRET>";
NSString *token = @"<ALIBABA_CLOUD_SECURITY_TOKEN>";

id<OSSCredentialProvider> credentialProvider = [[OSSStsTokenCredentialProvider alloc] initWithAccessKeyId:ak
                                                                                              secretKeyId:sk
                                                                                            securityToken:token];

Perbarui token STS secara otomatis

id<OSSCredentialProvider> credentialProvider = [[OSSFederationCredentialProvider alloc] initWithFederationTokenGetter:^OSSFederationToken * _Nullable{
    // Peroleh ID AccessKey, Rahasia AccessKey, token STS, dan waktu kedaluwarsa.

    /* Contoh berikut menunjukkan cara memperoleh ID AccessKey, Rahasia AccessKey, token STS, dan waktu kedaluwarsa dari server aplikasi:
    // Buat permintaan untuk mengakses server aplikasi Anda.
    NSURL * url = [NSURL URLWithString:@"http://localhost:8080/distribute-token.json"];
    // Gunakan permintaan untuk mengatur parameter yang diperlukan oleh server Anda.
    NSURLRequest * request = [NSURLRequest requestWithURL:url];
    OSSTaskCompletionSource * tcs = [OSSTaskCompletionSource taskCompletionSource];
    NSURLSession * session = [NSURLSession sharedSession];
    // Kirim permintaan.
    NSURLSessionTask * sessionTask = [session dataTaskWithRequest:request
                                                completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
        if (error) {
            [tcs setError:error];
            return;
        }
        [tcs setResult:data];
    }];
    [sessionTask resume];
    // Blokir thread dan tunggu respons.
    [tcs.task waitUntilFinished];
    // Uraikan hasilnya.
    if (tcs.task.error) {
        NSLog(@"get token error: %@", tcs.task.error);
        return nil;
    } else {
        // Data yang dikembalikan dalam format JSON. Uraikan data untuk memperoleh bidang-bidang token.
        NSDictionary * object = [NSJSONSerialization JSONObjectWithData:tcs.task.result
                                                                options:kNilOptions
                                                                  error:nil];
        NSString *ak = [object objectForKey:@"AccessKeyId"];
        NSString *sk = [object objectForKey:@"AccessKeySecret"];
        NSString *token = [object objectForKey:@"SecurityToken"];
        NSString *expiration = [object objectForKey:@"Expiration"];
     
        OSSFederationToken * federationToken = [OSSFederationToken new];
        federationToken.tAccessKey = ak;
        federationToken.tSecretKey = sk;
        federationToken.tToken = token;
        federationToken.expirationTimeInGMTFormat = expiration;
        NSLog(@"get token: %@", federationToken);
        return federationToken;
    }
    */

    NSString *ak = @"<ALIBABA_CLOUD_ACCESS_KEY_ID>";
    NSString *sk = @"<ALIBABA_CLOUD_ACCESS_KEY_SECRET>";
    NSString *token = @"<ALIBABA_CLOUD_SECURITY_TOKEN>";
    NSString *expiration = @"<EXPIRATION>";

    OSSFederationToken * federationToken = [OSSFederationToken new];
    federationToken.tAccessKey = ak;
    federationToken.tSecretKey = sk;
    federationToken.tToken = token;
    federationToken.expirationTimeInGMTFormat = expiration;

    return federationToken;
}];

Metode 3: Gunakan CredentialsURI

Jika aplikasi Anda perlu memperoleh dan memperbarui kredensial Alibaba Cloud secara otomatis dari sistem eksternal atau konfigurasi kustom untuk manajemen kredensial yang fleksibel dan akses tanpa kunci, Anda dapat menggunakan CredentialsURI untuk menginisialisasi penyedia kredensial. Metode ini menggunakan token STS sebagai kredensial dasar. Alat Credentials memperoleh token STS dari URI yang Anda sediakan untuk menginisialisasi client. Metode ini tidak mengharuskan Anda menyediakan pasangan AccessKey atau token STS, sehingga menghilangkan risiko pemeliharaan manual.

  1. Agar alat Credentials dapat mengurai dan menggunakan token STS dengan benar, URI harus mengembalikan respons yang mengikuti protokol berikut:

    • Kode status respons: 200

    • Struktur badan respons:

      {
        "StatusCode":200,
        "AccessKeyId":"AccessKeyId",
        "AccessKeySecret":"AccessKeySecret",
        "Expiration":"2015-11-03T09:52:59Z",
        "SecurityToken":"SecurityToken"
      }                    
  2. Konfigurasikan kredensial URI sebagai kredensial akses.

    NSString *authServerUrl = @"<authServerUrl>";
    id<OSSCredentialProvider> credentialProvider = [[OSSAuthCredentialProvider alloc] initWithAuthServerUrl:authServerUrl];
  3. Jika datanya dienkripsi, gunakan metode berikut untuk mendekripsinya.

    NSString *authServerUrl = @"<authServerUrl>";
    id<OSSCredentialProvider> credentialProvider = [[OSSAuthCredentialProvider alloc] initWithAuthServerUrl:authServerUrl responseDecoder:^NSData * _Nullable(NSData * _Nonnull data) {
        NSData *result = nil;
        // Dekripsi data.
        // result = ...
        return result;
    }];