liujs 3 vuotta sitten
vanhempi
commit
8a55482ac5

BIN
lib/json-lib-2.4-jdk15.jar


+ 6 - 0
pom.xml

@@ -129,6 +129,12 @@
             <artifactId>aliyun-java-sdk-core</artifactId>
             <version>4.1.0</version>
         </dependency>
+        <!--阿里云Java STS SDK-->
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>aliyun-java-sdk-sts</artifactId>
+            <version>3.0.0</version>
+        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-amqp</artifactId>

+ 28 - 0
src/main/java/com/bs/logisticslnfoapi/bean/alibb/OssTokenBean.java

@@ -0,0 +1,28 @@
+package com.bs.logisticslnfoapi.bean.alibb;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+/**
+ * @author LiuJS
+ * @Time 2021/6/8 16:04
+ * @Desc
+ * @Version 1.0
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class OssTokenBean {
+    private String statusCode;
+    private String accessKeyId;
+    private String accessKeySecret;
+    private String securityToken;
+    private String expiration;
+    private String ErrorCode;
+    private String ErrorMessage;
+}

+ 21 - 0
src/main/java/com/bs/logisticslnfoapi/bean/alibb/OssTokenRequestBean.java

@@ -0,0 +1,21 @@
+package com.bs.logisticslnfoapi.bean.alibb;
+
+import com.aliyuncs.http.ProtocolType;
+import lombok.Data;
+
+/**
+ * @author LiuJS
+ * @Time 2021/6/9 15:49
+ * @Desc
+ * @Version 1.0
+ */
+@Data
+public class OssTokenRequestBean {
+    private String accessKeyId;
+    private String accessKeySecret;
+    private String roleArn;
+    private Long durationSeconds;
+    private String policy;
+    private String roleSessionName;
+    private ProtocolType protocolType;
+}

+ 71 - 5
src/main/java/com/bs/logisticslnfoapi/controller/AlibbController.java

@@ -1,23 +1,28 @@
 package com.bs.logisticslnfoapi.controller;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.aliyuncs.CommonRequest;
 import com.aliyuncs.CommonResponse;
 import com.aliyuncs.DefaultAcsClient;
 import com.aliyuncs.IAcsClient;
+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;
 import com.bs.logisticslnfoapi.bean.ApiLog;
 import com.bs.logisticslnfoapi.bean.alibb.AlibbQuerySmsDetailsRequest;
 import com.bs.logisticslnfoapi.bean.alibb.AlibbSendSmsRequest;
+import com.bs.logisticslnfoapi.bean.alibb.OssTokenBean;
+import com.bs.logisticslnfoapi.bean.alibb.OssTokenRequestBean;
 import com.bs.logisticslnfoapi.service.log.LogService;
 import com.bs.logisticslnfoapi.util.Enum.PlatformEnum;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.CrossOrigin;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.Date;
 
@@ -35,6 +40,10 @@ import java.util.Date;
 @RequestMapping(value ="/logistics/alibb")
 public class AlibbController {
 
+    // 目前只有"cn-hangzhou"这个region可用, 不要使用填写其他region的值
+    public static final String REGION_CN_HANGZHOU = "cn-hangzhou";
+    public static final String STS_API_VERSION = "2015-04-01";
+
     @Autowired
     private LogService logService;
 
@@ -66,6 +75,7 @@ public class AlibbController {
         addLog(startTime, JSON.toJSONString(request), response,request.getUrl());
         return response.getData();
     }
+
     /**
      * 阿里巴巴短信结果查询
      * @param request
@@ -101,9 +111,65 @@ public class AlibbController {
     }
 
     /**
+     * APP获取OSS临时token接口
+     * @return
+     * @throws Exception
+     */
+    @PostMapping("/ossSecurityToken")
+    public Object ossSecurityToken(@RequestBody OssTokenRequestBean ossTokenRequestBean) throws Exception{
+        try {
+            ossTokenRequestBean.setProtocolType(ProtocolType.HTTPS);
+            final AssumeRoleResponse stsResponse = assumeRole(ossTokenRequestBean.getAccessKeyId(), ossTokenRequestBean.getAccessKeySecret(), ossTokenRequestBean.getRoleArn(), ossTokenRequestBean.getRoleSessionName(),
+                    ossTokenRequestBean.getPolicy(), ossTokenRequestBean.getProtocolType(), ossTokenRequestBean.getDurationSeconds());
+            log.info("【Alibb APP获取OSS临时token接口返回参数】:{}",JSONObject.toJSONString(stsResponse.getCredentials()));
+            return OssTokenBean.builder()
+                    .statusCode("200")
+                    .accessKeyId(stsResponse.getCredentials().getAccessKeyId())
+                    .accessKeySecret(stsResponse.getCredentials().getAccessKeySecret())
+                    .securityToken(stsResponse.getCredentials().getSecurityToken())
+                    .expiration(stsResponse.getCredentials().getExpiration())
+                    .build();
+        } catch (ClientException e) {
+            return OssTokenBean.builder()
+                    .statusCode("500")
+                    .ErrorCode(e.getErrCode())
+                    .ErrorMessage(e.getErrMsg())
+                    .build();
+        }
+    }
+
+    protected AssumeRoleResponse assumeRole(String accessKeyId, String accessKeySecret, String roleArn,
+                                            String roleSessionName, String policy, ProtocolType protocolType, long durationSeconds) throws ClientException
+    {
+        try {
+            // 创建一个 Aliyun Acs Client, 用于发起 OpenAPI 请求
+            IClientProfile profile = DefaultProfile.getProfile(REGION_CN_HANGZHOU, accessKeyId, accessKeySecret);
+            DefaultAcsClient client = new DefaultAcsClient(profile);
+
+            // 创建一个 AssumeRoleRequest 并设置请求参数
+            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);
+            request.setDurationSeconds(durationSeconds);
+
+            // 发起请求,并得到response
+            final AssumeRoleResponse response = client.getAcsResponse(request);
+
+            return response;
+        } catch (ClientException e) {
+            throw e;
+        }
+    }
+
+    /**
      * 阿里调用接口新增日志
      * @param startTime
-     * @param commonRequest
+     * @param request
      * @param response
      */
     private void addLog(long startTime, String request, CommonResponse response,String url) {

+ 1 - 1
src/main/resources/application.yml

@@ -2,4 +2,4 @@ server:
   port: 8089
 spring:
   profiles:
-    active: pro
+    active: dev