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 |
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 | |
Untuk aplikasi yang berjalan di lingkungan tidak tepercaya di mana Anda ingin mengontrol periode validitas dan izin kredensial. | Ya | STS token | Sementara | Kustom | |
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.
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.
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" }
Konfigurasikan kredensial URI sebagai kredensial akses.
NSString *authServerUrl = @"<authServerUrl>"; id<OSSCredentialProvider> credentialProvider = [[OSSAuthCredentialProvider alloc] initWithAuthServerUrl:authServerUrl];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; }];