Sdk installation
Maven repositories
The Kiwa Sdk is distributed through Sphereon's Nexus repository. Nexus is available at https://nexus.sphereon.com and hosts both the Kiwa Sdk and the Open-Source Identity Development Kit.
All Open-Source software can be found in the following Maven repositories:
- https://nexus.sphereon.com/content/repositories/sphereon-opensource-releases/
- https://nexus.sphereon.com/content/repositories/sphereon-opensource-snapshots/
Snapshot versions are not guaranteed to be stable as they are built from the latest code.
Kiwa SDK repositories need an account
Although Kiwa customers get source code access to the Kiwa SDK, the Kiwa SDK itself is not open source and thus is not available in the above Maven repositories. The Kiwa SDK is available through the Sphereon Nexus repositories below
- https://nexus.sphereon.com/content/repositories/kiwa-releases/
- https://nexus.sphereon.com/content/repositories/kiwa-snapshots/
Groups Ids and artifacts
The Kiwa SDK is using the following group Id for its artifacts:
- com.sphereon.kiwa
The SDK artifacts are:
- com.sphereon.kiwa:kiwa-holder-sdk-public: The API's, interfaces and common code. All code depends on the interfaces defined in this package.
- com.sphereon.kiwa:kiwa-holder-sdk-impl: The implementation of the API's. This code is being injected as actual implementation of the interfaces. The artifact depends and exports the public API's.
- com.sphereon.kiwa:kiwa-holder-sdk-all: Provides pre-build Dependency components and depends on the public and implementation artifacts.
Setting up authentication
To access the Kiwa SDK repositories, you need to obtain Nexus credentials from Sphereon. Contact Sphereon to receive your username and password for accessing the kiwa-releases and kiwa-snapshots repositories.
Maven authentication
For Maven, add your Nexus credentials to your ~/.m2/settings.xml file:
<settings>
<servers>
<server>
<id>kiwa-releases</id>
<username>YOUR_NEXUS_USERNAME</username>
<password>YOUR_NEXUS_PASSWORD</password>
</server>
<server>
<id>kiwa-snapshots</id>
<username>YOUR_NEXUS_USERNAME</username>
<password>YOUR_NEXUS_PASSWORD</password>
</server>
</servers>
</settings>
Gradle authentication
For Gradle, add your Nexus credentials to your ~/.gradle/gradle.properties file:
nexusUsername=YOUR_NEXUS_USERNAME
nexusPassword=YOUR_NEXUS_PASSWORD
Using dependencies in your project
Maven configuration
Add the Kiwa repositories and dependencies to your pom.xml:
<project>
<repositories>
<repository>
<id>kiwa-releases</id>
<url>https://nexus.sphereon.com/content/repositories/kiwa-releases/</url>
</repository>
<repository>
<id>kiwa-snapshots</id>
<url>https://nexus.sphereon.com/content/repositories/kiwa-snapshots/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<dependencies>
<!-- Use the all-in-one dependency for the complete SDK with components -->
<dependency>
<groupId>com.sphereon.kiwa</groupId>
<artifactId>kiwa-holder-sdk-all</artifactId>
<version>0.6.0</version>
</dependency>
<!-- Or use the SDK implementation without components -->
<dependency>
<groupId>com.sphereon.kiwa</groupId>
<artifactId>kiwa-holder-sdk-impl</artifactId>
<version>0.6.0</version>
</dependency>
</dependencies>
</project>
Gradle configuration
Add the Kiwa repositories and dependencies to your build.gradle:
repositories {
maven {
url 'https://nexus.sphereon.com/content/repositories/kiwa-releases/'
credentials {
username = project.findProperty('nexusUsername') ?: System.getenv('NEXUS_USERNAME')
password = project.findProperty('nexusPassword') ?: System.getenv('NEXUS_PASSWORD')
}
}
maven {
url 'https://nexus.sphereon.com/content/repositories/kiwa-snapshots/'
credentials {
username = project.findProperty('nexusUsername') ?: System.getenv('NEXUS_USERNAME')
password = project.findProperty('nexusPassword') ?: System.getenv('NEXUS_PASSWORD')
}
}
}
dependencies {
// Use the all-in-one dependency for the complete SDK
implementation 'com.sphereon.kiwa:kiwa-holder-sdk-all:0.6.0'
// Or use individual dependencies
implementation 'com.sphereon.kiwa:kiwa-holder-sdk-public:0.6.0'
implementation 'com.sphereon.kiwa:kiwa-holder-sdk-impl:0.6.0'
}
For Gradle Kotlin DSL (build.gradle.kts):
repositories {
maven {
url = uri("https://nexus.sphereon.com/content/repositories/kiwa-releases/")
credentials {
username = project.findProperty("nexusUsername") as String? ?: System.getenv("NEXUS_USERNAME")
password = project.findProperty("nexusPassword") as String? ?: System.getenv("NEXUS_PASSWORD")
}
}
maven {
url = uri("https://nexus.sphereon.com/content/repositories/kiwa-snapshots/")
credentials {
username = project.findProperty("nexusUsername") as String? ?: System.getenv("NEXUS_USERNAME")
password = project.findProperty("nexusPassword") as String? ?: System.getenv("NEXUS_PASSWORD")
}
}
}
dependencies {
// Use the all-in-one dependency for the complete SDK
implementation("com.sphereon.kiwa:kiwa-holder-sdk-all:0.6.0")
// Or use individual dependencies
implementation("com.sphereon.kiwa:kiwa-holder-sdk-public:0.6.0")
implementation("com.sphereon.kiwa:kiwa-holder-sdk-impl:0.6.0")
}
Replace 0.6.0 with the desired version of the Kiwa SDK. For snapshot versions, use a version like 0.6.0-SNAPSHOT.
Using local binaries
If you prefer to download the binaries manually or cannot access the Nexus repository directly, you can use local file dependencies.
Obtaining binaries manually
- Contact Sphereon to receive the JAR files for the Kiwa SDK artifacts
- Alternatively, if you have Nexus access, download the binaries directly from the next URLs or from the Nexus UI:
- Save the JAR files to a local directory in your project (e.g.,
libs/folder)
Maven local file dependencies
Add local file dependencies to your pom.xml:
<dependencies>
<dependency>
<groupId>com.sphereon.kiwa</groupId>
<artifactId>kiwa-holder-sdk-all</artifactId>
<version>0.6.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/libs/kiwa-holder-sdk-all-0.6.0.jar</systemPath>
</dependency>
<!-- Or use individual dependencies -->
<dependency>
<groupId>com.sphereon.kiwa</groupId>
<artifactId>kiwa-holder-sdk-public</artifactId>
<version>0.6.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/libs/kiwa-holder-sdk-public-0.6.0.jar</systemPath>
</dependency>
<dependency>
<groupId>com.sphereon.kiwa</groupId>
<artifactId>kiwa-holder-sdk-impl</artifactId>
<version>0.6.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/libs/kiwa-holder-sdk-impl-0.6.0.jar</systemPath>
</dependency>
</dependencies>
Gradle local file dependencies
Add local file dependencies to your build.gradle:
dependencies {
// Use the all-in-one dependency for the complete SDK
implementation files('libs/kiwa-holder-sdk-all-0.6.0.jar')
// Or use individual dependencies
implementation files('libs/kiwa-holder-sdk-public-0.6.0.jar')
implementation files('libs/kiwa-holder-sdk-impl-0.6.0.jar')
}
For Gradle Kotlin DSL (build.gradle.kts):
dependencies {
// Use the all-in-one dependency for the complete SDK
implementation(files("libs/kiwa-holder-sdk-all-0.6.0.jar"))
// Or use individual dependencies
implementation(files("libs/kiwa-holder-sdk-public-0.6.0.jar"))
implementation(files("libs/kiwa-holder-sdk-impl-0.6.0.jar"))
}
Alternatively, you can include all JARs from a directory:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
}
Or in Kotlin DSL:
dependencies {
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
}
When using system scope dependencies in Maven or local file dependencies, ensure that the JAR files are committed to version control or documented clearly so other developers can obtain them.