Java 单点登录(SSO)问题

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

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

/**
 * 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中的用户