-
Notifications
You must be signed in to change notification settings - Fork 0
/
verifyToken.js
36 lines (28 loc) · 970 Bytes
/
verifyToken.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
const jwt = require("jsonwebtoken");
const jwksClient = require("jwks-rsa");
const verifyToken = async (bearerToken) =>{
const client = jwksClient({
jwksUri : `https://${process.env.AUTH0_DOMAIN}/.well-known/jwks.json`,
});
function getJwksClientKey(header , callback){
client.getSigningKey(header.kid , function(error , key){
const signingKey = key.publicKey || key.rsaPublicKey;
callback(null , signingKey);
});
}
return new Promise((resolve ,reject ) =>{
jwt.verify(
bearerToken,
getJwksClientKey,
{
audience : process.env.AUTH0_AUDIENCE,
issuer : `https://${process.env.AUTH0_DOMAIN}/`,
algorithms : ["RS256"],
},
function (err , decoded) {
if(err) reject(err);
resolve(decoded);
});
});
}
module.exports = {verifyToken};