开发者社区> 问答> 正文

阿里云RAM产品实在是太烂,根本就不知道该如何用

写了那么多,看了好多天,实在看不懂到底在讲些什么,根本就没讲到重点,demo代码也写得太烂:


关于RAM的STS,代码不断变化,版本号同样是2015-04-01的调用代码,结果aliyun-java-sdk-sts-2.1.0和aliyun-java-sdk-sts-2.1.6的代码根本就没有任何联系,下载下来的PDF说明也是一样。


以下是aliyun_java_sdk_sts_20150825的demo代码,一点说明都没有,这就是demo?使劲地去翻看你们的文档,一直就找不到roleSessionName到底是什么鬼,可能实在是在下太过蠢笨了吧,这么高深的代码一点都看不懂。另外,一篇求助文章,发表了好几天了,结果回复一直为0(除了我自己)!收费倒是收的很勤,看来大概是店大要欺客了吧~

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.http.ProtocolType;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import com.aliyuncs.sts.model.v20150401.AssumeRoleRequest;
import com.aliyuncs.sts.model.v20150401.AssumeRoleResponse;


public class StsServiceSample {
  public static final String REGION_CN_HANGZHOU = "cn-hangzhou";
  public static final String STS_API_VERSION = "2015-04-01";
  public static final String STS_VERSION = "1";


  static AssumeRoleResponse assumeRole(String accessKeyId, String accessKeySecret,
                                       String roleArn, String roleSessionName, String policy, ProtocolType protocolType) throws ClientException {
    try {
      IClientProfile profile = DefaultProfile.getProfile(REGION_CN_HANGZHOU, accessKeyId, accessKeySecret);
      DefaultAcsClient client = new DefaultAcsClient(profile);


      final AssumeRoleRequest request = new AssumeRoleRequest();
      request.setVersion(STS_API_VERSION);
      request.setMethod(MethodType.POST);
      request.setProtocol(protocolType);


      request.setRoleArn(roleArn);
      request.setRoleSessionName(roleSessionName);
      request.setPolicy(policy);


      final AssumeRoleResponse response = client.getAcsResponse(request);


      return response;
    } catch (ClientException e) {
      throw e;
    }
  }
  public static void main(String[] args) {
    String accessKeyId = "o************F";
    String accessKeySecret = "y*******************U";
    String roleArn = "acs:ram::145883****900618:role/ossadminrole";
    String roleSessionName = "alice";
    String policy = "{\n" +
            "    \"Version\": \"1\", \n" +
            "    \"Statement\": [\n" +
            "        {\n" +
            "            \"Action\": [\n" +
            "                \"oss:GetBucket\", \n" +
            "                \"oss:GetObject\" \n" +
            "            ], \n" +
            "            \"Resource\": [\n" +
            "                \"acs:oss:*:177530****529849:mybucket\", \n" +
            "                \"acs:oss:*:177530****529849:mybucket/*\" \n" +
            "            ], \n" +
            "            \"Effect\": \"Allow\"\n" +
            "        }\n" +
            "    ]\n" +
            "}";
    ProtocolType protocolType = ProtocolType.HTTPS;


    try {
      final AssumeRoleResponse response = assumeRole(accessKeyId, accessKeySecret,
              roleArn, roleSessionName, policy, protocolType);


      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());
    } catch (ClientException e) {
      System.out.println("Failed to get a federation token.");
      System.out.println("Error code: " + e.getErrCode());
      System.out.println("Error message: " + e.getErrMsg());
    }


  }
}

