diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 9626561..334cfed 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -1,7 +1,8 @@ name: Java CI - -on: [workflow_dispatch] - +on: + push: + tags: + - 'v*' jobs: build: runs-on: ubuntu-latest @@ -14,10 +15,11 @@ jobs: java-version: '8' distribution: 'adopt' - name: Build with Maven - run: mvn --batch-mode --update-snapshots verify + run: mvn -Drevision=${{github.ref_name}} --batch-mode --update-snapshots verify - uses: jfrog/setup-jfrog-cli@v1 - env: - JF_ARTIFACTORY_1: ${{ secrets.ARTIFACTORY_ACCESS_KEY }} - run: | - # Ping the server - jfrog rt ping \ No newline at end of file + mkdir ${{github.ref_name}} + cp target/*.jar ${{github.ref_name}}/. + jfrog rt u "${{github.ref_name}}/*.jar" akeyless-java/io/akeyless/cloudid/${{github.ref_name}}/ --url=https://akeyless.jfrog.io/artifactory --user=ci-user --password=${{ secrets.ARTIFACTORY_ACCESS_KEY }} + sed "s/\${revision}/${{github.ref_name}}/g" pom.xml >> target/cloudid-${{github.ref_name}}.pom + jfrog rt u "${{github.ref_name}}/*.pom" akeyless-java/io/akeyless/cloudid/${{github.ref_name}}/ --url=https://akeyless.jfrog.io/artifactory --user=ci-user --password=${{ secrets.ARTIFACTORY_ACCESS_KEY }} \ No newline at end of file diff --git a/.github/workflows/security_pr_scanner.yml b/.github/workflows/security_pr_scanner.yml new file mode 100644 index 0000000..e114480 --- /dev/null +++ b/.github/workflows/security_pr_scanner.yml @@ -0,0 +1,17 @@ +name: Security PR Scan + +on: [pull_request] + +jobs: + Scanning_with: + uses: akeylesslabs/akeyless-security/.github/workflows/reusable-scanner.yaml@main + strategy: + fail-fast: false + matrix: + scan_type: ["SAST", "SCA"] + with: + branch_name: ${{ github.head_ref }} + repository_name: ${{ github.repository }} + event_name: ${{ github.event_name }} + scan_type: ${{ matrix.scan_type }} + secrets: inherit \ No newline at end of file diff --git a/README.md b/README.md index e69de29..a308783 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,105 @@ +# akeyless-java-cloud-id + +Akeyless CloudId Provider + +The purpose of this package is to exteact the required "cloudid" to authenticate to akeyless using cloud authorization providers. + +For more information, please visit [http://akeyless.io](http://akeyless.io) + +## Publishing a new version +Tag the commit with a new tag and push to the repository. +The workflow will build and publish a new version to the artifactory repository. + +## Requirements + +Using the cloudid provider requires: +1. Java 1.8+ +2. Maven/Gradle + +## Installation + +### Maven users + +Add the following repository definition to your Maven settings file (default +`~/.m2/settings.xml`) or your POM file: + +```xml + + central + https://akeyless.jfrog.io/artifactory/akeyless-java + false + +``` + +Add this dependency to your project's POM: + +```xml + + io.akeyless + cloudid + Specify the CloudId package version here + +``` +To use akeyless java sdk, you should also add: +```xml + + io.akeyless + akeyless-java + Specify the SDK version here + +``` + +## Getting Started + +Please follow the [installation](#installation) instruction and execute the following Java code: + +```java +import io.akeyless.client.ApiException; +import io.akeyless.cloudid.CloudProviderFactory; +import io.akeyless.cloudid.CloudIdProvider; + +import io.akeyless.client.ApiClient; +import io.akeyless.client.Configuration; +import io.akeyless.client.model.*; +import io.akeyless.client.api.V2Api; + +public class Main { + public static void main(String[] argv) { + // Use azure_ad/aws_iam/gcp, according to your cloud provider + String accessType = "azure_ad"; + CloudIdProvider idProvider = CloudProviderFactory.getCloudIdProvider(accessType); + try { + String cloudId = idProvider.getCloudId(); + + ApiClient client = Configuration.getDefaultApiClient(); + client.setBasePath("https://api.akeyless.io"); + + V2Api api = new V2Api(client); + Auth auth = new Auth(); + auth.accessId(""); + auth.accessType(accessType); + auth.cloudId(cloudId); + + AuthOutput result = api.auth(auth); + + + ListItems listBody = new ListItems(); + listBody.setToken(result.getToken()); + ListItemsInPathOutput listOut = api.listItems(listBody); + System.out.println(listOut.getItems().size()); + } catch (ApiException e) { + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } catch (Exception e) { + System.err.println("Reason: " + e.getMessage()); + e.printStackTrace(); + } + } +} + ``` + +## Author +support@akeyless.io + diff --git a/cloudid.iml b/cloudid.iml index 4eb1aa3..64393b4 100644 --- a/cloudid.iml +++ b/cloudid.iml @@ -1,5 +1,6 @@ + diff --git a/pom.xml b/pom.xml index 77c4cea..f40afc1 100644 --- a/pom.xml +++ b/pom.xml @@ -3,10 +3,9 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - io.akeyless cloudid - 0.1.0 + ${revision} jar akeyless-cloud-id https://github.com/akeylesslabs/akeyless-java-cloud-id @@ -31,6 +30,7 @@ + 2.14.0 8 8 @@ -43,11 +43,18 @@ 1.5.3 - + com.fasterxml.jackson.core - jackson-core - 2.13.1 + jackson-databind + ${fasterxml_version} + + + + + com.fasterxml.jackson.dataformat + jackson-dataformat-cbor + ${fasterxml_version} @@ -55,6 +62,20 @@ com.amazonaws aws-java-sdk-core 1.12.169 + + + com.fasterxml.jackson.core + jackson-core + + + com.fasterxml.jackson.core + jackson-databind + + + com.fasterxml.jackson.dataformat + jackson-dataformat-cbor + + @@ -65,4 +86,27 @@ https://akeyless.jfrog.io/artifactory/akeyless-java + + + + + + maven-assembly-plugin + + + package + + single + + + + + + jar-with-dependencies + + false + + + + \ No newline at end of file diff --git a/src/main/java/io/akeyless/Main.java b/src/main/java/io/akeyless/Main.java deleted file mode 100644 index 490a05c..0000000 --- a/src/main/java/io/akeyless/Main.java +++ /dev/null @@ -1,18 +0,0 @@ -package io.akeyless; - -public class Main { - - public static void main(String[] args) { - if (args.length < 1) { - System.out.println("Please enter provider type"); - System.exit(1); - } - CloudIdProvider provider = CloudProviderFactory.getCloudIdProvider(args[0]); - try { - String cloudId = provider.getCloudId(); - System.out.println(cloudId); - } catch (Exception e) { - System.err.println(e.getMessage()); - } - } -} diff --git a/src/main/java/io/akeyless/AwsCloudIdProvider.java b/src/main/java/io/akeyless/cloudid/AwsCloudIdProvider.java similarity index 98% rename from src/main/java/io/akeyless/AwsCloudIdProvider.java rename to src/main/java/io/akeyless/cloudid/AwsCloudIdProvider.java index 144d7bb..32edcb7 100644 --- a/src/main/java/io/akeyless/AwsCloudIdProvider.java +++ b/src/main/java/io/akeyless/cloudid/AwsCloudIdProvider.java @@ -1,4 +1,4 @@ -package io.akeyless; +package io.akeyless.cloudid; import com.amazonaws.DefaultRequest; import com.amazonaws.auth.AWS4Signer; diff --git a/src/main/java/io/akeyless/AzureCloudIdProvider.java b/src/main/java/io/akeyless/cloudid/AzureCloudIdProvider.java similarity index 98% rename from src/main/java/io/akeyless/AzureCloudIdProvider.java rename to src/main/java/io/akeyless/cloudid/AzureCloudIdProvider.java index a7b5e50..06c9c51 100644 --- a/src/main/java/io/akeyless/AzureCloudIdProvider.java +++ b/src/main/java/io/akeyless/cloudid/AzureCloudIdProvider.java @@ -1,4 +1,4 @@ -package io.akeyless; +package io.akeyless.cloudid; import java.io.InputStream; import java.net.HttpURLConnection; diff --git a/src/main/java/io/akeyless/CloudIdProvider.java b/src/main/java/io/akeyless/cloudid/CloudIdProvider.java similarity index 73% rename from src/main/java/io/akeyless/CloudIdProvider.java rename to src/main/java/io/akeyless/cloudid/CloudIdProvider.java index f2c78c4..a53353c 100644 --- a/src/main/java/io/akeyless/CloudIdProvider.java +++ b/src/main/java/io/akeyless/cloudid/CloudIdProvider.java @@ -1,4 +1,4 @@ -package io.akeyless; +package io.akeyless.cloudid; public interface CloudIdProvider { String getCloudId() throws Exception; diff --git a/src/main/java/io/akeyless/CloudProviderFactory.java b/src/main/java/io/akeyless/cloudid/CloudProviderFactory.java similarity index 94% rename from src/main/java/io/akeyless/CloudProviderFactory.java rename to src/main/java/io/akeyless/cloudid/CloudProviderFactory.java index fa08a13..77d8c25 100644 --- a/src/main/java/io/akeyless/CloudProviderFactory.java +++ b/src/main/java/io/akeyless/cloudid/CloudProviderFactory.java @@ -1,4 +1,4 @@ -package io.akeyless; +package io.akeyless.cloudid; import java.util.Objects; diff --git a/src/main/java/io/akeyless/GcpCloudIdProvider.java b/src/main/java/io/akeyless/cloudid/GcpCloudIdProvider.java similarity index 95% rename from src/main/java/io/akeyless/GcpCloudIdProvider.java rename to src/main/java/io/akeyless/cloudid/GcpCloudIdProvider.java index 56f40eb..8547a95 100644 --- a/src/main/java/io/akeyless/GcpCloudIdProvider.java +++ b/src/main/java/io/akeyless/cloudid/GcpCloudIdProvider.java @@ -1,4 +1,4 @@ -package io.akeyless; +package io.akeyless.cloudid; import com.google.auth.oauth2.IdToken; import com.google.auth.oauth2.IdTokenCredentials; @@ -6,7 +6,6 @@ import com.google.auth.oauth2.GoogleCredentials; import java.nio.charset.StandardCharsets; -import java.util.ArrayList; import java.util.Arrays; import java.util.Base64; diff --git a/src/main/resources/META-INF/MANIFEST.MF b/src/main/resources/META-INF/MANIFEST.MF deleted file mode 100644 index 2bf19d6..0000000 --- a/src/main/resources/META-INF/MANIFEST.MF +++ /dev/null @@ -1,3 +0,0 @@ -Manifest-Version: 1.0 -Main-Class: io.akeyless.Main -