Skip to content

jwt-rs256

#!/usr/bin/env python3
import jwt
from datetime import datetime, timedelta, UTC

with open("private.pem", "r") as f:
    private_key = f.read()

headers = {
    "alg": "RS256",
    "typ": "JWT",
    "kid": "jenkins-oidc-token"
}

now = datetime.now(UTC)
payload = {
    "iss": "nulloidc",
    "aud": "vault",
    "exp": int((now + timedelta(minutes=30)).timestamp()),
    "iat": int(now.timestamp()),
    "job_name": "main-build",
    "sub": "${JOB_URL}",
    "build_number": 7
}

token = jwt.encode(payload, private_key, algorithm="RS256", headers=headers)

print(token)