Untuk membuat permintaan ke Object Storage Service (OSS) menggunakan Software Development Kit (SDK) Android, Anda harus mengonfigurasi kredensial akses. Layanan Alibaba Cloud menggunakan kredensial akses tersebut untuk memverifikasi identitas dan izin akses Anda. Anda dapat menyediakan kredensial dengan berbagai cara, tergantung pada kebutuhan autentikasi dan otorisasi Anda.
Prasyarat
Sebelum mengonfigurasi kredensial akses, Anda harus menginstal OSS Android SDK. Untuk informasi selengkapnya, lihat Instal Android SDK.
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 penyedia kredensial | Skenario | Memerlukan pasangan AccessKey atau token STS yang telah dikonfigurasi sebelumnya | Jenis kredensial dasar | Masa berlaku kredensial | Metode rotasi atau refresh kredensial |
Aplikasi yang berjalan di lingkungan aman dan stabil, tidak rentan terhadap serangan eksternal, serta memerlukan akses jangka panjang ke layanan Alibaba Cloud tanpa rotasi kredensial yang sering. | Ya | AccessKey | Jangka panjang | Rotasi manual | |
Aplikasi yang berjalan di lingkungan tidak tepercaya di mana Anda perlu mengontrol periode validitas dan izin kredensial akses. | Ya | Token STS | Temporary | Kustom | |
Aplikasi yang perlu memperoleh kredensial akses dari sistem eksternal. | Tidak | Token STS | Temporary | Auto-refresh |
Metode 1: Gunakan pasangan AccessKey
Anda dapat menggunakan pasangan AccessKey (ID AccessKey dan Rahasia AccessKey) dari Akun Alibaba Cloud atau Pengguna Resource Access Management (RAM) untuk menginisialisasi penyedia kredensial jika aplikasi Anda berjalan di lingkungan aman dan stabil yang tidak rentan terhadap serangan eksternal, memerlukan akses jangka panjang ke OSS, dan tidak memungkinkan rotasi kredensial yang sering. Namun, metode ini mengharuskan Anda memelihara pasangan AccessKey secara manual, sehingga menimbulkan risiko keamanan dan meningkatkan kompleksitas pemeliharaan. Untuk informasi selengkapnya tentang cara memperoleh pasangan AccessKey, lihat CreateAccessKey - Buat pasangan AccessKey untuk Akun Alibaba Cloud atau Pengguna RAM.
Metode ini memiliki risiko keamanan dan tidak disarankan untuk client mobile. Akun Alibaba Cloud memiliki izin penuh atas semua resource-nya. Jika pasangan AccessKey Akun Alibaba Cloud bocor, sistem Anda akan menghadapi risiko keamanan tinggi. Jika Anda harus menggunakan metode ini, gunakan pasangan AccessKey dari Pengguna RAM dengan izin minimum yang diperlukan.
Contoh kode
String ak = "<ALIBABA_CLOUD_ACCESS_KEY_ID>";
String sk = "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>";
OSSCredentialProvider credentialProvider = new OSSPlainTextAKSKCredentialProvider(ak, sk);Metode 2: Gunakan token STS
Anda dapat menggunakan kredensial identitas temporary yang diperoleh dari Security Token Service (STS) untuk menginisialisasi penyedia kredensial jika aplikasi Anda memerlukan akses temporary ke OSS, kontrol akses detail halus, serta penyesuaian izin secara real-time guna meningkatkan keamanan dan fleksibilitas. Kredensial ini mencakup ID AccessKey, Rahasia AccessKey, dan token STS. Namun, metode ini mengharuskan Anda memelihara token STS secara manual, sehingga menimbulkan risiko keamanan dan meningkatkan kompleksitas pemeliharaan. Untuk informasi selengkapnya tentang cara memperoleh token STS, lihat AssumeRole - Dapatkan kredensial identitas temporary untuk Peran RAM.
Anda dapat menggunakan pasangan AccessKey dan token STS dalam kode Anda untuk mereferensikan kredensial tersebut. Contoh berikut menunjukkan cara memperbarui token STS.
Perbarui token STS secara manual
String ak = "<ALIBABA_CLOUD_ACCESS_KEY_ID>";
String sk = "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>";
String token = "<ALIBABA_CLOUD_SECURITY_TOKEN>";
OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(ak, sk, token);Perbarui token STS secara otomatis
OSSCredentialProvider credentialProvider = new OSSFederationCredentialProvider() {
@Override
public OSSFederationToken getFederationToken() {
/* Dapatkan ID AccessKey, Rahasia AccessKey, token STS, dan waktu kedaluwarsa.
* Contoh berikut menunjukkan cara memperoleh kredensial dari server aplikasi:
* URL stsUrl = new URL("<server_url>");
* HttpURLConnection conn = (HttpURLConnection) stsUrl.openConnection();
* InputStream input = conn.getInputStream();
* String jsonText = IOUtils.readStreamAsString(input, OSSConstants.DEFAULT_CHARSET_NAME);
* JSONObject jsonObjs = new JSONObject(jsonText);
* String ak = jsonObjs.getString("AccessKeyId");
* String sk = jsonObjs.getString("AccessKeySecret");
* String token = jsonObjs.getString("SecurityToken");
* String expiration = jsonObjs.getString("Expiration");
*/
String ak = "<ALIBABA_CLOUD_ACCESS_KEY_ID>";
String sk = "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>";
String token = "<ALIBABA_CLOUD_SECURITY_TOKEN>";
String expiration = "<ALIBABA_CLOUD_EXPIRATION>";
// Buat objek OSSFederationToken dari ID AccessKey, Rahasia AccessKey, token STS, dan waktu kedaluwarsa.
OSSFederationToken federationToken = new OSSFederationToken(ak, sk, token, expiration);
return federationToken;
}
};Metode 3: Gunakan CredentialsURI
Anda dapat menggunakan CredentialsURI untuk menginisialisasi penyedia kredensial jika aplikasi Anda perlu memperoleh dan memperbarui kredensial Alibaba Cloud secara otomatis melalui sistem eksternal atau konfigurasi kustom guna mencapai manajemen kredensial yang fleksibel dan akses tanpa kunci. Implementasi dasar metode ini menggunakan token STS. Tool Credentials menggunakan URI yang Anda berikan untuk mengambil token STS dan menginisialisasi client. Metode ini tidak mengharuskan Anda menyediakan pasangan AccessKey atau token STS, sehingga menghilangkan risiko pemeliharaan manual.
Agar tool Credentials dapat mengurai dan menggunakan token STS dengan benar, URI harus mematuhi protokol respons berikut:
Kode status respons: 200
Struktur isi respons:
{ "StatusCode":200, "AccessKeyId":"AccessKeyId", "AccessKeySecret":"AccessKeySecret", "Expiration":"2015-11-03T09:52:59Z", "SecurityToken":"SecurityToken" }
Konfigurasikan kredensial URI sebagai kredensial akses.
String authServerUrl = "<remote_url>"; OSSAuthCredentialsProvider credentialProvider = new OSSAuthCredentialsProvider(authServerUrl); /* Jika data dienkripsi, Anda dapat menggunakan kode berikut untuk mendekripsinya. * credentialProvider.setDecoder(new OSSAuthCredentialsProvider.AuthDecoder() { * @Override * public String decode(String data) { * String result = null; * // Dekripsi data. * // result = ... * return result; * } * }); */