"JWT 'request expired' Error When Integrating with Samsung API

15 views Asked by At

Estoy intentando integrar mi aplicación Java con una API de Samsung, generando JWTs para la autenticación. Estoy utilizando la biblioteca Nimbus JOSE + JWT para crear tokens JWE encapsulados dentro de tokens JWS. Mi objetivo es incluir una marca de tiempo personalizada (utc) en el payload, representando la hora de creación más 10 minutos, en milisegundos desde la época UNIX (1 de enero de 1970, 00:00:00 UTC).

El problema surge después de generar y enviar el token al servidor de Samsung: recibo un error que indica que la solicitud ha expirado ("request expired"). He verificado la sincronización de mi servidor y he asegurado que esté configurado para UTC, pero el problema persiste. Aquí está el fragmento relevante de mi código:

public static String generate(String partnerId, RSAPublicKey samsungPublicKey, RSAPublicKey partnerPublicKey, RSAPrivateKey partnerPrivateKey, String data) throws JOSEException { JWEAlgorithm jweAlg = JWEAlgorithm.RSA_OAEP_256; EncryptionMethod jweEnc = EncryptionMethod.A128GCM; JWEHeader jweHeader = new JWEHeader.Builder(jweAlg, jweEnc).contentType("JWT").build(); JWEObject jwe = new JWEObject(jweHeader, new Payload(data)); RSAEncrypter encryptor = new RSAEncrypter(samsungPublicKey); jwe.encrypt(encryptor); String payload = jwe.serialize();

long utcPlus10Minutes = System.currentTimeMillis() + (10 * 60 * 1000);

JWSAlgorithm jwsAlg = JWSAlgorithm.RS256;
JWSHeader jwsHeader = new JWSHeader.Builder(jwsAlg)
        .contentType("CARD")
        .customParam("partnerId", partnerId)
        .customParam("ver", "1")
        .customParam("utc", utcPlus10Minutes)
        .build();

JWSObject jwsObj = new JWSObject(jwsHeader, new Payload(payload));
JWSSigner signer = new RSASSASigner(partnerPrivateKey);
jwsObj.sign(signer);

return jwsObj.serialize();

} He intentado ajustar el desfase de tiempo y sincronizar el reloj de mi servidor, pero aún no he encontrado una solución. ¿Alguien ha enfrentado un problema similar o tiene sugerencias sobre cómo resolver este problema de sincronización de tiempo con JWTs y la API de Samsung? Cualquier ayuda sería muy apreciada.

He intentado ajustar el desfase de tiempo y sincronizar el reloj de mi servidor, pero aún no he encontrado una solución. ¿Alguien ha enfrentado un problema similar o tiene sugerencias sobre cómo resolver este problema de sincronización de tiempo con JWTs y la API de Samsung? Cualquier ayuda sería muy apreciada.enter image description here

0

There are 0 answers