Les vidéos chiffrées dans MPS doivent être lues à l'aide d'un ID multimédia, ce qui nécessite un jeton Security Token Service (STS) pour le contrôle d'accès. Le jeton STS accorde un accès temporaire et limité sans exposer les identifiants de votre compte principal. Cette rubrique décrit comment demander un jeton STS à l'aide du SDK RAM STS (Java).
Prérequis
Avant de commencer, assurez-vous d'avoir :
Installé le SDK RAM STS. Pour les instructions de configuration, consultez Exemple Java. Pour les autres langages, consultez Aperçu du SDK STS.
Récupéré le
roleArndu rôle RAM que le jeton STS assumera. Pour obtenir l'ARN, connectez-vous à la console RAM, choisissez , cliquez sur le role cible et copiez la valeur du champ ARN.
Demander un jeton STS
Un jeton STS est un identifiant de courte durée. Lorsque votre application appelle assumeRole, elle reçoit une paire AccessKey temporaire et un jeton de sécurité qui expirent après une durée configurée. Cette approche évite d'intégrer des identifiants à long terme dans le code côté client.
-
Ajoutez la dépendance du SDK STS à votre fichier
pom.xml.<repositories> <repository> <id>sonatype-nexus-staging</id> <name>Sonatype Nexus Staging</name> <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <dependencies> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-sts</artifactId> <version>2.1.6</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>2.2.0</version> </dependency> </dependencies>RemarqueConsultez le dépôt Maven pour obtenir la dernière version de
aliyun-java-sdk-core. -
Appelez
assumeRolepour générer une paire AccessKey temporaire et un jeton de sécurité.Les principaux paramètres de la demande sont :
|
Paramètre
|
Description
|
Valeur d'exemple
| | --- | --- | --- | |
`roleArn`
|
Nom de ressource Alibaba Cloud (ARN) du rôle RAM à assumer
|
acs:ram::174*********11242:role/sts-role
| |
`DurationSeconds`
|
Période de validité du jeton en secondes. Plage valide : 900–3 600
|
`900`
| |
`RoleSessionName`
|
Libellé pour cette session, utilisé dans les journaux d'audit
|
`test-token`
|import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.http.MethodType; import com.aliyuncs.http.ProtocolType; import com.aliyuncs.sts.model.v20150401.AssumeRoleRequest; import com.aliyuncs.sts.model.v20150401.AssumeRoleResponse; /** * You can call this operation only as a RAM user. */ public class STSTokenDemo { public static void main(String[] args) throws Exception { // Initialize the client. DefaultAcsClient client = InitClient.initMpsClient(); // The roleArn must be obtained from the RAM console. String roleArn = "acs:ram::174*********11242:role/sts-role"; try { AssumeRoleResponse response = assumeRole(client, roleArn); System.out.println("Expiration: " + response.getCredentials().getExpiration()); System.out.println("Access Key Id: " + response.getCredentials().getAccessKeyId()); System.out.println("Access Key Secret: " + response.getCredentials().getAccessKeySecret()); System.out.println("Security Token: " + response.getCredentials().getSecurityToken()); System.out.println("RequestId: " + response.getRequestId()); } catch (ClientException e) { System.out.println("Failed to get a token."); System.out.println("Error code: " + e.getErrCode()); System.out.println("Error message: " + e.getErrMsg()); } } /** Generates a temporary AccessKey pair and a security token. */ private static AssumeRoleResponse assumeRole( DefaultAcsClient client, String roleArn) throws ClientException { final AssumeRoleRequest request = new AssumeRoleRequest(); request.setVersion("2015-04-01"); request.setMethod(MethodType.POST); request.setProtocol(ProtocolType.HTTPS); request.setDurationSeconds(900L); request.setRoleArn(roleArn); request.setRoleSessionName("test-token"); return client.getAcsResponse(request); } } -
Définissez la période de validité du jeton.
Définissez
DurationSecondssur une valeur comprise entre 900 et 3 600 secondes. Choisissez une période suffisamment longue pour couvrir la durée de lecture prévue. Si le jeton expire pendant la lecture, la vidéo s'arrête et l'utilisateur doit obtenir un nouveau jeton. Pour les vidéos longues ou les sessions où les utilisateurs peuvent mettre en pause et reprendre, utilisez une période de validité plus longue.Vous pouvez réutiliser un jeton jusqu'à son expiration. Utilisez l'assistant suivant pour vérifier l'expiration du jeton avant d'effectuer une nouvelle demande :
private static boolean isTimeExpire(String expiration) { Date nowDate = new Date(); Date expireDate = javax.xml.bind.DatatypeConverter.parseDateTime(expiration).getTime(); if (expireDate.getTime() <= nowDate.getTime()) { return true; } else { return false; } }