当前位置: 首页 > 知识库问答 >
问题:

获取AWS IAM用户的标签详细信息

端木震博
2023-03-14

Amazon标识管理iam=Amazon标识管理客户端Builder.standard()。US_EAST_1)。

有人能告诉我怎么做吗?

我试图在下面的程序中列出一个用户的标签,但我得到了下面的错误:我们计算的请求签名与您提供的签名不匹配。检查您的AWS秘密访问密钥和签名方法。有关详细信息,请参阅维修文档。

公共类ListUserTags{

public static void main(String args[]) {
    String kSecret = "adfdskjfdjssfjdjfdsdumykeysecret3eiiid";
    String dateStamp = getConvertedDateString("yyyyMMdd", new Date());
    System.out.println("dateStamp:" + dateStamp);
    String regionName = "us-east-1";
    String serviceName = "iam";

    String xmzDate = getConvertedDateString("yyyyMMdd'T'HHmmss'Z'", new Date());;
    System.out.println("date:" + xmzDate);

    String signature = getSignatureKey(kSecret, dateStamp, regionName, serviceName); //signature


    System.out.println("signature:" + signature);


    OkHttpClient client = new OkHttpClient().clone();
    //MediaType mediaType = MediaType.parse("text/plain");

    Request request = new Request.Builder()
        .url("https://iam.amazonaws.com/?Action=ListUserTags&Version=2010-05-08&UserName=SVC_ServiceAccount04")
        .method("GET", null)
        .addHeader("host", "iam.amazonaws.com")
        .addHeader("X-Amz-Date", xmzDate)
        .addHeader("Authorization", "AWS4-HMAC-SHA256 Credential=ABC787dsfsdDummyAccessKey/" + dateStamp + "/us-east-1/iam/aws4_request, SignedHeaders=host;x-amz-date, Signature=" + signature)


    System.out.println("req:" + request.headers().toString());
    Response response = client.newCall(request).execute();

}

static byte[] HmacSHA256(String data, byte[] key) throws Exception {
    String algorithm = "HmacSHA256";
    Mac mac = Mac.getInstance(algorithm);
    mac.init(new SecretKeySpec(key, algorithm));
    return mac.doFinal(data.getBytes("UTF-8"));
}



static String getSignatureKey(String key, String dateStamp, String regionName, String serviceName) throws Exception {
    byte[] kSecret = ("AWS4" + key).getBytes("UTF-8");
    byte[] kDate = HmacSHA256(dateStamp, kSecret);
    byte[] kRegion = HmacSHA256(regionName, kDate);
    byte[] kService = HmacSHA256(serviceName, kRegion);
    byte[] kSigning = HmacSHA256("aws4_request", kService);
    return Hex.encodeHexString(kSigning);

}

public static String getConvertedDateString(String format, Date date) {

    return new SimpleDateFormat(format).format(date);

}

}

共有2个答案

樊宏邈
2023-03-14

你试过ListUserTags了吗。似乎就是你要找的

张腾
2023-03-14

获取用户的标签可以按以下方式完成:

public static void main(String[] args) {

    // Please consider using aws configure and avoid hard-coding credentials
    BasicAWSCredentials awsCredentials = new BasicAWSCredentials("access_key_id", "secret_key_id");

    AmazonIdentityManagement iam = AmazonIdentityManagementClientBuilder.standard()
            .withCredentials(new AWSStaticCredentialsProvider(awsCredentials))
            .build();

    // Create a request with the username for which we want to query the tags
    ListUserTagsRequest request = new ListUserTagsRequest().withUserName("username");

    ListUserTagsResult result;
    List<Tag> tags = new ArrayList<>();
    do {
        result = iam.listUserTags(request);
        tags.addAll(result.getTags());
        request.setMarker(result.getMarker());
    } while (result.isTruncated());

    // Do something with the tags
    System.out.println(tags);
}

我认为代码是不言自明的。关于AWS IAM Java sdk的更深入的文档可以在这里找到。

 类似资料:
  • 以下是我希望通过REST API从Keycloak检索的参数: 领域名称 领域ID 用户名 电子邮件 名字 已启用用户 是否有人使用REST API从keycloak获取这些细节,请分享REST API URL细节。

  • 我是Spring MVC和Spring Security的新手。我已经使用Spring Security和MVC执行了登录和注册功能。我找不到任何会话管理的方法。 我想访问所有页面上的一些用户信息,如(电子邮件,姓名,id,角色等)。我想将这些保存到会话对象中,这样我就可以在任何页面上获取这些内容。 我在Spring的会议得到以下方式 但是从这个返回的对象中,我只能得到用户名和密码的详细信息。 但

  • 接口说明 获取角色详细信息 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 GET /permissions/api/team/role/v1.0.0/info 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 token string header 是 当前登录用户的TOKEN roleId string query 是

  • 接口说明 获取素材详细信息 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 GET /wish3dearth/api/material/v1.0.0/getMaterialDetail 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 serviceDomain string query 否 serviceDomain t

  • 接口说明 获取角色详细信息 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 如开启https功能,请求地址的协议应改为https,如:https://www.example.com/wish3dearth/api/access/v1.0.0/getLicenseInfo API地址 GET /permissions/api/team/role/v1.0.