应用身份管理服务 ONEACCESS-签名验签说明:签名校验

时间:2024-01-18 19:41:39

签名校验

为了让企业应用确认事件推送来自 OneAccess ,OneAccess将事件推送给企业应用回调服务时,请求body体中包含请求签名并以参数signature标识,企业应用需要验证此参数的正确性后再解密,验证步骤如下:

  1. 计算签名。
    计算签名由签名密钥、Nonce值(nonce)、时间戳(timestamp)、事件类型(eventType)、消息体(data)5部分组成,中间使用&进行连接。采用HMAC-SHA256 + Base64算法进行加密。以下为Java语言签名示例:
    String message = nonce + "&" + timestamp + "&" + eventType + "&" + data; 
    Mac mac = Mac.getInstance("HmacSHA256"); 
    SecretKeySpec secretKey = new SecretKeySpec(签名密钥.getBytes(StandardCharsets.UTF_8), "HmacSHA256"); 
    mac.init(secretKey); 
    String newSignature = Base64.getEncoder().encodeToString(mac.doFinal(message.getBytes(StandardCharsets.UTF_8)));
  2. 比较计算的签名cal_signature与请求参数signature是否相等,相等则表示验证通过。
  3. 企业应用按照要求返回响应消息格式。
support.huaweicloud.com/devg-oneaccess/oneaccess_06_0122.html