Video terenkripsi di MPS harus diputar menggunakan media ID, yang memerlukan token Security Token Service (STS) untuk kontrol akses. Token STS memberikan akses sementara dan terbatas cakupannya tanpa mengekspos kredensial akun utama Anda. Topik ini menjelaskan cara meminta token STS menggunakan RAM STS SDK (Java).
Prasyarat
Sebelum memulai, pastikan Anda telah:
Menginstal RAM STS SDK. Untuk petunjuk penyiapan, lihat contoh Java. Untuk bahasa lainnya, lihat Ikhtisar STS SDK.
Memperoleh
roleArndari peran RAM yang akan diasumsikan oleh token STS. Untuk mendapatkan ARN tersebut, login ke Konsol RAM, pilih , klik role yang dituju, lalu salin nilai pada bidang ARN.
Meminta token STS
Token STS merupakan kredensial berumur pendek. Saat aplikasi Anda memanggil assumeRole, aplikasi tersebut menerima pasangan AccessKey sementara dan token keamanan yang kedaluwarsa setelah periode tertentu. Pendekatan ini menghindari penyematan kredensial jangka panjang dalam kode sisi klien.
-
Tambahkan dependensi STS SDK ke file
pom.xmlAnda.<repositories> <repository> <id>sonatype-nexus-staging</id> <name>Sonatype Nexus Staging</name> <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <dependencies> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-sts</artifactId> <version>2.1.6</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>2.2.0</version> </dependency> </dependencies>CatatanKunjungi Repositori Maven untuk mendapatkan versi terbaru dari
aliyun-java-sdk-core. -
Panggil
assumeRoleuntuk menghasilkan pasangan AccessKey sementara dan token keamanan.Parameter permintaan utamanya adalah:
Parameter
Deskripsi
Contoh nilai
roleArnNama Sumber Daya Alibaba Cloud (ARN) dari peran RAM yang akan diasumsikan
acs:ram::174*****11242:role/sts-roleDurationSecondsPeriode validitas token dalam detik. Rentang valid: 900–3.600
900RoleSessionNameLabel untuk sesi ini, digunakan dalam log audit
test-tokenimport com.aliyuncs.DefaultAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.http.MethodType; import com.aliyuncs.http.ProtocolType; import com.aliyuncs.sts.model.v20150401.AssumeRoleRequest; import com.aliyuncs.sts.model.v20150401.AssumeRoleResponse; /** * Operasi ini hanya dapat dipanggil sebagai RAM user. */ public class STSTokenDemo { public static void main(String[] args) throws Exception { // Inisialisasi klien. DefaultAcsClient client = InitClient.initMpsClient(); // roleArn harus diperoleh dari Konsol RAM. String roleArn = "acs:ram::174*********11242:role/sts-role"; try { AssumeRoleResponse response = assumeRole(client, roleArn); System.out.println("Expiration: " + response.getCredentials().getExpiration()); System.out.println("Access Key Id: " + response.getCredentials().getAccessKeyId()); System.out.println("Access Key Secret: " + response.getCredentials().getAccessKeySecret()); System.out.println("Security Token: " + response.getCredentials().getSecurityToken()); System.out.println("RequestId: " + response.getRequestId()); } catch (ClientException e) { System.out.println("Gagal mendapatkan token."); System.out.println("Kode error: " + e.getErrCode()); System.out.println("Pesan error: " + e.getErrMsg()); } } /** Menghasilkan pasangan AccessKey sementara dan token keamanan. */ private static AssumeRoleResponse assumeRole( DefaultAcsClient client, String roleArn) throws ClientException { final AssumeRoleRequest request = new AssumeRoleRequest(); request.setVersion("2015-04-01"); request.setMethod(MethodType.POST); request.setProtocol(ProtocolType.HTTPS); request.setDurationSeconds(900L); request.setRoleArn(roleArn); request.setRoleSessionName("test-token"); return client.getAcsResponse(request); } } -
Tetapkan periode validitas token.
Atur
DurationSecondske nilai antara 900 hingga 3.600 detik. Pilih periode yang cukup panjang untuk mencakup durasi pemutaran yang diharapkan. Jika token kedaluwarsa selama pemutaran, video akan berhenti dan pengguna harus memperoleh token baru. Untuk video panjang atau sesi di mana pengguna mungkin menjeda dan melanjutkan, gunakan periode validitas yang lebih lama.Anda dapat menggunakan kembali token tersebut hingga kedaluwarsa. Gunakan helper berikut untuk memeriksa masa kedaluwarsa token sebelum membuat permintaan baru:
private static boolean isTimeExpire(String expiration) { Date nowDate = new Date(); Date expireDate = javax.xml.bind.DatatypeConverter.parseDateTime(expiration).getTime(); if (expireDate.getTime() <= nowDate.getTime()) { return true; } else { return false; } }