Disqus单点登录(SSO)问题

时间:2015-08-04 07:56:00

标签: java single-sign-on disqus hmacsha1

我们正在使用下面的java方法来提供HMAC-> SHA1签名。但是它显示签名在sso控制台中不匹配。请尝试帮助解决这个问题。我知道在java中是否还有其他方法可以使用.disqus使用什么方法从消息和时间戳生成签名 -

/**
 * To convert into base16
 * 
 * @param bytes
 * @return
 */
private static String toHexString(byte[] bytes) {
    Formatter formatter = new Formatter();
    for (byte b : bytes) {
        formatter.format("%02x", b);
    }
    return formatter.toString();
}

/**
 * 
 * @param data
 * @param key
 * @return
 * @throws SignatureException
 * @throws NoSuchAlgorithmException
 * @throws InvalidKeyException
 */
public static String calculateRFC2104HMAC(String data, String key)
        throws SignatureException, NoSuchAlgorithmException,
        InvalidKeyException {
    final String HMAC_SHA1_ALGORITHM = "HmacSHA1";
    SecretKeySpec signingKey = new SecretKeySpec(key.getBytes(),
            HMAC_SHA1_ALGORITHM);
    Mac mac = Mac.getInstance(HMAC_SHA1_ALGORITHM);
    mac.init(signingKey);
    return toHexString(mac.doFinal(data.getBytes()));
    //return DatatypeConverter.printBase64Binary(mac.doFinal(data.getBytes()));
}

参考:Disqus sso java

1 个答案:

答案 0 :(得分:0)

Hmac sha1方法返回encripted message的十六进制字符串。我必须确保传递给方法的密钥是正确的。它解决了这个问题。