云服务器内容精选

  • aksk鉴权 在请求接口时,通过accessKeyId和accessKeySecret对请求进行签名,实现对用户身份的验证。其中accessKeyId是访问密钥ID,accessKeySecret是密钥。使用accessKeyId和accessKeySecret进行签名,在请求时将签名信息添加到消息头,从而通过身份认证。 请求时header中会增加如下参数: 名称 样例 说明 Content-Type application/json 方法 x-connector-signature-timestamp 1694145291981 时间戳 x-connector-signature ****** 签名,由下列签名算法计算 x-connector-accesskeyid ****** ak 签名算法如下: /** * 获取aksk签名 * * @param accessKeyId ak * @param accessKeySecret sk * @param timestamp 时间戳 * @param httpMethod GET/POST * @param url 请求url,不带 域名 端口,不带参数,以/开头不以/结尾 * @return 签名串 */ public static String signByAKSK(String accessKeyId, String accessKeySecret, long timestamp, String httpMethod, String url) { String sign = null; try { Charset charset = StandardCharsets.UTF_8; URI uri = new URI(url); String path = uri.getPath(); if (StringUtils.endsWith(path, "/")) { path = StringUtils.removeEnd(path, "/"); } Mac mac = Mac.getInstance("HmacSHA256"); SecretKeySpec key = new SecretKeySpec(accessKeySecret.getBytes(charset), "HmacSHA256"); mac.init(key); String signStr = accessKeyId + timestamp + httpMethod.toUpperCase(Locale.ENGLISH) + path; sign = Base64.getEncoder().encodeToString(mac.doFinal(signStr.getBytes(charset))); } catch (Exception e) { log.error("signByAKSK fail.", e); } return sign; } 父主题: 鉴权设置