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

View File

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