插件下载了解更多
Alibaba Cloud Developer ToolkitbetaAlibaba Cloud OpenAPI
Alibaba Cloud Developer Toolkit is a collection of extensions that can help access Alibaba Cloud services in Visual Studio Code.
安装插件之前,确保已安装 JetBrains IDE安装插件之前,确保已安装 JetBrains IDE
Alibaba Cloud Developer ToolkitbetaAlibaba Cloud OpenAPI
The Alibaba Cloud Developer Toolkit for JetBrains makes it easier to access Alibaba Cloud services.
接口说明
背景信息
开源客户端访问云消息队列 RabbitMQ 版服务端时,需要传入用户名和密码进行权限认证,认证通过才允许访问服务端。 云消息队列 RabbitMQ 版支持通过阿里云访问控制(RAM)的 AccessKey 和 AccessKey Secret 生成用户名和密码。
注意事项
- 创建静态用户名密码所属的实例需处于服务中状态。
- 一个实例下的 AccessKey 和静态用户名密码一一对应,即一个实例下的一个 AccessKey 只能创建一个静态用户名密码。
- 如果需要更新静态用户名密码,您可以删除该静态用户名密码后重新创建。
用户名计算示例代码
请求参数中的 userName 的参数值,需要由实例 ID 和 AccessKey ID 构造字符串并进行 Base64 编码得出。具体的计算方法如下:
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
public class Base64Utils {
public static final Charset UTF8 = StandardCharsets.UTF_8;
/**
* 解码 base64 字符串
*
* @param str
* @return
*/
public static String decode(String str) {
return new String(Base64.getDecoder().decode(str.getBytes(UTF8)), UTF8);
}
public static String encode(String bytes) {
return new String(Base64.getEncoder().encode(bytes.getBytes(UTF8)), UTF8);
}
public static void main(String[] args) {
//使用您的实例 ID 以及购买该实例的账号 AK,组成字符串。
String str = "2:${instanceId}:${ak}";
//生成 API 使用的 userName。
String userName = encode(str);
System.out.println("userName=" + userName);
String decodeStr = decode(userName);
System.out.println("originStr=" + decodeStr);
}
}
签名算法示例代码
请求参数中 signature 和 secretSign 的参数值,需要由指定的静态用户名的创建时间戳和 AccessKey Secret 进行加密算法计算得出。具体的算法和示例代码如下:
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
public class SignatureUtils {
public static String hamcsha1(byte[] data, byte[] key) throws NoSuchAlgorithmException, InvalidKeyException {
SecretKeySpec signingKey = new SecretKeySpec(key, "HmacSHA1");
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(signingKey);
return byte2hex(mac.doFinal(data));
}
public static String byte2hex(byte[] b) {
StringBuilder hs = new StringBuilder();
String stmp;
for (int n = 0; b != null && n < b.length; n++) {
stmp = Integer.toHexString(b[n] & 0XFF);
if (stmp.length() == 1) {
hs.append('0');
}
hs.append(stmp);
}
return hs.toString().toUpperCase();
}
public static void main(String[] args) throws InvalidKeyException, NoSuchAlgorithmException {
//createTimestamp 即是 API 的 createTimestamp 参数。
String createTimestamp = String.valueOf(System.currentTimeMillis());
System.out.println("timestamp:" + createTimestamp);
//您账号的 sk。
String sk = "${sk}";
//生成 API 使用的 SecretSign。
String SecretSign = hamcsha1(sk.getBytes(), createTimestamp.getBytes());
System.out.println("SecretSign:" + SecretSign);
//生成 API 使用的 signature。
String signature = hamcsha1(createTimestamp.getBytes(), sk.getBytes());
System.out.println("signature:" + signature);
}
}
流控信息
请求速率为100/1(s)。
请求参数
字段名称 | 字段详情 |
---|---|
instanceIdstring | 消息队列 RabbitMQ 版实例的 ID,表示您需要为哪个实例创建静态用户名密码。 示例值:amqp-cn-********* |
accountAccessKeystring | 您的阿里云账号或 RAM 用户的 AccessKey ID。获取方式,请参见创建 AccessKey。展开详情 示例值:yourAccessKeyID |
userNamestring | 待创建的静态用户名。展开详情 示例值:Mjo**************** |
signaturestring | 签名,系统将根据请求参数中的签名、AccessKey Secret 签名和用户名计算出静态用户密码。展开详情 示例值:22c2d7d1769cb53c5a6d9213248e2de524****** |
createTimestampinteger<int64> | 指定该用户名密码创建的时间戳。单位:毫秒。展开详情 注意
该字段类型为 Long,在序列化/反序列化的过程中可能导致精度丢失,请注意数值不得大于 9007199254740991。 示例值:1671175303522 |
secretSignstring | AccessKey Secret 签名,系统将根据请求参数中的签名、AccessKey Secret 签名和用户名计算出静态用户密码。展开详情 示例值:4c1a6367ce4c4255e9617326f9133ac635****** |
返回参数
字段名称 | 字段详情 |
---|---|
RequestIdstring | 请求 ID。 示例值:FEBA5E0C-50D0-4FA6-A794-4901E5465***枚举值: |
Codeinteger<int32> | 返回码。返回 200 代表成功。 示例值:200 |
Messagestring | 返回信息。 示例值:operation success |
Successboolean | 执行结果是否成功。 示例值:true |
Dataobject | 返回数据。 |
返回示例
变更历史
暂无变更历史