すべてのプロダクト
Search
ドキュメントセンター

Data Management:DMS コンソールへのログイン不要アクセス

最終更新日:Jun 13, 2026

開発プラットフォームまたはツールプラットフォームに URL を埋め込むことで、Data Management (DMS) コンソールへのログイン不要アクセスを提供できます。これにより、ユーザーは Alibaba Cloud アカウントまたは RAM ユーザーとしてサインインすることなく、DMS コンソールおよびその機能に直接アクセスできます。本トピックでは、ログイン不要アクセス用の URL を作成する方法について説明します。

操作手順

  1. DMS にアクセスするための RAM ロールを作成し、権限を付与します。その後、RAM ユーザーを作成し、そのユーザーに AliyunSTSAssumeRoleAccess 権限を付与します。詳細については、「前提条件」をご参照ください。

  2. ロールを偽装して一時的な認証情報を取得します。これらの認証情報(AccessKey ID、AccessKey Secret、セキュリティトークン)は、SigninToken の取得に使用されます。詳細については、「ステップ 1:一時的な認証情報の取得」をご参照ください。

  3. ログイン不要アクセス URL の作成に必要な SigninToken を取得します。詳細については、「ステップ 2:SigninToken の取得」をご参照ください。

  4. ログイン不要アクセス URL を作成します。詳細については、「ステップ 3:ログイン不要アクセス URL の作成」をご参照ください。

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>

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;

/*
  ユーザーおよびロール情報を設定します。
 */
  String accountId = "Your Alibaba Cloud account ID";
 // DMS にアクセスするために使用する RAM ロールです。必要に応じて、AliyunDMSReadOnlyAccess (読み取り専用) または AliyunDMSFullAccess 権限を付与してください。
  String ramRoleArn = "The ARN of the RAM role that you created in the Prerequisites section";
 // RAM ユーザーの AccessKey ID および AccessKey Secret です。この RAM ユーザーには AliyunSTSAssumeRoleAccess 権限が必要です。
  String accessKeyId = "";
  String accessKeySecret = "";
 /*
  ステップ 1:AssumeRole 操作を呼び出して、AccessKey ID、AccessKey Secret、セキュリティトークンを含む一時的な認証情報を取得します。
 */
  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());

  /*
  ステップ 2:SigninToken を取得します。
  */
  String signInToken = getSignInToken(credentials.getAccessKeyId(),
  credentials.getAccessKeySecret(),
  credentials.getSecurityToken());
  System.out.println("Your SigninToken is: " + signInToken);

 /*
  ステップ 3:ログイン不要アクセス URL を作成します。以下の例では、DMS コンソールのホームページを使用しています。
 */
  String pageUrl = getDmsLoginUrl("https://dms.aliyun.com", signInToken);
  System.out.println("Your PageUrl is : " + pageUrl);

前提条件

説明

以下のすべての前提条件を満たしている場合は、ステップ 1 に進んでください。

ステップ 1:一時的な認証情報の取得

AssumeRole 操作を呼び出して、RAM ロールを偽装することで一時的な認証情報を取得します。AssumeRole 操作の詳細については、「AssumeRole」をご参照ください。

以下の Java コードがその例です。

  /**
  * AssumeRole 操作を呼び出して一時的な認証情報を取得します。
  */
  private static AssumeRoleResponse.AssumeRoleResponseBodyCredentials assumeRole(
                    String accountId, String accessKeyId,
                    String accessKeySecret, String ramRoleArn) throws Exception {
    // STS クライアントを構成します。
    Config config = new Config()
        .setAccessKeyId(accessKeyId)
        .setAccessKeySecret(accessKeySecret)
        // 注記:セキュリティトークンサービス (STS) のエンドポイントはグローバルで固定されています。通常は sts.cn-hangzhou.aliyuncs.com エンドポイントを使用します。
        .setEndpoint("sts.cn-hangzhou.aliyuncs.com");
    Client client = new Client(config);
    AssumeRoleRequest request = new AssumeRoleRequest();
    // ARN (Alibaba Cloud リソースネーム) は、RAM ロールを指定するグローバルなリソース識別子です。
    request.setRoleArn(ramRoleArn);
    // 異なるトークンを区別するためのカスタムパラメーターです。ユーザー単位のアクセス監査に使用できます。形式:^[a-zA-Z0-9\.@\-_]+$
    request.setRoleSessionName("session-name");
    request.setDurationSeconds(3600L); // 有効期間を秒単位で明示的に設定します。
    RuntimeOptions runtime = new RuntimeOptions();
    AssumeRoleResponse response = client.assumeRoleWithOptions(request, runtime);
    return response.getBody().getCredentials();
  }

ステップ 2:SigninToken の取得

GetSigninToken 操作を呼び出して SigninToken を取得します。

以下の Java コードがその例です。

  /**
     * セキュリティトークンを使用して SigninToken を取得します。
     *
     * @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;
    }

ステップ 3:ログイン不要アクセス URL の作成

説明

SigninToken は 1 回限り使用可能です。別のログイン不要アクセス URL を作成するには、新しいトークンを取得する必要があります。

以下の Java コードがその例です。

リクエスト例:

private static String getDmsLoginUrl(String pageUrl, String signInToken) throws URISyntaxException {
        URIBuilder builder = new URIBuilder("http://signin.aliyun.com/federation");
        builder.setParameter("Action", "Login");
        // セッションの有効期限切れ時にユーザーがリダイレクトされる URL です。通常は、302 リダイレクトが構成されたご利用の Web サーバー上の URL です。
        builder.setParameter("LoginUrl", "https://signin.aliyun.com/login.htm");
        // ユーザーがアクセスする DMS ページです。
        builder.setParameter("Destination", pageUrl);
        builder.setParameter("SigninToken", signInToken);
        HttpGet request = new HttpGet(builder.build());
        return request.getURI().toString();
}

応答例:

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

以下の例は、ログイン不要アクセス URL (PageUrl) のフォーマットを示しています。

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

Destination パラメーターの DMS ページ URL は、TicketType の値によって異なります。

  • 値が normal の場合、対応する DMS ドメインは http://dms.aliyun.com です。

  • 値が mini の場合、通常は BID 仮想オペレーター向けに使用され、対応するドメインは http://dms-ent4service.aliyun.com です。

次のステップ

ログイン不要アクセス URL (PageUrl) を開いて、DMS コンソールにアクセスします。ログイン後、ユーザー ID は DMS コンソールの右上隅に {RAM ロール名}/{RoleSessionName} の形式で表示されます(例:aliyunlogintest/session-name-123)。