This commit is contained in:
aozhiwei 2024-05-31 19:09:08 +08:00
parent 36993cf342
commit dfe375f24d

View File

@ -3,6 +3,42 @@ const base64url = require('base64url');
const jwksClient = require('jwks-rsa'); const jwksClient = require('jwks-rsa');
const jwt = require('jsonwebtoken'); const jwt = require('jsonwebtoken');
const jwksKeyHash = {};
function asyncVerify(jwksUri, data) {
return new Promise((resolve) => {
const ret = {
err: null,
decoded: null
};
const client = jwksClient({
jwksUri: jwksUri
});
function getKey(header, cb ) {
console.log(header);
client.getSigningKey(header.kid, function(err, key) {
console.log(err);
console.log(key);
const signingKey = key.publicKey || key.rsaPublicKey;
if (!err) {
jwksKeyHash[jwksUri] = {
'key': key,
'last_refresh_time': 0
};
}
cb(null, signingKey);
});
};
jwt.verify(data, getKey, function(err, decoded) {
console.log(err);
console.log(decoded);
ret.err = err;
ret.decoded = decoded;
resolve(ret);
});
});
}
async function verify(session) { async function verify(session) {
const postData = session.getBody(); const postData = session.getBody();
console.log(postData); console.log(postData);
@ -11,21 +47,14 @@ async function verify(session) {
const header = base64url.decode(arr[0]); const header = base64url.decode(arr[0]);
const payload = base64url.decode(arr[1]); const payload = base64url.decode(arr[1]);
const sign = base64url.decode(arr[2]); const sign = base64url.decode(arr[2]);
const client = jwksClient({ const {err, decoded} = await asyncVerify(jwksUri, postData['data']);
jwksUri: jwksUri console.log(err, decoded);
}); if (err != null) {
function getKey(header, cb ) { session.rspErr(500, err);
console.log(header); return;
client.getSigningKey(header.kid, function(err, key) { }
console.log(err); session.rspData({
console.log(key); 'decoded': decoded
const signingKey = key.publicKey || key.rsaPublicKey;
cb(null, signingKey);
});
};
jwt.verify(postData['data'], getKey, function(err, decoded) {
console.log(err);
console.log(decoded);
}); });
} }