Jws | To Csv Converter
pip install PyJWT pandas import base64 import json import csv import sys import pandas as pd from pathlib import Path def decode_jws_payload(jws_token): """Decode the payload (second part) of a compact JWS.""" try: parts = jws_token.split('.') if len(parts) != 3: raise ValueError("Invalid compact JWS: expected 3 parts") # Decode base64url (add padding if needed) payload_b64 = parts[1] # Add padding for base64 decoding padding = '=' * (4 - (len(payload_b64) % 4)) payload_bytes = base64.urlsafe_b64decode(payload_b64 + padding) return json.loads(payload_bytes) except Exception as e: return "error": str(e), "raw_token": jws_token[:50]
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjMiLCJyb2xlIjoidXNlciIsImV4cCI6MTczNTY4OTAwMH0.signature1 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI0NTYiLCJyb2xlIjoiYWRtaW4iLCJleHAiOjE3MzU2ODkwMDB9.signature2 python jws_to_csv.py tokens.txt output.csv --fields sub,role jws to csv converter
Do not trust the claims from an unverified JWS in a security context. For analysis, it’s fine. For access control, always verify the signature. Real-World Example Input ( tokens.txt ): pip install PyJWT pandas import base64 import json
"user": "id": 123, "name": "Alice", "permissions": ["read", "write"] Real-World Example Input ( tokens
To flatten these into CSV columns (e.g., user.id , permissions.0 ), you can use pandas.json_normalize() instead of the direct DataFrame constructor.
for token in tokens: if not token.strip(): continue payload = decode_jws_payload(token) # If no fields specified, take all top-level keys if fields_of_interest is None: rows.append(payload) else: filtered = field: payload.get(field, None) for field in fields_of_interest rows.append(filtered)
from pandas import json_normalize normalized = json_normalize(payload) rows.append(normalized.iloc[0].to_dict()) What About Invalid or Expired Signatures? A pure converter doesn’t need to verify the signature – it just decodes the payload. However, you may want to add a signature_valid column using a cryptographic library (e.g., cryptography or jwt with verification disabled first, then verified separately).