2017-06-09 5 views
0

Ich benutze android-Bibliothek 'io.jsonwebtoken: jjwt: 0.7.0', um das Token zu erstellen, das die JWT korrekt erstellt, die ich überprüft habe. Mein Problem ist, wenn ich die php firebase/php-jwt-Bibliothek zum Decodieren verwende. beide Bibliotheken sind auf HS256 und Schlüssel "Testen" eingestellt. Was mache ich hier falsch?PHP-JWT nicht decodieren

String compactJws = Jwts.builder() 
      .claim("devId", getDeviceId()) 
      .signWith(SignatureAlgorithm.HS256, "testing") 
      .compact(); 
    logger.i(compactJws); 

Protokolle als eyJhbGciOiJIUzI1NiJ9.eyJkZXZJZCI6Ijc4MGQ1YWRlMzMwNGVhZmEifQ.XIKxG1xZbuMD8FRIAJ735LNbhodAj1a7pMZ6o3IF0ig

https://jwt.io/

enter image description here

use \Firebase\JWT\JWT; 
$jwt = "eyJhbGciOiJIUzI1NiJ9.eyJkZXZJZCI6Ijc4MGQ1YWRlMzMwNGVhZmEifQ.XIKxG1xZbuMD8FRIAJ735LNbhodAj1a7pMZ6o3IF0ig"; 
$key = "testing"; 
$decoded = JWT::decode($jwt, $key, array('HS256')); 
print_r($decoded); 

kehrt abgefangene Ausnahme 'Firebase \ JWT \ SignatureInvalidException' mit der Meldung 'Die Signaturprüfung nicht bestanden'

+0

Geheimnis base64 zu dekodieren codiert wird, auf dem Bildschirm überprüft geschossen –

+0

So Warum hast du einen JWT gezeigt und den anderen in deinem Code benutzt? Die Signatur sieht ungültig aus. Was ist also Ihr tatsächliches Problem? – zerkms

+0

Ich habe den falschen Screenshot verwendet. Ich habe meinen Code aktualisiert –

Antwort

0

Die Antwort war ich den "Typ" fehlt: "JWT" ​​Header und mit dem Schlüssel

Map<String, Object> header = new HashMap<>(); 
    header.put("typ", Header.JWT_TYPE); 
    .setHeader(header) 

PHP SIDE

$decoded_array = (array) JWT::decode($jwt, base64_decode($key), array('HS256')); 
Verwandte Themen