All Products
Search
Document Center

Data Management:Akses tanpa logon ke konsol DMS

Last Updated:Jun 13, 2026

Anda dapat menyematkan URL di platform pengembangan atau alat Anda untuk menyediakan akses tanpa logon ke konsol Data Management (DMS), sehingga pengguna dapat langsung mengakses konsol DMS dan fitur-fiturnya tanpa perlu masuk menggunakan akun Alibaba Cloud atau sebagai RAM user. Topik ini menjelaskan cara membuat URL untuk akses tanpa logon tersebut.

Prosedur

  1. Buat RAM role untuk mengakses DMS dan berikan izin yang sesuai. Selanjutnya, buat RAM user dan berikan izin AliyunSTSAssumeRoleAccess kepada pengguna tersebut. Untuk informasi selengkapnya, lihat Prasyarat.

  2. Dapatkan kredensial temporary dengan mengasumsikan role tersebut. Kredensial ini—berupa AccessKey ID, AccessKey Secret, dan security token—digunakan untuk mendapatkan SigninToken. Untuk informasi selengkapnya, lihat Langkah 1: Dapatkan kredensial temporary.

  3. Dapatkan SigninToken, yang diperlukan untuk membuat URL akses tanpa logon. Untuk informasi selengkapnya, lihat Langkah 2: Dapatkan SigninToken.

  4. Buat URL akses tanpa logon. Untuk informasi selengkapnya, lihat Langkah 3: Buat URL akses tanpa logon.

Dependensi Maven

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>sts20150401</artifactId>
    <version>1.1.7</version>
</dependency>

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>2.0.53</version>
</dependency>

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.14</version>
</dependency>

Contoh kode Java

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.sts20150401.Client;
import com.aliyun.sts20150401.models.*;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.models.RuntimeOptions;
import org.apache.http.HttpStatus;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

import java.io.IOException;
import java.net.URISyntaxException;

/*
  Siapkan informasi pengguna dan role.
 */
  String accountId = "ID akun Alibaba Cloud Anda";
 // RAM role yang digunakan untuk mengakses DMS. Berikan izin AliyunDMSReadOnlyAccess (read-only) atau AliyunDMSFullAccess sesuai kebutuhan.
  String ramRoleArn = "ARN dari RAM role yang Anda buat di bagian Prasyarat";
 // AccessKey ID dan AccessKey Secret dari RAM user. RAM user harus memiliki izin AliyunSTSAssumeRoleAccess.
  String accessKeyId = "";
  String accessKeySecret = "";
 /*
  Langkah 1: Panggil operasi AssumeRole untuk mendapatkan kredensial temporary, termasuk AccessKey ID, AccessKey Secret, dan security token.
 */
  AssumeRoleResponse.AssumeRoleResponseBodyCredentials credentials = assumeRole(accountId, accessKeyId, accessKeySecret, ramRoleArn);
  System.out.println("Expiration: " + credentials.getExpiration());
  System.out.println("Access Key Id: " + credentials.getAccessKeyId());
  System.out.println("Access Key Secret: " + credentials.getAccessKeySecret());
  System.out.println("Security Token: " + credentials.getSecurityToken());

  /*
  Langkah 2: Dapatkan SigninToken.
  */
  String signInToken = getSignInToken(credentials.getAccessKeyId(),
  credentials.getAccessKeySecret(),
  credentials.getSecurityToken());
  System.out.println("SigninToken Anda adalah: " + signInToken);

 /*
  Langkah 3: Buat URL akses tanpa logon. Contoh berikut menggunakan halaman utama konsol DMS.
 */
  String pageUrl = getDmsLoginUrl("https://dms.aliyun.com", signInToken);
  System.out.println("PageUrl Anda adalah: " + pageUrl);

Prasyarat

Catatan

Jika Anda telah memenuhi semua prasyarat berikut, Anda dapat melanjutkan ke Langkah 1.

Langkah 1: Dapatkan kredensial temporary

Panggil operasi AssumeRole untuk mendapatkan kredensial temporary dengan mengasumsikan RAM role. Untuk informasi selengkapnya tentang operasi AssumeRole, lihat AssumeRole.

Kode Java berikut memberikan contohnya:

  /**
  * Mendapatkan kredensial temporary dengan memanggil operasi AssumeRole.
  */
  private static AssumeRoleResponse.AssumeRoleResponseBodyCredentials assumeRole(
                    String accountId, String accessKeyId,
                    String accessKeySecret, String ramRoleArn) throws Exception {
    // Konfigurasikan client STS.
    Config config = new Config()
        .setAccessKeyId(accessKeyId)
        .setAccessKeySecret(accessKeySecret)
        // Catatan: Titik akhir Layanan Token Keamanan (STS) bersifat global dan tetap. Biasanya digunakan titik akhir sts.cn-hangzhou.aliyuncs.com.
        .setEndpoint("sts.cn-hangzhou.aliyuncs.com");
    Client client = new Client(config);
    AssumeRoleRequest request = new AssumeRoleRequest();
    // ARN (Alibaba Cloud Resource Name) adalah pengidentifikasi sumber daya global yang menentukan RAM role.
    request.setRoleArn(ramRoleArn);
    // Parameter kustom untuk membedakan antara token yang berbeda. Parameter ini dapat digunakan untuk audit akses tingkat pengguna. Format: ^[a-zA-Z0-9\.@\-_]+$
    request.setRoleSessionName("session-name");
    request.setDurationSeconds(3600L); // Tetapkan periode validitas secara eksplisit dalam satuan detik.
    RuntimeOptions runtime = new RuntimeOptions();
    AssumeRoleResponse response = client.assumeRoleWithOptions(request, runtime);
    return response.getBody().getCredentials();
  }

