1. /**
  2. * Strips metadata from authentication tokens.
  3. *
  4. * @param {string} token The authentication token.
  5. * @param {boolean} dryRun Whether to only output the changes without modifying the token.
  6. * @returns {string} The token with metadata stripped, or the original token if dryRun is true.
  7. */
  8. function stripTokenMetadata(token, dryRun = true) {
  9. if (!token) {
  10. return token; // Handle null or undefined tokens
  11. }
  12. try {
  13. const tokenObj = JSON.parse(token); // Parse the token as a JSON object
  14. // Remove metadata fields (customize this list as needed)
  15. delete tokenObj.exp;
  16. delete tokenObj.iat;
  17. delete tokenObj.iss;
  18. delete tokenObj.aud;
  19. delete tokenObj.sub;
  20. const strippedToken = JSON.stringify(tokenObj);
  21. if (dryRun) {
  22. console.log("Dry Run: Stripped token metadata.");
  23. console.log("Original Token:", token);
  24. console.log("Stripped Token:", strippedToken);
  25. return token; // Return original token in dry run mode
  26. } else {
  27. return strippedToken; // Return the stripped token
  28. }
  29. } catch (error) {
  30. console.error("Error parsing or processing token:", error);
  31. return token; // Return original token in case of error
  32. }
  33. }
  34. // Example usage:
  35. // const token = '{"token": "...", "exp": 1678886400}';
  36. // const strippedToken = stripTokenMetadata(token);
  37. // console.log(strippedToken);
  38. //const token2 = '{"token": "...", "exp": 1678886400, "iat": 1678882800}';
  39. //const strippedToken2 = stripTokenMetadata(token2, false);
  40. //console.log(strippedToken2);

Add your comment