文档

CreateAccount

更新时间:
一键部署

调用CreateAccount创建静态用户名密码。

背景信息

开源客户端访问云消息队列 RabbitMQ 版服务端时,需要传入用户名和密码进行权限认证,认证通过才允许访问服务端。

云消息队列 RabbitMQ 版支持通过阿里云访问控制(RAM)的AccessKey和AccessKey Secret生成用户名和密码。

注意事项

  • 创建静态用户名密码所属的实例需处于服务中状态。
  • 一个实例下的AccessKey和静态用户名密码一一对应,即一个实例下的一个AccessKey只能创建一个静态用户名密码。
  • 如果需要更新静态用户名密码,您可以删除该静态用户名密码后重新创建。

用户名计算示例代码

请求参数中的userName的参数值,需要由实例ID和AccessKey ID构造字符串并进行Base64编码得出。具体的计算方法如下:

    public class Base64Utils {
         public static final Charset UTF8 = Charset.forName("UTF-8");
         /**
         *解码base64字符串
         * @param str
         * @return
         */
         public static String decode(String str) {
              return new String(Base64.getDecoder().decode(str.getBytes(UTF8)), UTF8);
         }
         /**
         *编码为base64字符串
         * @param bytes = "2" + ":" + "{instanceId}" + ":" + "{ak}"
         * @return
         */
         public static String encode(String bytes) {
              return new String(Base64.getEncoder().encode(bytes.getBytes(UTF8)), UTF8);
          }
         public static void main(String[] args) {
              String example = "this is a example";
              System.out.println(encode(example));
              System.out.println(decode(encode(example)));
        }
    }

签名算法示例代码

请求参数中signature和secretSign的参数值,需要由指定的静态用户名的创建时间戳和AccessKey ID进行加密算法计算得出。具体的算法和示例代码如下:

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();
    }
     // value1是用户名创建时间戳、value2是AccessKey ID,这样计算出来的是SecretSign,反之则是signature。
     public static void main(String[] args) throws InvalidKeyException, NoSuchAlgorithmException {
         String value1 = "XXX";
         String value2 = "XXX";
         System.out.println(hamcsha1(value1.getBytes(), value2.getBytes()));
     }

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

请求参数

名称

类型

是否必选

示例值

描述

Action String CreateAccount

系统规定参数。取值:CreateAccount

instanceId String amqp-cn-*********

消息队列RabbitMQ版实例的ID,表示您需要为哪个实例创建静态用户名密码。

accountAccessKey String LTAI5t8be*******tEJ6vfo

您的阿里云账号或RAM用户的AccessKey ID。获取方式,请参见创建AccessKey

说明 如果您使用RAM用户的AccessKey创建的静态用户名密码接入消息队列RabbitMQ版并收发消息,请确保该RAM用户已被授予收发消息权限。更多信息,请参见RAM权限策略
userName String LTAI5***********eRZtEJ6vfo

待创建的静态用户名。

该参数值由实例ID和AccessKey ID构造的字符串经过Base64编码得出,具体计算方法,请参见本文中的用户名计算示例代码

signature String 22c2d7d1769cb53c5a6d9213248e2de524******

签名,系统将根据请求参数中的签名、AccessKey Secret签名和用户名计算出静态用户密码。

签名由指定的用户名创建时间戳和AccessKey ID进行HmacSHA1加密算法计算得出。具体计算方法,请参见本文中的签名算法示例代码

createTimestamp Long 1671175303522

指定该用户名密码创建的时间戳。单位:毫秒。

说明 该时间戳用于计算静态用户密码,由您自定义设置。不是系统生成用户名密码时的时间戳。
secretSign String 4c1a6367ce4c4255e9617326f9133ac635******

AccessKey Secret签名,系统将根据请求参数中的签名、AccessKey Secret签名和用户名计算出静态用户密码。

AccessKey Secret签名由指定的用户名创建时间戳和AccessKey ID进行HmacSHA1加密算法计算得出。具体计算方法,请参见本文中的签名算法示例代码

返回数据

名称

类型

示例值

描述

RequestId String FEBA5E0C-50D0-4FA6-A794-4901E5465***

请求ID。

Code Integer 200

返回码。返回200代表成功。

Message String operation success

返回信息。

Success Boolean true

执行结果是否成功。

Data Object

返回数据。

AccessKey String LTAI5***********eRZtEJ6vfo

创建该用户名密码所使用的AccessKey ID。

Password String OUYwQzM2QjZBRkUxNDRFM***************MzZCNzdDQzoxNjcxNDMwMzkyODI1

创建的静态用户密码。

CreateTimeStamp Long 1671175303522

创建用户名密码的时间戳。单位:毫秒。

InstanceId String amqp-cn-*********

消息队列RabbitMQ版实例的ID。

MasterUId Long 1565*******973901

创建静态用户名密码的AccessKey所属的阿里云账号或RAM用户的账号ID。

UserName String MjphbXFwLWNuLXVxbTJ6cjc2djAwMzpMVEFJNX*******ZNMWVSWnRFSjZ2Zm8=

创建的静态用户名。

示例

请求示例

http(s)://[Endpoint]/?Action=CreateAccount
&instanceId=amqp-cn-*********
&accountAccessKey=LTAI5t8be*******tEJ6vfo
&userName=LTAI5***********eRZtEJ6vfo
&signature=22c2d7d1769cb53c5a6d9213248e2de524******
&createTimestamp=1671175303522
&secretSign=4c1a6367ce4c4255e9617326f9133ac635******
&公共请求参数

正常返回示例

XML格式

HTTP/1.1 200 OK
Content-Type:application/xml

<CreateAccountResponse>
    <RequestId>FEBA5E0C-50D0-4FA6-A794-4901E5465***</RequestId>
    <Code>200</Code>
    <Message>operation success</Message>
    <Success>true</Success>
    <Data>
        <AccessKey>LTAI5***********eRZtEJ6vfo</AccessKey>
        <Password>OUYwQzM2QjZBRkUxNDRFM***************MzZCNzdDQzoxNjcxNDMwMzkyODI1</Password>
        <CreateTimeStamp>1671175303522</CreateTimeStamp>
        <InstanceId>amqp-cn-*********</InstanceId>
        <UserName>MjphbXFwLWNuLXVxbTJ6cjc2djAwMzpMVEFJNX*******ZNMWVSWnRFSjZ2Zm8=</UserName>
    </Data>
</CreateAccountResponse>

JSON格式

HTTP/1.1 200 OK
Content-Type:application/json

{
  "RequestId" : "FEBA5E0C-50D0-4FA6-A794-4901E5465***",
  "Code" : 200,
  "Message" : "operation success",
  "Success" : true,
  "Data" : {
    "AccessKey" : "LTAI5***********eRZtEJ6vfo",
    "Password" : "OUYwQzM2QjZBRkUxNDRFM***************MzZCNzdDQzoxNjcxNDMwMzkyODI1",
    "CreateTimeStamp" : 1671175303522,
    "InstanceId" : "amqp-cn-*********",
    "UserName" : "MjphbXFwLWNuLXVxbTJ6cjc2djAwMzpMVEFJNX*******ZNMWVSWnRFSjZ2Zm8="
  }
}

错误码

访问错误中心查看更多错误码。

控制台操作

除了调用CreateAccount接口,您还可以通过云消息队列 RabbitMQ 版控制台创建静态用户名密码。具体操作,请参见静态用户名密码管理

  • 本页导读 (1)
文档反馈