/**
* Strips metadata from authentication tokens.
*
* @param {string} token The authentication token.
* @param {boolean} dryRun Whether to only output the changes without modifying the token.
* @returns {string} The token with metadata stripped, or the original token if dryRun is true.
*/
function stripTokenMetadata(token, dryRun = true) {
if (!token) {
return token; // Handle null or undefined tokens
}
try {
const tokenObj = JSON.parse(token); // Parse the token as a JSON object
// Remove metadata fields (customize this list as needed)
delete tokenObj.exp;
delete tokenObj.iat;
delete tokenObj.iss;
delete tokenObj.aud;
delete tokenObj.sub;
const strippedToken = JSON.stringify(tokenObj);
if (dryRun) {
console.log("Dry Run: Stripped token metadata.");
console.log("Original Token:", token);
console.log("Stripped Token:", strippedToken);
return token; // Return original token in dry run mode
} else {
return strippedToken; // Return the stripped token
}
} catch (error) {
console.error("Error parsing or processing token:", error);
return token; // Return original token in case of error
}
}
// Example usage:
// const token = '{"token": "...", "exp": 1678886400}';
// const strippedToken = stripTokenMetadata(token);
// console.log(strippedToken);
//const token2 = '{"token": "...", "exp": 1678886400, "iat": 1678882800}';
//const strippedToken2 = stripTokenMetadata(token2, false);
//console.log(strippedToken2);
Add your comment