JWT Public vs Private Keys: Designing Asymmetric Token Security for Distributed APIs

    What Is JWT Public/Private Key Authentication?

    JWT public/private key authentication uses asymmetric cryptography to secure token-based identity systems. A private key generates the token signature, while distributed services verify that signature using the corresponding public key.

    This design allows authentication servers to securely issue tokens while enabling API gateways and microservices to validate them without sharing sensitive signing credentials.

    Asymmetric JWT authentication is widely used in:

    • OAuth 2.0 authorization servers
    • OpenID Connect identity providers
    • API gateway authentication layers
    • service-to-service authentication in microservices

    Because the verification key can be safely distributed, this model enables secure stateless authentication across distributed infrastructure.

    How Public and Private Keys Work in JWT Authentication

    JWT tokens can be signed using either symmetric or asymmetric algorithms.

    Symmetric algorithms such as HS256 use a shared secret key for both signing and verification.

    Asymmetric algorithms such as RS256 or ES256 use a private key to sign tokens and a public key to verify them.

    In an asymmetric JWT system:

    • The authentication server signs the token using a private key
    • The token is sent to the client
    • The client includes the token in API requests
    • API gateways and services verify the signature using the public key

    Example request header:

    Authorization: Bearer <JWT_TOKEN>

    Because the private key never leaves the identity provider, the signing credentials remain protected.

    Why Asymmetric JWT Signing Is Preferred for Microservices

    In distributed architectures, symmetric signing introduces operational risk. With HS256, every service verifying tokens must store the shared secret. If any service is compromised, attackers could generate valid tokens.

    Asymmetric signing eliminates this problem.

    Advantages include:

    • the private signing key remains isolated in the identity provider
    • verification keys can be safely distributed to multiple services
    • APIs never store sensitive signing secrets

    This architecture is commonly used in OAuth 2.0 and OpenID Connect identity systems.

    JWT Verification Pipeline in Distributed API Infrastructure

    A JWT verification pipeline is the process by which an API or gateway validates a token before allowing access to protected resources.

    Typical verification steps include:

    • Extract the token from the request header
    • Verify the token signature using the public key
    • Validate critical claims such as issuer and expiration
    • Confirm the token was intended for the receiving service

    Important validation checks include:

    ClaimPurpose
    issEnsures the token was issued by a trusted authority
    audConfirms the token was intended for this API
    expEnsures the token has not expired
    nbfPrevents token use before activation
    subIdentifies the authenticated subject

    Only when these checks succeed should the request proceed.

    Using JWKS for Public Key Distribution

    In modern identity systems, public keys are typically distributed through a JSON Web Key Set (JWKS) endpoint.

    Example endpoint: https://identity.example.com/.well-known/jwks.json

    API gateways and services retrieve the public keys from this endpoint to verify token signatures.

    Using JWKS provides several benefits:

    • automated public key discovery
    • seamless signing key rotation
    • centralized key management

    This approach allows infrastructure to verify tokens without manual key distribution.

    Propagating Verified Identity Claims Across Microservices

    Once a gateway or API verifies a JWT signature, the decoded claims can be trusted and propagated across internal services.

    Typical claims include:

    • subject identifier (sub)
    • user roles or permissions
    • token expiration (exp)
    • authorization scopes

    Example architecture:

    Client API Gateway Microservices

    The API gateway validates the JWT using the public key and forwards requests with verified identity metadata.

    Example propagated headers:

    x-user-id: 81274
    x-user-role: merchant
    x-scope: payments:write

    This approach improves performance and reduces repeated token verification in high-throughput microservice environments.

    Production Example: RSA-Based JWT Validation in a Node.js API Gateway

    The following middleware demonstrates a production-style JWT verification layer in a Node.js API gateway.

    It retrieves a public verification key from a JWKS endpoint and validates incoming tokens.

    import jwt from "jsonwebtoken";
    import axios from "axios";
    
    let cachedPublicKey = null;
    
    async function getPublicKey() {
    
     if (cachedPublicKey) return cachedPublicKey;
    
     const response = await axios.get(
       "https://identity.example.com/.well-known/jwks.json"
     );
    
     cachedPublicKey = response.data.keys[0].publicKey;
    
     return cachedPublicKey;
    }
    
    export async function verifyGatewayToken(req, res, next) {
    
     const authHeader = req.headers.authorization;
    
     if (!authHeader) {
       return res.status(401).json({ error: "Authorization token missing" });
     }
    
     const token = authHeader.split(" ")[1];
    
     try {
    
       const publicKey = await getPublicKey();
    
       const decoded = jwt.verify(token, publicKey, {
         algorithms: ["RS256"]
       });
    
       req.identity = {
         userId: decoded.sub,
         roles: decoded.roles
       };
    
       next();
    
     } catch (error) {
    
       return res.status(403).json({ error: "Invalid authentication token" });
    
     }
    }

    Engineering principles demonstrated:

    • asymmetric signature verification
    • JWKS-based public key retrieval
    • gateway-level authentication enforcement
    • stateless identity propagation across services

    Comparing Symmetric and Asymmetric JWT Signing

    Selecting a signing algorithm depends on architecture scale and security requirements.

    AlgorithmKey ModelSecurityBest Use Case
    HS256Shared secretMediumSingle backend service
    RS256Public/private keysStrongDistributed APIs
    ES256Elliptic curve keysVery strongHigh-security systems
    Opaque tokensNo JWT claimsStrong with introspectionOAuth authorization servers

    Most modern identity platforms favor RS256 or ES256 because they allow secure verification without distributing signing secrets.

    Key Rotation and Token Lifecycle Management

    Asymmetric token systems must support key rotation strategies to prevent long-term compromise. Best practices include:

    • publishing verification keys through JWKS endpoints
    • rotating signing keys periodically
    • issuing short-lived access tokens

    Typical token lifetime configuration:

    Token TypeTypical Lifetime
    Access TokenMinutes
    Refresh TokenHours or days

    Key rotation ensures older tokens eventually become invalid after signing keys change.

    Common Security Risks in Asymmetric JWT Systems

    Incorrect implementations can introduce vulnerabilities.

    Algorithm Confusion Attacks

    APIs must enforce the expected algorithm. Tokens specifying:

    "alg": "none"

    must always be rejected.

    Token Replay Attacks

    JWT tokens are bearer tokens. Anyone possessing the token can use it until it expires. Mitigation strategies include:

    • short token lifetimes
    • HTTPS-only communication
    • monitoring abnormal request patterns

    Accepting Tokens from Untrusted Issuers

    APIs must verify the iss claim to ensure the token originates from a trusted identity provider. Failure to do so allows attackers to generate tokens from unauthorized systems.

    Integrating Asymmetric JWT with Modern Identity Platforms

    Public/private key JWT authentication often operates within broader identity frameworks.

    Typical integrations include:

    TechnologyRole
    OAuth 2.0Authorization framework issuing tokens
    OpenID ConnectIdentity layer on top of OAuth
    API GatewayEdge-level token validation
    Service MeshSecure service-to-service identity

    Key Takeaways

    JWT public/private key authentication enables secure and scalable token verification in distributed systems. By isolating the signing key in the identity provider and distributing only the verification key, organizations can implement stateless authentication across:

    • API gateways
    • microservices
    • service mesh architectures

    This model allows large-scale systems to authenticate requests without exposing sensitive signing credentials while maintaining strong cryptographic security.

    Checkout out Generatorkithub tool

    Frequently Asked Questions About JWT Public and Private Keys

    Why use asymmetric keys for JWT?

    Asymmetric keys allow the identity provider to sign tokens with a private key while services verify tokens using public keys. This prevents sharing signing secrets across infrastructure.

    Can JWT use symmetric keys instead?

    Yes. Algorithms such as HS256 use shared secrets. However, this approach becomes difficult to manage in distributed systems.

    What is JWKS in JWT authentication?

    JWKS (JSON Web Key Set) is a standard endpoint that publishes public keys used to verify JWT signatures.

    What happens when the signing key rotates?

    When a signing key rotates, new tokens are signed with the new key. Services retrieve updated public keys from the JWKS endpoint to verify future tokens.