예제 #1
0
 /**
  * 认证字符串
  *
  * @param publicKey 公钥
  * @param signature 签名
  * @return 认证字符串
  */
 public static String authorization(String publicKey, String signature) {
   return StrUtil.builder()
       .append("UCloud ")
       .append(publicKey)
       .append(":")
       .append(signature)
       .toString();
 }
예제 #2
0
  /**
   * 用于签名的标准Ucloud头信息字符串,尾部带换行符
   *
   * @param request Http请求
   * @return 用于签名的Ucloud头信息字符串
   */
  public static String canonicalizedUcloudHeaders(HttpRequest request) {
    Param param = Param.create();

    Map<String, String[]> headers = request.headers();
    String[] value;
    for (Entry<String, String[]> headerEntry : headers.entrySet()) {
      String name = headerEntry.getKey().toLowerCase();
      if (name.startsWith("x-ucloud-")) {
        value = headerEntry.getValue();
        if (value != null && value.length > 0) {
          param.set(name, value[0]);
        }
      }
    }

    StringBuilder builder = StrUtil.builder();
    for (Entry<String, Object> entry : param.entrySet()) {
      builder.append(entry.getKey()).append(":").append(entry.getValue()).append("\n");
    }

    return builder.toString();
  }
예제 #3
0
  /**
   * 用于签名的字符串
   *
   * @param bucket Bucket
   * @param key 文件key
   * @param contentMd5 内容的md5值
   * @param date 日期
   * @param request 请求对象
   * @return 用于签名的字符串
   */
  public static String strToSign(
      String bucket, String key, String contentMd5, String date, HttpRequest request) {
    String contentType = request.contentType();
    if (StrUtil.isBlank(contentType)) {
      contentType = "text/plain";
      request.contentType(contentType);
      log.warn("Content-Type header is empty, use default Content-Type: {}", contentType);
    }

    return StrUtil.builder()
        .append(request.method())
        .append("\n")
        .append(StrUtil.nullToEmpty(contentMd5))
        .append("\n")
        .append(contentType)
        .append("\n")
        .append(StrUtil.nullToEmpty(date))
        .append("\n")
        .append(canonicalizedUcloudHeaders(request))
        // canonicalizedUcloudHeaders尾部带一个换行符
        .append(canonicalizedResource(bucket, key))
        .toString();
  }
예제 #4
0
 /**
  * 用于签名的标准资源字符串
  *
  * @param bucket Bucket
  * @param key 文件的key(在Ufile中的文件名)
  * @return 标准资源字符串
  */
 public static String canonicalizedResource(String bucket, String key) {
   return StrUtil.builder().append("/").append(bucket).append("/").append(key).toString();
 }