# jini

Published articles for jini.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Propagating User Identity Chains Across JVM Service Calls

DevFeed: [Propagating User Identity Chains Across JVM Service Calls](<https://devfeed.tech/articles/security-baked-into-the-jvm-sixteen-subjects-on-the-wire-18931.md>)

Original publisher: [Read original article](<https://blog.frankel.ch/security-baked-into-jvm/4/>)

Author: Peter Firmstone

Published: 2026-08-23T00:00:00Z

Content type: article

Language: en

Sources: [Nicolas Fränkel](<https://devfeed.tech/sources/nicolas-frankel.md>)

Topics: [Security](<https://devfeed.tech/topics/security.md>), [Java](<https://devfeed.tech/topics/java.md>), [Authorization](<https://devfeed.tech/topics/authorization.md>), [Protocol (disambiguation)](<https://devfeed.tech/topics/protocol.md>)

Tags: [authorization](<https://devfeed.tech/tags/authorization.md>), [dirtychai](<https://devfeed.tech/tags/dirtychai.md>), [java](<https://devfeed.tech/tags/java.md>), [jgdms](<https://devfeed.tech/tags/jgdms.md>), [jini](<https://devfeed.tech/tags/jini.md>), [jvm](<https://devfeed.tech/tags/jvm.md>), [microservices](<https://devfeed.tech/tags/microservices.md>), [protocol](<https://devfeed.tech/tags/protocol.md>), [security](<https://devfeed.tech/tags/security.md>), [technical](<https://devfeed.tech/tags/technical.md>), [tls](<https://devfeed.tech/tags/tls.md>), [tokens](<https://devfeed.tech/tags/tokens.md>)

### AI overview

This article explains how a chain of user identities crosses service calls on the wire. It distinguishes TLS machine authentication from in-band user claims, describes receiver-side limits and principal handling, and notes that standard Java 24 lacks the required authorization support without DirtyChai on both ends.

### Source excerpt

Alice calls the order service. The order service calls the ledger on her behalf. At the second hop, the ledger has to decide whose authority the debit is being made under. Most stacks answer badly. Forward Alice's bearer token verbatim, and the ledger cannot tell her from the service that relayed it. Drop the token and the ledger sees a machine, with no record that a human started the chain. Neither option lets the ledger authorize the combination.

## Security Baked Into the JVM: two Subjects, one call

DevFeed: [Security Baked Into the JVM: two Subjects, one call](<https://devfeed.tech/articles/security-baked-into-the-jvm-two-subjects-one-call-18930.md>)

Original publisher: [Read original article](<https://blog.frankel.ch/security-baked-into-jvm/3/>)

Author: Peter Firmstone

Published: 2026-08-09T00:00:00Z

Content type: article

Language: en

Sources: [Nicolas Fränkel](<https://devfeed.tech/sources/nicolas-frankel.md>)

Topics: [Security](<https://devfeed.tech/topics/security.md>), [SPIFFE](<https://devfeed.tech/topics/spiffe.md>), [SPIRE](<https://devfeed.tech/topics/spire.md>)

Tags: [certificates](<https://devfeed.tech/tags/certificates.md>), [dirtychai](<https://devfeed.tech/tags/dirtychai.md>), [java](<https://devfeed.tech/tags/java.md>), [jgdms](<https://devfeed.tech/tags/jgdms.md>), [jini](<https://devfeed.tech/tags/jini.md>), [jvm](<https://devfeed.tech/tags/jvm.md>), [jwt](<https://devfeed.tech/tags/jwt.md>), [microservices](<https://devfeed.tech/tags/microservices.md>), [oidc](<https://devfeed.tech/tags/oidc.md>), [permission](<https://devfeed.tech/tags/permission.md>), [process](<https://devfeed.tech/tags/process.md>), [security](<https://devfeed.tech/tags/security.md>), [spiffe](<https://devfeed.tech/tags/spiffe.md>), [spire](<https://devfeed.tech/tags/spire.md>), [technical](<https://devfeed.tech/tags/technical.md>)

### AI overview

This article examines identity and security in the JVM through DirtyChai. It describes separate process and user identities, including SPIFFE workload credentials delivered through SPIRE and JWT/OIDC-based user identity, and explains how these identities coexist across request dispatch and privilege boundaries.

### Source excerpt

The constraint system stops a bad call before it leaves the JVM. The Safe Codebase Audit Pipeline stops bad code before a client ever loads it. What remains is identity: who is calling, and can you verify it? Most frameworks answer with a token check at the door. A filter validates a bearer token, sets a thread-local variable, and hopes that nothing downstream forgets to look at it. DirtyChai answers differently.

## Security Baked Into the JVM: the Safe Codebase Audit Pipeline

DevFeed: [Security Baked Into the JVM: the Safe Codebase Audit Pipeline](<https://devfeed.tech/articles/security-baked-into-the-jvm-the-safe-codebase-audit-pipeline-18929.md>)

Original publisher: [Read original article](<https://blog.frankel.ch/security-baked-into-jvm/2/>)

Author: Peter Firmstone

Published: 2026-07-19T00:00:00Z

Content type: article

Language: en

Sources: [Nicolas Fränkel](<https://devfeed.tech/sources/nicolas-frankel.md>)

Topics: [Security](<https://devfeed.tech/topics/security.md>), [Java](<https://devfeed.tech/topics/java.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [systems](<https://devfeed.tech/topics/systems.md>)

Tags: [analysis](<https://devfeed.tech/tags/analysis.md>), [bytecode](<https://devfeed.tech/tags/bytecode.md>), [dirtychai](<https://devfeed.tech/tags/dirtychai.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [java](<https://devfeed.tech/tags/java.md>), [jgdms](<https://devfeed.tech/tags/jgdms.md>), [jini](<https://devfeed.tech/tags/jini.md>), [jvm](<https://devfeed.tech/tags/jvm.md>), [microservices](<https://devfeed.tech/tags/microservices.md>), [security](<https://devfeed.tech/tags/security.md>), [supply-chain](<https://devfeed.tech/tags/supply-chain.md>), [systems](<https://devfeed.tech/tags/systems.md>), [technical](<https://devfeed.tech/tags/technical.md>)

### AI overview

This article presents the Safe Codebase Audit Pipeline, or SCAP, for analyzing third-party Java JARs before clients deserialize objects from them. It focuses on supply-chain risks from malicious bytecode and blocking static initializers, and describes distributing the pipeline across hosts with separate responsibilities and restricted network access.

### Source excerpt

In Part 1, the minimal deployment showed constraints traveling with the proxy: authentication, encryption, hardened deserialization, all declared in configuration and enforced at the call boundary. The proxy is a JAR. That JAR was downloaded and unmarshalled before any constraint ran. That step is the earlier problem. Distributed Java systems that load remote code are vulnerable to supply chain compromise: an attacker can replace a legitimate JAR with one containing malicious bytecode.

## Security Baked Into the JVM: why fork Apache River and OpenJDK?

DevFeed: [Security Baked Into the JVM: why fork Apache River and OpenJDK?](<https://devfeed.tech/articles/security-baked-into-the-jvm-why-fork-apache-river-and-openjdk-18928.md>)

Original publisher: [Read original article](<https://blog.frankel.ch/security-baked-into-jvm/1/>)

Author: Peter Firmstone

Published: 2026-06-28T00:00:00Z

Content type: opinion

Language: en

Sources: [Nicolas Fränkel](<https://devfeed.tech/sources/nicolas-frankel.md>)

Topics: [Security](<https://devfeed.tech/topics/security.md>), [Java](<https://devfeed.tech/topics/java.md>), [openjdk](<https://devfeed.tech/topics/openjdk.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [Remote Procedure Call (RPC)](<https://devfeed.tech/topics/rpc.md>), [Networks](<https://devfeed.tech/topics/networks.md>)

Tags: [authorization](<https://devfeed.tech/tags/authorization.md>), [dirtychai](<https://devfeed.tech/tags/dirtychai.md>), [discovery](<https://devfeed.tech/tags/discovery.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [ipv6](<https://devfeed.tech/tags/ipv6.md>), [java](<https://devfeed.tech/tags/java.md>), [jgdms](<https://devfeed.tech/tags/jgdms.md>), [jini](<https://devfeed.tech/tags/jini.md>), [jvm](<https://devfeed.tech/tags/jvm.md>), [lock-free](<https://devfeed.tech/tags/lock-free.md>), [microservices](<https://devfeed.tech/tags/microservices.md>), [openjdk](<https://devfeed.tech/tags/openjdk.md>), [rpc](<https://devfeed.tech/tags/rpc.md>), [security](<https://devfeed.tech/tags/security.md>), [self-healing](<https://devfeed.tech/tags/self-healing.md>), [technical](<https://devfeed.tech/tags/technical.md>)

### AI overview

This article introduces DirtyChai, a community fork of OpenJDK that restores Java authorization infrastructure, and JGDMS, a security-hardened fork of Apache River for dynamically discoverable microservices over IPv6. It argues that distributed systems require security beyond network firewalls and outlines the projects' complementary roles, including authorization, service discovery, hardened deserialization, transport security, proxy trust verification, and codebase safety checks.

### Source excerpt

The more distributed a system, the harder it is to secure. Code crosses JVM boundaries. Objects are serialized across trust boundaries. Third-party proxies run inside your process. The usual answer is a network firewall. It helps, but it operates at the wrong level. Java 17 deprecated the SecurityManager, Java 24 put the final nail in its coffin. Most developers didn't notice.