2017-03-20 8 views
1

私は試みています RS256アルゴリズムを使用しているjwtを確認しようとしています。使用している場合hs256アルゴリズムのすべてがノードPEM_read_bio_PUBKEYのRS256 jwtが失敗したことを確認してください

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; 
    } 

正常に動作します私はエラーを取得しておいてください。 PEM_read_bio_PUBKEY failed

auth0がそうするdocumentationを有しているが、それはあなたが私はありませんどのExpressを使用していることを前提とします。私はWebSocket上でこれをやっているのでミドルウェアはありません。

厄介なことに、HS256は私にとっては問題ありませんが、auth0のカスタムログインフォームにはRS256が必要なようです。

答えて

7

RS256は検証する公開鍵を必要としますが、あなたはPEM公開鍵の代わりに、secretを提供する必要が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.

の文字列

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

参照ドキュメントを提供しています。 PEMファイルの内容は-----BEGIN PUBLIC KEY-----

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

で始まります。ありがとう!このファイルをauth0に追加するには、クライアント>詳細設定>証明書でファイルを見つけることができます – Ced

+0

ありがとうCed、本当に役立ちました –

関連する問題