{"id":13668685,"url":"https://github.com/spiffe/java-spiffe","last_synced_at":"2025-04-09T14:14:27.762Z","repository":{"id":37078248,"uuid":"134601948","full_name":"spiffe/java-spiffe","owner":"spiffe","description":"Java library for SPIFFE support ","archived":false,"fork":false,"pushed_at":"2025-04-01T21:37:11.000Z","size":986,"stargazers_count":35,"open_issues_count":8,"forks_count":22,"subscribers_count":13,"default_branch":"main","last_synced_at":"2025-04-02T12:13:52.131Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/spiffe.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-05-23T17:10:04.000Z","updated_at":"2025-03-15T14:12:43.000Z","dependencies_parsed_at":"2023-02-10T05:45:17.623Z","dependency_job_id":"88cca3ab-4243-4669-a832-01087ce2868a","html_url":"https://github.com/spiffe/java-spiffe","commit_stats":{"total_commits":391,"total_committers":15,"mean_commits":"26.066666666666666","dds":0.2915601023017903,"last_synced_commit":"d629678fe5f6a558a1b0dc56347498688b5e487d"},"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spiffe%2Fjava-spiffe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spiffe%2Fjava-spiffe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spiffe%2Fjava-spiffe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spiffe%2Fjava-spiffe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/spiffe","download_url":"https://codeload.github.com/spiffe/java-spiffe/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248054193,"owners_count":21039952,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T08:00:46.793Z","updated_at":"2025-04-09T14:14:27.739Z","avatar_url":"https://github.com/spiffe.png","language":"Java","funding_links":[],"categories":["Blogs","SPIFFE Libraries"],"sub_categories":["SDK"],"readme":"# Java SPIFFE Library\n\n[![Build Status](https://github.com/spiffe/java-spiffe/actions/workflows/build.yml/badge.svg?branch=main)](https://github.com/spiffe/java-spiffe/actions/workflows/build.yml?query=branch%3Amain)\n[![Coverage Status](https://coveralls.io/repos/github/spiffe/java-spiffe/badge.svg)](https://coveralls.io/github/spiffe/java-spiffe?branch=main)\n\n## Overview\n\nThe JAVA-SPIFFE library provides functionality to interact with the Workload API to fetch X.509 and JWT SVIDs and Bundles, \nand a Java Security Provider implementation to be plugged into the Java Security architecture. This is essentially \nan X.509-SVID based KeyStore and TrustStore implementation that handles the certificates in memory and receives the updates \nasynchronously from the Workload API. The KeyStore handles the Certificate chain and Private Key to prove identity \nin a TLS connection, and the TrustStore handles the trusted bundles (supporting federated bundles) and performs \npeer's certificate and SPIFFE ID verification. \n\nThis library contains three modules:\n\n* [java-spiffe-core](java-spiffe-core/README.md): Core functionality to interact with the Workload API, and to process and validate \nX.509 and JWT SVIDs and bundles.\n\n* [java-spiffe-provider](java-spiffe-provider/README.md): Java Provider implementation.\n\n* [java-spiffe-helper](java-spiffe-helper/README.md): Helper to store X.509 SVIDs and Bundles in Java Keystores in disk.\n\n**Supports Java 8+**\n\nDownload\n--------\n\nThe JARs can be downloaded from [Maven Central](https://search.maven.org/search?q=g:io.spiffe%20AND%20v:0.8.11). \n\nThe dependencies can be added to `pom.xml`\n\nTo import the `java-spiffe-provider` component: \n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003eio.spiffe\u003c/groupId\u003e\n  \u003cartifactId\u003ejava-spiffe-provider\u003c/artifactId\u003e\n  \u003cversion\u003e0.8.11\u003c/version\u003e\n\u003c/dependency\u003e\n```\nThe `java-spiffe-provider` component imports the `java-spiffe-core` component.\n\nTo just import the `java-spiffe-core` component:\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003eio.spiffe\u003c/groupId\u003e\n  \u003cartifactId\u003ejava-spiffe-core\u003c/artifactId\u003e\n  \u003cversion\u003e0.8.11\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\nUsing Gradle:\n\nImport `java-spiffe-provider`:\n```gradle\nimplementation group: 'io.spiffe', name: 'java-spiffe-provider', version: '0.8.11'\n```\n\nImport `java-spiffe-core`:\n```gradle\nimplementation group: 'io.spiffe', name: 'java-spiffe-core', version: '0.8.11'\n```\n\n### MacOS Support\n\n#### x86 Architecture\n\nIn case run on a osx-x86 architecture, add to your `pom.xml`:\n\n```xml\n\n\u003cdependency\u003e\n  \u003cgroupId\u003eio.spiffe\u003c/groupId\u003e\n  \u003cartifactId\u003egrpc-netty-macos\u003c/artifactId\u003e\n  \u003cversion\u003e0.8.11\u003c/version\u003e\n  \u003cscope\u003eruntime\u003c/scope\u003e\n\u003c/dependency\u003e\n```\n\nUsing Gradle:\n```gradle\nruntimeOnly group: 'io.spiffe', name: 'grpc-netty-macos', version: '0.8.11'\n```\n\n#### Aarch64 (M1) Architecture\n\nIf you are running the aarch64 architecture (M1 CPUs), add to your `pom.xml`:\n\n```xml\n\n\u003cdependency\u003e\n  \u003cgroupId\u003eio.spiffe\u003c/groupId\u003e\n  \u003cartifactId\u003egrpc-netty-macos-aarch64\u003c/artifactId\u003e\n  \u003cversion\u003e0.8.11\u003c/version\u003e\n  \u003cscope\u003eruntime\u003c/scope\u003e\n\u003c/dependency\u003e\n```\n\nUsing Gradle:\n\n```gradle\nruntimeOnly group: 'io.spiffe', name: 'grpc-netty-macos-aarch64', version: '0.8.11'\n```\n\n*Caveat: not all OpenJDK distributions are aarch64 native, make sure your JDK is also running\nnatively*\n\n\n## Java SPIFFE Helper\n\nThe `java-spiffe-helper` module manages X.509 SVIDs and Bundles in Java Keystores.\n\n### Docker Image\n\nPull the `java-spiffe-helper` image from `ghcr.io/spiffe/java-spiffe-helper:0.8.11`.\n\nFor more details, see [java-spiffe-helper/README.md](java-spiffe-helper/README.md).\n\n## Build the JARs\n\nOn Linux or MacOS, run:\n\n```\n $ ./gradlew assemble\n BUILD SUCCESSFUL \n```\n\nAll `jar` files are placed in `build/libs` folder.  \n\n#### Jars that include all dependencies \n\nFor the module [java-spiffe-provider](java-spiffe-provider), a fat jar is generated with the classifier `-all-[os-classifier]`.\n\nFor the module [java-spiffe-helper](java-spiffe-helper), a fat jar is generated with the classifier `[os-classifier]`.\n\nBased on the OS where the build is run, the `[os-classifier]` will be:\n\n* `-linux-x86_64` for Linux\n* `-osx-x86_64` for MacOS with x86_64 architecture\n* `-osx-aarch64` for MacOS with aarch64 architecture (M1)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspiffe%2Fjava-spiffe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspiffe%2Fjava-spiffe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspiffe%2Fjava-spiffe/lists"}