2016-02-29 3 views
0

J'essaie d'utiliser une authentification JWT avec Firebase, mais j'ai toujours cette erreur: "Erreur irrécupérable: Firebase \ JWT \ SignatureInvalidException non vérifiée: Échec de la vérification de la signature".Firebase JWT: échec de la vérification de la signature

Le code est le suivant:

$key = "test"; 

$tokenId = base64_encode(mcrypt_create_iv(32)); 
$issuedAt = time(); 
$notBefore = $issuedAt + 10; 
$expire  = $notBefore + 60; 
$serverName = $_SERVER["SERVER_NAME"]; 


$data = [ 
    'iat' => $issuedAt, 
    'jti' => $tokenId, 
    'iss' => $serverName, 
    'nbf' => $notBefore, 
    'exp' => $expire, 
    "userId" => 1 
]; 


$secretKey = base64_decode($key); 


$jwt = \Firebase\JWT\JWT::encode($data, $secretKey, 'HS256'); 

// and when I decode the tokens, I got that exception 
$decoded = \Firebase\JWT\JWT::decode($jwt, $key, array('HS256')); 

Ce que je tort?

Répondre

2

Vous n'avez pas besoin $secretKey ou base64_decode la clé pour cette question, il suffit de faire:

$jwt = \Firebase\JWT\JWT::encode($data, $key, 'HS256'); 
$decoded = \Firebase\JWT\JWT::decode($jwt, $key, array('HS256')); 
+0

Salut, avez-vous fait une faute de frappe $$ clé? Ça ne marchera pas. –

+1

Je crois que vous avez raison; corrigé cela. –

+0

BTW une question (peut-être pas liée à cette question, mais je vous demande de répondre s'il vous plaît): J'envoie 401 code de statut chaque fois que le jeton est expiré/Jeton manquant dans les en-têtes/Token est invalide. Donc, la personne qui utilise mes API ne sait pas comment gérer cela. Par exemple, il ne peut pas faire la différence si 401 a été causé en raison d'un problème lié à un jeton ou autre chose. Comment devrions-nous le gérer? –