All Products
Search
Document Center

ApsaraVideo Media Processing:Meminta token keamanan

Last Updated:Jun 11, 2026

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 roleArn dari peran RAM yang akan diasumsikan oleh token STS. Untuk mendapatkan ARN tersebut, login ke Konsol RAM, pilih Identities > Roles, 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.

  1. Tambahkan dependensi STS SDK ke file pom.xml Anda.

    <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>
    Catatan

    Kunjungi Repositori Maven untuk mendapatkan versi terbaru dari aliyun-java-sdk-core.

  2. Panggil assumeRole untuk menghasilkan pasangan AccessKey sementara dan token keamanan.

    Parameter permintaan utamanya adalah:

    Parameter

    Deskripsi

    Contoh nilai

    roleArn

    Nama Sumber Daya Alibaba Cloud (ARN) dari peran RAM yang akan diasumsikan

    acs:ram::174*****11242:role/sts-role

    DurationSeconds

    Periode validitas token dalam detik. Rentang valid: 900–3.600

    900

    RoleSessionName

    Label untuk sesi ini, digunakan dalam log audit

    test-token

    import 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);
        }
    }
  3. Tetapkan periode validitas token.

    Atur DurationSeconds ke 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;
         }
    }

Topik terkait