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 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) {
const postData = session.getBody();
console.log(postData);
@ -11,21 +47,14 @@ async function verify(session) {
const header = base64url.decode(arr[0]);
const payload = base64url.decode(arr[1]);
const sign = base64url.decode(arr[2]);
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;
cb(null, signingKey);
});
};
jwt.verify(postData['data'], getKey, function(err, decoded) {
console.log(err);
console.log(decoded);
const {err, decoded} = await asyncVerify(jwksUri, postData['data']);
console.log(err, decoded);
if (err != null) {
session.rspErr(500, err);
return;
}
session.rspData({
'decoded': decoded
});
}