Java 单点登录(SSO)问题
我们正在使用以下java方法来提供HMAC->SHA1签名。但在sso控制台中显示的签名不匹配。请尝试在这个问题上提供帮助。让我知道java中是否有其他方法可使用。DISKS使用哪些方法从消息和时间戳生成签名-Java 单点登录(SSO)问题,java,single-sign-on,disqus,hmacsha1,Java,Single Sign On,Disqus,Hmacsha1,我们正在使用以下java方法来提供HMAC->SHA1签名。但在sso控制台中显示的签名不匹配。请尝试在这个问题上提供帮助。让我知道java中是否有其他方法可使用。DISKS使用哪些方法从消息和时间戳生成签名- /** * To convert into base16 * * @param bytes * @return */ private static String toHexString(byte[] bytes) { Formatter formatter = new
/**
* 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方法返回加密消息的十六进制字符串。我必须确保传递给该方法的密钥是正确的。它解决了问题。Hmac sha1方法返回加密消息的十六进制字符串。我必须确保传递给该方法的密钥是正确的。它解决了问题。您正在为HMAC SHA1使用正确的方法。只需确保您将密钥正确地传递给该方法。@Michael-O使用下面的代码在Disqus中对用户进行身份验证您使用的是HMAC SHA1的正确方法。只需确保您将密钥正确地传递给该方法。@Michael-O使用下面的代码来验证Disqs中的用户