2017-03-20 2 views
1

Ich versuche Ich versuche, eine jwt, die den RS256 Algorithmus verwenden zu überprüfen. Bei der Verwendung des hs256 Algorithmus alles gut funktioniertÜberprüfen Sie eine RS256 JWT am Knoten PEM_read_bio_PUBKEY fehlgeschlagen

let opts = { 
    audience: 'y', 
    issuer: `https://x.auth0.com/`, 
    algorithms: ["RS256"] 
} 

jwt.verify(payload.token, 'secret', opts, (err, decoded) => { 
    if (err) { 
     console.log("invalid token in iamonline service " + err.message); 
     return; 
    } 

ich den Fehler danach weiterhin: PEM_read_bio_PUBKEY failed

Während auth0documentation so zu tun hat, nimmt man Express verwenden, das bin ich nicht. Ich mache das über eine WebSocket, also keine Middleware.

Das ärgerliche Bit ist, dass HS256 für mich in Ordnung ist, aber aut0 benutzerdefinierte Anmeldeformulare scheinen RS256 erfordern.

Antwort

7

RS256 benötigt einen öffentlichen Schlüssel, um zu überprüfen, aber Sie sind Bereitstellen einer Zeichenfolge

jwt.verify(payload.token, 'secret', opts, (err, decoded) => { 

Siehe Dokumentation von auth0

jwt.verify(token, secretOrPublicKey, [options, callback])

token is the JsonWebToken string

secretOrPublicKey is a string or buffer containing either the secret for HMAC algorithms, or the PEM encoded public key for RSA and ECDSA.

Sie benötigen secret statt einer PEM öffentlichen Schlüssel zur Verfügung zu stellen. Der Inhalt der PEM-Datei beginnt mit -----BEGIN PUBLIC KEY-----

var publicKey = fs.readFileSync('public.pem'); 
+2

Yay, danke! Um das hinzuzufügen, in auth0 befindet sich die Datei in den Clients> erweiterte Einstellungen> Zertifikate – Ced

+0

Danke Ced, das war wirklich hilfreich –

Verwandte Themen