Langkah 2: Dapatkan SigninToken

Panggil operasi GetSigninToken untuk mendapatkan SigninToken.

Kode Java berikut memberikan contohnya:

  /**
     * Mendapatkan SigninToken dengan menggunakan security token.
     *
     * @param accesskeyId
     * @param accessKeySecret
     * @param securityToken
     * @return
     * @throws IOException
     * @throws URISyntaxException
     */
    private static String getSignInToken(String accesskeyId, String accessKeySecret, String securityToken)
        throws IOException, URISyntaxException {
        URIBuilder builder = new URIBuilder("http://signin.aliyun.com/federation");

        builder.setParameter("Action", "GetSigninToken")
            .setParameter("AccessKeyId", accesskeyId)
            .setParameter("AccessKeySecret", accessKeySecret)
            .setParameter("SecurityToken", securityToken)
            .setParameter("TicketType", "normal");

        HttpGet request = new HttpGet(builder.build());
        CloseableHttpClient httpclient = HttpClients.createDefault();

        try (CloseableHttpResponse response = httpclient.execute(request)) {
            if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                String context = EntityUtils.toString(response.getEntity());
                JSONObject jsonObject = JSON.parseObject(context);
                return jsonObject.getString("SigninToken");
            } else {
                System.out.println(response.getStatusLine());
            }
        }
        return null;
    }

Langkah 3: Buat URL akses tanpa logon

Catatan

Setiap SigninToken hanya dapat digunakan sekali. Untuk membuat URL akses tanpa logon lainnya, Anda harus mendapatkan token baru.

Kode Java berikut memberikan contohnya:

Contoh permintaan:

private static String getDmsLoginUrl(String pageUrl, String signInToken) throws URISyntaxException {
        URIBuilder builder = new URIBuilder("http://signin.aliyun.com/federation");
        builder.setParameter("Action", "Login");
        // URL tempat pengguna dialihkan ketika sesi berakhir. Biasanya merupakan URL di server web Anda yang dikonfigurasi untuk redirect 302.
        builder.setParameter("LoginUrl", "https://signin.aliyun.com/login.htm");
        // Halaman DMS yang diakses pengguna.
        builder.setParameter("Destination", pageUrl);
        builder.setParameter("SigninToken", signInToken);
        HttpGet request = new HttpGet(builder.build());
        return request.getURI().toString();
}

Contoh respons:

Expiration: 2020-11-30T06:16:20Z
Access Key Id: STS.NT7L6Jp5Y8W9LNvGQku2x****
Access Key Secret: 4nU8F6rv8MCDR8tygMDnXvN9yCNBCVrxnqArj1n1****
Security Token: CAIS/gF1q6Ft5B2yfSjIr5e****+nep4j5XSTmjHo1E+eb1Ujo7xijz2IH9IeXhpB****/43nWlU7PkYlrloRoReREvCKM1565kSqFn6O11Qf****+5qsoasPETOITyZtZagToeUZdfZfejXGDKgvyRvwLz****/Vli+S/OggoJmadJlNWvRL0AxZrFsKxBltdUROF****+pKWSKuGfLC1dysQcO4gEWq4bHm5zAs0OH1QOhlrVP+N+qfqLJNZc8YM1NNP6ux/Fze6b71ypd1gNH7q8ejtYfpmua74jBXgUAuU3faraOrYd1SwZ9Z7knH****/n6ifBjpvw9Hlk0R9OcVhqAAXpZx****+STGa8vctRwyTWdMM5LByes3cr1D46jaj0****/lTMkoXCwjMlCs7sc+DA9xjJCcl57eKC7A3ThnJAWQyyeKZfIGgeHN7yUS5ND8r7TBn6bMUqwvfVX****/cbkzBX6iV6jrataHZPZdtQYHH6GgvQ5XZUZJjoD****
Your SigninToken is: 06ec409b9d8c48f6ac5dcd18a0513ee1dhUkhcRn5CMsDqffC4wxsuFt9xjYtYePmYTHEWSMVKLFyXXnSq3IUbon1v46wCmKPwrAejDvw2i8rilolPSuxpKRDxz****
Your PageUrl is : http://signin.aliyun.com/federation?Action=Login&LoginUrl=https%3A%2F%2Fsignin.aliyun.com%2Flogin.htm&Destination=https%3A%2F%2Fdms.aliyun.com&SigninToken=06ec409b9d8c48f6ac5dcd18a0513ee1dhUkhcRn5CMsDqffC4wxsuFt9xjYtYePmYTHEWSMVKLFyXXnSq3IUbon1v46wCmKPwrAejDvw2i8rilolPSuxpKRDxzD****

Contoh berikut menunjukkan format URL akses tanpa logon (PageUrl):

http://signin.aliyun.com/federation?Action=Login
                            &LoginUrl=<your-redirect-url-on-expiration>
                            &Destination=<your-target-dms-url>
                            &SigninToken=<your-signin-token>
Catatan

URL halaman DMS untuk parameter Destination bergantung pada nilai TicketType.

  • Jika nilainya normal, domain DMS yang sesuai adalah http://dms.aliyun.com.

  • Jika nilainya mini, biasanya digunakan untuk operator virtual BID. Domain yang sesuai adalah http://dms-ent4service.aliyun.com.

Langkah selanjutnya

Buka URL akses tanpa logon (PageUrl) untuk mengakses konsol DMS. Setelah berhasil masuk, identitas pengguna akan muncul di pojok kanan atas konsol DMS dalam format {nama RAM role}/{RoleSessionName}, misalnya, aliyunlogintest/session-name-123.