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
-
Buat RAM role untuk mengakses DMS dan berikan izin yang sesuai. Selanjutnya, buat RAM user dan berikan izin
AliyunSTSAssumeRoleAccesskepada pengguna tersebut. Untuk informasi selengkapnya, lihat Prasyarat. -
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. -
Dapatkan
SigninToken, yang diperlukan untuk membuat URL akses tanpa logon. Untuk informasi selengkapnya, lihat Langkah 2: Dapatkan SigninToken. -
Buat URL akses tanpa logon. Untuk informasi selengkapnya, lihat Langkah 3: Buat URL akses tanpa logon.
Prasyarat
Jika Anda telah memenuhi semua prasyarat berikut, Anda dapat melanjutkan ke Langkah 1.
-
Buat RAM role untuk mengakses DMS. Untuk informasi selengkapnya, lihat Buat RAM role untuk akun Alibaba Cloud tepercaya.
-
Berikan izin kepada RAM role tersebut. Untuk informasi selengkapnya, lihat Berikan izin kepada RAM role.
-
Buat RAM user. Untuk informasi selengkapnya, lihat Buat RAM user.
-
Berikan izin
AliyunSTSAssumeRoleAccesskepada RAM user tersebut. Untuk informasi selengkapnya, lihat Berikan izin kepada RAM user.
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
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>
URL halaman DMS untuk parameter Destination bergantung pada nilai TicketType.
-
Jika nilainya
normal, domain DMS yang sesuai adalahhttp://dms.aliyun.com. -
Jika nilainya
mini, biasanya digunakan untuk operator virtual BID. Domain yang sesuai adalahhttp://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.