展开
收起
扛着单车 2015-08-27 16:45:22 21764 0
13 条回答
写回答
取消 提交回答
  • 回 17楼swink的帖子
    是否在assume role时传入的policy参数? 这样拿到的token就是role本身的权限与 token policy权限的交集
    2018-10-01 18:40:46
    赞同 展开评论 打赏
  • Re阿里云RAM产品实在是太烂,根本就不知道该如何用
    我也想说,这sts权限都给足了,上传视频时还说我 User not authorized to operate on the specified resource. 权限不足?
    2018-07-11 11:35:31
    赞同 展开评论 打赏
  • Re阿里云RAM产品实在是太烂,根本就不知道该如何用
    我也来吐槽几句,新给的sdk居然版本不兼容64位,直到我剔除来,给了我的测试结果,他们才说这个问题是存在。其他的不想吐槽了,注释是全篇没有,还能说啥!
    2016-03-03 17:15:23
    赞同 展开评论 打赏
  • Re阿里云RAM产品实在是太烂,根本就不知道该如何用
    我都是看着sdk百度了半天才找到url签证怎么获取。现在又卡在 IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", "", "");这句代码从哪里来的了。下载jar包里面没有
    2016-02-18 17:43:08
    赞同 展开评论 打赏
  • Re阿里云RAM产品实在是太烂,根本就不知道该如何用
    研究了两天,不得不去看java的sdk源码研究……文档简陋到家了,version感觉是个废值,policy本来可以封装的,不给封装,给的过期时间一点都不人性化,为了保证sts与ram的独立性,导致在业务间的授权很麻烦,做法太粗糙,还有就是看源码里居然还有用subString这种方法去处理字符串?好吧……我不去在意这些细节……
    2016-01-27 13:17:43
    赞同 展开评论 打赏
  • 回 12楼(今天联不爽) 的帖子
      
    2015-11-17 19:31:04
    赞同 展开评论 打赏
  • 我要学会后端开发
    Re阿里云RAM产品实在是太烂,根本就不知道该如何用
    我也来了   我真的是靠猜  每个数据都不知道怎么填写  文档描述不全面  
    2015-11-10 11:42:48
    赞同 展开评论 打赏
  • a portfolio of wine
    推荐看看关于STS使用场景的技术文章:STS使用场景(1) —— 授权您的客户端直接访问云存储
    http://bbs.aliyun.com/read/258090.html
    文章面向小白用户,教你一步一步如何使用STS

    2015-09-19 16:54:55
    赞同 展开评论 打赏
  • Re阿里云RAM产品实在是太烂,根本就不知道该如何用
    我也是没怎么搞懂,看了两天没搞出来,希望能有个详尽的文档!楼主StsServiceSample例子目前有没有跑通?还有一点我弄不明白的是,既然在 RAM 控制台可以指定用户或角色的授权,为什么这个例子里还要写 policy 这个属性?
    ----------------------------------------------------------------------------
    我的问题解决了,使用 STS 的 sdk 需要对对应RAM用户加AliyunSTSAssumeRoleAccess策略。貌似没什么地方提过,要靠自己观察...
    2015-09-17 11:35:29
    赞同 展开评论 打赏
  • 我是不会用 哎
    2015-09-06 21:18:55
    赞同 展开评论 打赏
  • Re阿里云RAM产品实在是太烂,根本就不知道该如何用
    同意, 开发基本靠猜! 各个链接, 解释混乱!
    2015-09-05 17:07:27
    赞同 展开评论 打赏
  • 回2楼助云科技的帖子
    另外,能否提供RAM使用的Java签名算法,我发现我用Java代码生成的签名数据和你们的不一致,如果没有相关代码,就会一直卡在这块,没法往下开发。

    -------------------------

    Re阿里云RAM产品实在是太烂,根本就不知道该如何用
    我只能说这些文档给我的感觉是:开发基本靠猜~
    2015-08-28 11:47:59
    赞同 展开评论 打赏
  • Re阿里云RAM产品实在是太烂,根本就不知道该如何用
    ram关于Role(角色)的使用有手册:
    “docs.aliyun.com/#/pub/ram/ram-user-guide/role&user-role”


    sts代码中使用的接口可以参考API手册:
    “docs.aliyun.com/#/pub/ram/sts-api-reference/actions&assume_role”


    我们产品原型的代码都用上了,希望能帮上你的忙。。


    另外, 阿云的产品手册变化快, 我么每次都是看网页, pdf 过期太快了。

    2015-08-28 10:15:34
    赞同 展开评论 打赏
滑动查看更多
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
如何高效的制作主机次时代游戏——高效游戏制作流程 立即下载
《网站性能与体验优化实践指北》 立即下载
长安十二时辰背后的技术秘籍 立即下载