2017-03-20 5 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; 
    } 

내가 오류가 계속 이렇게하는 documentation있다 PEM_read_bio_PUBKEY failed

auth0 있지만, 그것은 당신이 아니에요 어떤 명시 적 사용하는 가정합니다. 나는 websocket을 통해 이것을하고 있으므로 미들웨어는 없다.

성가신 비트는 HS256이 나에게 적합하지만 auth0 사용자 정의 로그인 양식은 RS256이 필요합니다.

답변

7

RS256은 확인하기 위해 공개 키를 필요로하지만 당신은 대신 secret의 PEM 공개 키를 제공해야 당신은 문자열을 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, 정말 도움이되었습니다. –