Tüm Ürünler
Search
Belge Merkezi

Data Management:DMS konsoluna oturum açma gerektirmeyen erişim

Son Güncelleme:Oct 04, 2026

Veri Yönetimi (DMS) konsoluna oturum açma gerektirmeyen erişim sağlamak amacıyla geliştirme veya araç platformunuza bir URL gömebilirsiniz. Bu sayede kullanıcılar, bir Alibaba Cloud hesabı veya RAM kullanıcısı olarak oturum açmadan DMS konsoluna ve özelliklerine doğrudan erişebilir. Bu konuda, oturum açma gerektirmeyen erişim için URL oluşturma işlemi açıklanmaktadır.

Yordam

  1. DMS'e erişmek için bir RAM rolü oluşturun ve bu role izinler verin. Ardından bir RAM kullanıcısı oluşturun ve kullanıcıya AliyunSTSAssumeRoleAccess iznini atayın. Daha fazla bilgi için bkz. Önkoşullar.

  2. Rolü üstlenerek geçici kimlik bilgileri edinin. Bu kimlik bilgileri (bir AccessKey ID, AccessKey Secret ve güvenlik belirteci), bir SigninToken almak için kullanılır. Daha fazla bilgi için bkz. 1. Adım: Geçici kimlik bilgilerini alma.

  3. Oturum açma gerektirmeyen erişim URL'si oluşturmak için gerekli olan SigninToken değerini alın. Daha fazla bilgi için bkz. 2. Adım: SigninToken alma.

  4. Oturum açma gerektirmeyen erişim URL'sini oluşturun. Daha fazla bilgi için bkz. 3. Adım: Oturum açma gerektirmeyen erişim URL'si oluşturma.

Maven bağımlılıkları

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

Java kod örneği

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;

/*
  Set up the user and role information.
 */
  String accountId = "Your Alibaba Cloud account ID";
 // The RAM role used to access DMS. Grant the AliyunDMSReadOnlyAccess (read-only) or AliyunDMSFullAccess permission as needed.
  String ramRoleArn = "The ARN of the RAM role that you created in the Prerequisites section";
 // The AccessKey ID and AccessKey Secret of the RAM user. The RAM user must have the AliyunSTSAssumeRoleAccess permission.
  String accessKeyId = "";
  String accessKeySecret = "";
 /*
  Step 1: Call the AssumeRole operation to obtain temporary credentials, including an AccessKey ID, an AccessKey Secret, and a 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());

  /*
  Step 2: Obtain the SigninToken.
  */
  String signInToken = getSignInToken(credentials.getAccessKeyId(),
  credentials.getAccessKeySecret(),
  credentials.getSecurityToken());
  System.out.println("Your SigninToken is: " + signInToken);

 /*
  Step 3: Create the logon-free access URL. The following example uses the DMS console homepage.
 */
  String pageUrl = getDmsLoginUrl("https://dms.alibabacloud.com", signInToken);
  System.out.println("Your PageUrl is : " + pageUrl);

Önkoşullar

Not

Aşağıdaki önkoşulların tümünü karşılıyorsanız 1. Adıma devam edebilirsiniz.

1. Adım: Geçici kimlik bilgilerini alma

Bir RAM rolünü üstlenerek geçici kimlik bilgileri elde etmek için AssumeRole işlemini çağırın. AssumeRole işlemi hakkında daha fazla bilgi için bkz. AssumeRole.

Aşağıdaki Java kodu örnek gösterilmektedir:

  /**
  * Obtains temporary credentials by calling the AssumeRole operation.
  */
  private static AssumeRoleResponse.AssumeRoleResponseBodyCredentials assumeRole(
                    String accountId, String accessKeyId,
                    String accessKeySecret, String ramRoleArn) throws Exception {
    // Configure the STS client.
    Config config = new Config()
        .setAccessKeyId(accessKeyId)
        .setAccessKeySecret(accessKeySecret)
        // Note: The endpoint for Security Token Service (STS) is globally fixed. The sts.cn-hangzhou.aliyuncs.com endpoint is typically used.
        .setEndpoint("sts.cn-hangzhou.aliyuncs.com");
    Client client = new Client(config);
    AssumeRoleRequest request = new AssumeRoleRequest();
    // An ARN (Alibaba Cloud Resource Name) is a global resource identifier that specifies a RAM role.
    request.setRoleArn(ramRoleArn);
    // A custom parameter to distinguish between different tokens. This parameter can be used for user-level access auditing. Format: ^[a-zA-Z0-9\.@\-_]+$
    request.setRoleSessionName("session-name");
    request.setDurationSeconds(3600L); // Explicitly set the validity period in seconds.
    RuntimeOptions runtime = new RuntimeOptions();
    AssumeRoleResponse response = client.assumeRoleWithOptions(request, runtime);
    return response.getBody().getCredentials();
  }

2. Adım: SigninToken alma

Bir SigninToken almak için GetSigninToken işlemini çağırın.

Aşağıdaki Java kodu örnek gösterilmektedir:

  /**
     * Obtains a SigninToken by using a 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.alibabacloud.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;
    }

3. Adım: Oturum açma gerektirmeyen erişim URL'si oluşturma

Not

Her SigninToken tek kullanımlıktır. Başka bir oturum açma gerektirmeyen erişim URL'si oluşturmak için yeni bir belirteç almanız gerekir.

Aşağıdaki Java kodu örnek gösterilmektedir:

İstek örneği:

private static String getDmsLoginUrl(String pageUrl, String signInToken) throws URISyntaxException {
        URIBuilder builder = new URIBuilder("http://signin.alibabacloud.com/federation");
        builder.setParameter("Action", "Login");
        // The URL to which the user is redirected when the session expires. This is typically a URL on your web server that is configured for a 302 redirect.
        builder.setParameter("LoginUrl", "https://signin.alibabacloud.com/login.htm");
        // The DMS page that the user accesses.
        builder.setParameter("Destination", pageUrl);
        builder.setParameter("SigninToken", signInToken);
        HttpGet request = new HttpGet(builder.build());
        return request.getURI().toString();
}

Yanıt örneği:

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.alibabacloud.com/federation?Action=Login&LoginUrl=https%3A%2F%2Fsignin.alibabacloud.com%2Flogin.htm&Destination=https%3A%2F%2Fdms.alibabacloud.com&SigninToken=06ec409b9d8c48f6ac5dcd18a0513ee1dhUkhcRn5CMsDqffC4wxsuFt9xjYtYePmYTHEWSMVKLFyXXnSq3IUbon1v46wCmKPwrAejDvw2i8rilolPSuxpKRDxzD****

Aşağıdaki örnek, oturum açma gerektirmeyen erişim URL'sinin (PageUrl) biçimini göstermektedir:

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

Destination parametresi için kullanılan DMS sayfa URL'si, TicketType değerine bağlıdır.

  • Değer normal ise karşılık gelen DMS etki alanı http://dms.alibabacloud.com olur.

  • Değer mini ise genellikle BID sanal operatörleri için kullanılır. Karşılık gelen etki alanı http://dms-ent4service.aliyun.com olur.

Sonraki adımlar

DMS konsoluna erişmek için oturum açma gerektirmeyen erişim URL'sini (PageUrl) açın. Oturum açıldıktan sonra, kullanıcı kimliği DMS konsolunun sağ üst köşesinde {RAM rol adı}/{RoleSessionName} biçiminde görüntülenir; örneğin aliyunlogintest/session-name-123.