Anda dapat menyematkan URL bebas login ke konsol Data Management (DMS) di platform R&D atau alat Anda. Dengan cara ini, Anda dapat mengakses konsol DMS dan menggunakan fitur-fiturnya tanpa harus masuk dengan akun Alibaba Cloud atau sebagai Pengguna Resource Access Management (RAM). Topik ini menjelaskan cara membuat URL bebas login ke konsol DMS.
Prosedur
Buat Peran RAM yang digunakan untuk mengakses DMS dan berikan izin kepada peran tersebut. Kemudian, buat Pengguna RAM dan berikan izin AliyunSTSAssumeRoleAccess kepada pengguna tersebut. Untuk informasi lebih lanjut, lihat Persiapan.
Dapatkan kredensial identitas sementara untuk peran yang diasumsikan, termasuk ID AccessKey, Rahasia AccessKey, dan token keamanan. Kredensial ini digunakan untuk mendapatkan SigninToken. Untuk informasi lebih lanjut, lihat Langkah 1: Dapatkan Kredensial Identitas Sementara untuk Peran yang Diasumsikan.
Dapatkan SigninToken yang digunakan untuk membuat URL bebas login. Untuk informasi lebih lanjut, lihat Langkah 2: Dapatkan SigninToken.
Buat URL bebas login. Untuk informasi lebih lanjut, lihat Langkah 3: Buat URL Bebas Login ke Konsol DMS.
Contoh berikut menunjukkan kode Java contoh:
/*
Buat Pengguna RAM dan berikan izin kepada pengguna.
*/
String accountId = "Akun Alibaba Cloud";
// Peran yang digunakan untuk mengakses DMS. Anda dapat memberikan izin AliyunDMSReadOnlyAccess dan AliyunDMSFullAccess kepada peran ini sesuai kebutuhan.
String ramRole = "Peran RAM yang telah Anda buat";
// ID AccessKey dan Rahasia AccessKey untuk Pengguna RAM serta izin AliyunSTSAssumeRoleAccess diperlukan.
String accessKeyId = "";
String accessKeySecret = "";
/*
Langkah 1: Panggil operasi AssumeRole untuk mendapatkan ID AccessKey sementara, Rahasia AccessKey, dan token keamanan.
*/
AssumeRoleResponse.Credentials credentials = assumeRole(accountId, accessKeyId, accessKeySecret, ramRole);
System.out.println("Kedaluwarsa: " + credentials.getExpiration());
System.out.println("ID Access Key: " + credentials.getAccessKeyId());
System.out.println("Rahasia Access Key: " + credentials.getAccessKeySecret());
System.out.println("Token Keamanan: " + 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 bebas login. URL ke halaman utama konsol DMS digunakan dalam contoh ini.
*/
String pageUrl = getDmsLoginUrl("https://dms.aliyun.com", signInToken);
System.out.println("PageUrl Anda adalah : " + pageUrl);Persiapan
Jika Anda telah memenuhi semua kondisi berikut, lakukan langkah 1, 2, dan 3 di bawah ini.
Buat Peran RAM yang digunakan untuk mengakses DMS. Untuk informasi lebih lanjut, lihat Buat Peran RAM untuk Akun Alibaba Cloud Tepercaya.
Berikan izin kepada Peran RAM. Untuk informasi lebih lanjut, lihat Berikan Izin kepada Peran RAM.
Buat Pengguna RAM. Untuk informasi lebih lanjut, lihat Buat Pengguna RAM.
Berikan izin AliyunSTSAssumeRoleAccess kepada Pengguna RAM. Untuk informasi lebih lanjut, lihat Berikan Izin kepada Pengguna RAM.
Langkah 1: Dapatkan kredensial identitas sementara untuk peran yang Anda asumsikan
Panggil operasi AssumeRole sebagai Pengguna RAM atau Peran RAM untuk mendapatkan kredensial identitas sementara untuk peran yang diasumsikan. Untuk informasi lebih lanjut tentang operasi AssumeRole, lihat AssumeRole.
Contoh berikut menunjukkan kode Java contoh:
/**
* Panggil operasi AssumeRole untuk mendapatkan kredensial identitas sementara untuk pengguna
*
* @param accountId
* @param accessKeyId
* @param accessKeySecret
* @param ramRole
* @return
* @throws ClientException
*/
private static AssumeRoleResponse.Credentials assumeRole(String accountId, String accessKeyId,
String accessKeySecret, String ramRole)
throws ClientException {
String defaultRegion = "cn-hangzhou";
IClientProfile profile = DefaultProfile.getProfile(defaultRegion, accessKeyId, accessKeySecret);
DefaultAcsClient client = new DefaultAcsClient(profile);
AssumeRoleRequest request = new AssumeRoleRequest();
// Nama Sumber Daya Alibaba Cloud (ARN) adalah pengenal sumber daya unik global dari Peran RAM.
request.setRoleArn(getRoleArn(accountId, ramRole));
// Parameter yang ditentukan pengguna. Anda dapat mengaudit akses pengguna yang menggunakan token keamanan berbeda berdasarkan nilai parameter ini. Format nilai adalah ^[a-zA-Z0-9\.@\-_]+$.
request.setRoleSessionName("session-name");
// Periode validitas yang ditentukan. Unit: detik. Nilai valid: 900 hingga 3600. Nilai default: 3600.
request.setDurationSeconds(3600L);
AssumeRoleResponse response = client.getAcsResponse(request);
return response.getCredentials();
}Langkah 2: Dapatkan SigninToken
Panggil operasi GetSigninToken untuk mendapatkan SigninToken.
Contoh berikut menunjukkan kode Java contoh:
/**
* Gunakan token keamanan untuk mendapatkan 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(SIGN_IN_DOMAIN);
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 bebas login ke konsol DMS
SigninToken yang diperoleh hanya dapat digunakan sekali untuk membuat URL bebas login. Jika Anda perlu menggunakan SigninToken lagi, Anda harus mendapatkan SigninToken baru.
Contoh berikut menunjukkan kode Java contoh:
Permintaan contoh:
private static String getDmsLoginUrl(String pageUrl, String signInToken) throws URISyntaxException {
URIBuilder builder = new URIBuilder(SIGN_IN_DOMAIN);
builder.setParameter("Action", "Login");
// Tentukan URL login di situs web mandiri yang dikonfigurasi untuk mengembalikan kode status HTTP 302 untuk mengarahkan ke halaman lain.
builder.setParameter("LoginUrl", "https://signin.aliyun.com/login.htm");
// Halaman DMS yang akan diakses sebenarnya.
builder.setParameter("Destination", pageUrl);
builder.setParameter("SigninToken", signInToken);
HttpGet request = new HttpGet(builder.build());
return request.getURI().toString();
}Tanggapan contoh:
Kedaluwarsa: 2020-11-30T06:16:20Z
ID Access Key: STS.NT7L6Jp5Y8W9LNvGQku2x****
Rahasia Access Key: 4nU8F6rv8MCDR8tygMDnXvN9yCNBCVrxnqArj1n1****
Token Keamanan: CAIS/gF1q6Ft5B2yfSjIr5e****+nep4j5XSTmjHo1E+eb1Ujo7xijz2IH9IeXhpB****/43nWlU7PkYlrloRoReREvCKM1565kSqFn6O11Qf****+5qsoasPETOITyZtZagToeUZdfZfejXGDKgvyRvwLz****/Vli+S/OggoJmadJlNWvRL0AxZrFsKxBltdUROF****+pKWSKuGfLC1dysQcO4gEWq4bHm5zAs0OH1QOhlrVP+N+qfqLJNZc8YM1NNP6ux/Fze6b71ypd1gNH7q8ejtYfpmua74jBXgUAuU3faraOrYd1SwZ9Z7knH****/n6ifBjpvw9Hlk0R9OcVhqAAXpZx****+STGa8vctRwyTWdMM5LByes3cr1D46jaj0****/lTMkoXCwjMlCs7sc+DA9xjJCcl57eKC7A3ThnJAWQyyeKZfIGgeHN7yUS5ND8r7TBn6bMUqwvfVX****/cbkzBX6iV6jrataHZPZdtQYHH6GgvQ5XZUZJjoD****
SigninToken Anda adalah: 06ec409b9d8c48f6ac5dcd18a0513ee1dhUkhcRn5CMsDqffC4wxsuFt9xjYtYePmYTHEWSMVKLFyXXnSq3IUbon1v46wCmKPwrAejDvw2i8rilolPSuxpKRDxz****
PageUrl Anda adalah : 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 bebas login (PageUrl):
http://signin.aliyun.com/federation?Action=Login
&LoginUrl=<URL login di situs web mandiri yang dikonfigurasi untuk mengembalikan kode status HTTP 302 untuk mengarahkan ke halaman lain>
&Destination=<Halaman DMS yang akan diakses sebenarnya>
&SigninToken=<SigninToken yang diperoleh>Halaman DMS yang ditentukan oleh Destination terkait dengan parameter TicketType.
Jika parameter TicketType disetel ke normal, nama domain DMS yang sesuai adalah
http://dms.aliyun.com.Jika parameter TicketType disetel ke mini, umumnya berlaku untuk operator jaringan virtual BID. Nama domain berikut digunakan:
http://dms-jst4service.aliyun.comhttp://dms-Itwo4service.aliyun.com
Apa yang harus dilakukan selanjutnya
Gunakan URL bebas login (PageUrl) yang dibuat untuk mengakses konsol DMS.