Disqus 单点登录 (SSO) 问题
Disqus single sign on (SSO) issue
我们正在使用以下 java 方法来提供 HMAC->SHA1 signature.But 它显示的签名在 sso 中不匹配 console.Please 尝试帮助我 issue.let知道在 java.What 中是否有任何其他方法可以使用 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()));
}
Hmac sha1 方法 returns 加密的十六进制字符串 message.I 必须确保我们传递给该方法的密钥是正确的。它解决了问题。
我们正在使用以下 java 方法来提供 HMAC->SHA1 signature.But 它显示的签名在 sso 中不匹配 console.Please 尝试帮助我 issue.let知道在 java.What 中是否有任何其他方法可以使用 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()));
}
Hmac sha1 方法 returns 加密的十六进制字符串 message.I 必须确保我们传递给该方法的密钥是正确的。它解决了问题。