IAM

Manage Projects and Access Policies with IAM Service.

Install Dependency

Package: pkg:maven/com.affinidi.tdk/iam.client

<dependency>
    <groupId>com.affinidi.tdk</groupId>
    <artifactId>iam.client</artifactId>
    <version><version_number></version>
</dependency>

Check the latest version on the Maven Central repository or view the source on GitHub.

Classes and Methods

Projects API

Use the Projects API to manage your projects including providing access to other users on your projects.

addPrincipalToProject

Adds a principal to the project to grant access.

Parameters

addUserToProjectInput AddUserToProjectInput Required
Principal ID and principal type (user or token) to add to the project.

Example

import com.affinidi.tdk.iam.client.ApiClient;
import com.affinidi.tdk.iam.client.Configuration;
import com.affinidi.tdk.iam.client.apis.ProjectsApi;
import com.affinidi.tdk.iam.client.auth.ApiKeyAuth;
import com.affinidi.tdk.iam.client.models.AddUserToProjectInput;

try {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
    ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());

    ProjectsApi apiInstance = new ProjectsApi(defaultClient);

    AddUserToProjectInput requestInput = new AddUserToProjectInput()
        .principalId("<PAT_ID>")
        .principalType("token");

    apiInstance.addPrincipalToProject(requestInput);
} catch (Exception e) {
    e.printStackTrace();
}

createProject

Creates a project for your account.

Parameters

createProjectInput CreateProjectInput Required
Project name and description.

Example

import com.affinidi.tdk.iam.client.ApiClient;
import com.affinidi.tdk.iam.client.Configuration;
import com.affinidi.tdk.iam.client.apis.ProjectsApi;
import com.affinidi.tdk.iam.client.auth.ApiKeyAuth;
import com.affinidi.tdk.iam.client.models.CreateProjectInput;
import com.affinidi.tdk.iam.client.models.ProjectDto;

try {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
    ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());

    ProjectsApi apiInstance = new ProjectsApi(defaultClient);

    CreateProjectInput requestInput = new CreateProjectInput()
        .name("project_name")
        .description("project_description");

    ProjectDto response = apiInstance.createProject(requestInput);
    System.out.println(response.toString());
} catch (Exception e) {
    e.printStackTrace();
}

deletePrincipalFromProject

Removes a principal (user or PAT) from the project.

Parameters

principalId String Required
ID of the user or Personal Access Token (PAT).
principalType String Required
Type of the principal: user for a user or token for a PAT.

Example

import com.affinidi.tdk.iam.client.ApiClient;
import com.affinidi.tdk.iam.client.Configuration;
import com.affinidi.tdk.iam.client.apis.ProjectsApi;
import com.affinidi.tdk.iam.client.auth.ApiKeyAuth;

try {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
    ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());

    ProjectsApi apiInstance = new ProjectsApi(defaultClient);
    apiInstance.deletePrincipalFromProject("<PAT_ID>", "token");
} catch (Exception e) {
    e.printStackTrace();
}

listPrincipalsOfProject

Returns the list of principals assigned to the project.

No parameters required.

Example

import com.affinidi.tdk.iam.client.ApiClient;
import com.affinidi.tdk.iam.client.Configuration;
import com.affinidi.tdk.iam.client.apis.ProjectsApi;
import com.affinidi.tdk.iam.client.auth.ApiKeyAuth;
import com.affinidi.tdk.iam.client.models.UserList;

try {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
    ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());

    ProjectsApi apiInstance = new ProjectsApi(defaultClient);
    UserList response = apiInstance.listPrincipalsOfProject(100, null);
    System.out.println(response.toString());
} catch (Exception e) {
    e.printStackTrace();
}

listProject

Returns the list of projects for the account.

No parameters required.

Example

import com.affinidi.tdk.iam.client.ApiClient;
import com.affinidi.tdk.iam.client.Configuration;
import com.affinidi.tdk.iam.client.apis.ProjectsApi;
import com.affinidi.tdk.iam.client.auth.ApiKeyAuth;
import com.affinidi.tdk.iam.client.models.ProjectList;

try {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
    ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());

    ProjectsApi apiInstance = new ProjectsApi(defaultClient);
    ProjectList response = apiInstance.listProject(10, null);
    System.out.println(response.toString());
} catch (Exception e) {
    e.printStackTrace();
}

updateProject

Updates the project details.

Parameters

projectId String Required
ID of the project to update.
updateProjectInput UpdateProjectInput Required
Updated project name and description.

Example

import com.affinidi.tdk.iam.client.ApiClient;
import com.affinidi.tdk.iam.client.Configuration;
import com.affinidi.tdk.iam.client.apis.ProjectsApi;
import com.affinidi.tdk.iam.client.auth.ApiKeyAuth;
import com.affinidi.tdk.iam.client.models.ProjectDto;
import com.affinidi.tdk.iam.client.models.UpdateProjectInput;

try {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
    ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());

    ProjectsApi apiInstance = new ProjectsApi(defaultClient);

    UpdateProjectInput requestInput = new UpdateProjectInput()
        .name("Project Name")
        .description("Project Description");

    ProjectDto response = apiInstance.updateProject("<PROJECT_ID>", requestInput);
    System.out.println(response.toString());
} catch (Exception e) {
    e.printStackTrace();
}

Policies API

Use the Policies API to manage access to your projects and related resources for other users.

getPolicies

Retrieves the policy attached to a principal.

Parameters

principalId String Required
ID of the user or Personal Access Token (PAT).
principalType String Required
Type of the principal: user for a user or token for a PAT.

Example

import com.affinidi.tdk.iam.client.ApiClient;
import com.affinidi.tdk.iam.client.Configuration;
import com.affinidi.tdk.iam.client.apis.PoliciesApi;
import com.affinidi.tdk.iam.client.auth.ApiKeyAuth;
import com.affinidi.tdk.iam.client.models.PolicyDto;

try {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
    ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());

    PoliciesApi apiInstance = new PoliciesApi(defaultClient);
    PolicyDto response = apiInstance.getPolicies("<PAT_ID>", "token");
    System.out.println(response.toString());
} catch (Exception e) {
    e.printStackTrace();
}

updatePolicies

Updates the policy for a principal.

Parameters

principalId String Required
ID of the user or Personal Access Token (PAT).
principalType String Required
Type of the principal: user for a user or token for a PAT.
policyDto PolicyDto Required
Policy rules with version and statement array.

Example

import com.affinidi.tdk.iam.client.ApiClient;
import com.affinidi.tdk.iam.client.Configuration;
import com.affinidi.tdk.iam.client.apis.PoliciesApi;
import com.affinidi.tdk.iam.client.auth.ApiKeyAuth;
import com.affinidi.tdk.iam.client.models.PolicyDto;
import com.affinidi.tdk.iam.client.models.PolicyStatementDto;

try {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
    ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());

    PoliciesApi apiInstance = new PoliciesApi(defaultClient);

    PolicyDto policyDto = new PolicyDto()
        .version("2022-12-15")
        .statement(new ArrayList<>(List.of(
            new PolicyStatementDto()
                .action(List.of("*"))
                .principal(List.of("<PAT_ID>"))
                .resource(List.of("*"))
                .effect("Allow")
        )));

    PolicyDto response = apiInstance.updatePolicies("<PAT_ID>", "token", policyDto);
    System.out.println(response.toString());
} catch (Exception e) {
    e.printStackTrace();
}

Secure Token Exchange (STS) API

Use the STS (Secure Token Exchange) API to create a Project Scoped Token and get the current session information.

createProjectScopedToken

Creates a project-scoped token to access resources in the project.

Parameters

createProjectScopedTokenInput CreateProjectScopedTokenInput Required
Project ID for which to generate the token.

Example

import com.affinidi.tdk.iam.client.ApiClient;
import com.affinidi.tdk.iam.client.Configuration;
import com.affinidi.tdk.iam.client.apis.StsApi;
import com.affinidi.tdk.iam.client.auth.ApiKeyAuth;
import com.affinidi.tdk.iam.client.models.CreateProjectScopedTokenInput;
import com.affinidi.tdk.iam.client.models.CreateProjectScopedTokenOutput;

try {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
    ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());

    StsApi apiInstance = new StsApi(defaultClient);

    CreateProjectScopedTokenInput requestInput = new CreateProjectScopedTokenInput()
        .projectId("<PROJECT_ID>");

    CreateProjectScopedTokenOutput response = apiInstance.createProjectScopedToken(requestInput);
    System.out.println(response.toString());
} catch (Exception e) {
    e.printStackTrace();
}

whoami

Retrieves the principal information of the current user.

No parameters required.

Example

import com.affinidi.tdk.iam.client.ApiClient;
import com.affinidi.tdk.iam.client.Configuration;
import com.affinidi.tdk.iam.client.apis.StsApi;
import com.affinidi.tdk.iam.client.auth.ApiKeyAuth;
import com.affinidi.tdk.iam.client.models.WhoamiDto;

try {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
    ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());

    StsApi apiInstance = new StsApi(defaultClient);
    WhoamiDto response = apiInstance.whoami();
    System.out.println(response.toString());
} catch (Exception e) {
    e.printStackTrace();
}

Tokens API

Use the Tokens API to create a Personal Access Token (PAT) to call Affinidi services on your behalf. Alternatively, use the Token command from Affinidi CLI.

createToken

Creates a Personal Access Token.

Parameters

createTokenInput CreateTokenInput Required
PAT name, authentication method type, signing algorithm, and public key information.

Example

import com.affinidi.tdk.iam.client.ApiClient;
import com.affinidi.tdk.iam.client.Configuration;
import com.affinidi.tdk.iam.client.apis.TokensApi;
import com.affinidi.tdk.iam.client.auth.ApiKeyAuth;
import com.affinidi.tdk.iam.client.models.CreateTokenInput;
import com.affinidi.tdk.iam.client.models.TokenAuthenticationMethodDto;
import com.affinidi.tdk.iam.client.models.TokenPrivateKeyAuthenticationMethodDtoPublicKeyInfo;
import com.affinidi.tdk.iam.client.models.TokenAuthenticationMethodDto.SigningAlgorithmEnum;
import com.affinidi.tdk.iam.client.models.TokenAuthenticationMethodDto.TypeEnum;
import com.affinidi.tdk.iam.client.models.TokenDto;

try {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
    ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());

    TokensApi apiInstance = new TokensApi(defaultClient);

    CreateTokenInput requestInput = new CreateTokenInput()
        .name("token_name")
        .authenticationMethod(new TokenAuthenticationMethodDto()
            .type(TypeEnum.PRIVATE_KEY)
            .signingAlgorithm(SigningAlgorithmEnum.RS256)
            .publicKeyInfo(new TokenPrivateKeyAuthenticationMethodDtoPublicKeyInfo()));

    TokenDto response = apiInstance.createToken(requestInput);
    System.out.println(response.toString());
} catch (Exception e) {
    e.printStackTrace();
}

deleteToken

Deletes a Personal Access Token.

Parameters

tokenId UUID Required
ID of the Personal Access Token to delete.

Example

import java.util.UUID;
import com.affinidi.tdk.iam.client.ApiClient;
import com.affinidi.tdk.iam.client.Configuration;
import com.affinidi.tdk.iam.client.apis.TokensApi;
import com.affinidi.tdk.iam.client.auth.ApiKeyAuth;

try {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
    ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());

    TokensApi apiInstance = new TokensApi(defaultClient);
    apiInstance.deleteToken(UUID.fromString("<TOKEN_ID>"));
} catch (Exception e) {
    e.printStackTrace();
}

getToken

Retrieves the Personal Access Token details.

Parameters

tokenId UUID Required
ID of the Personal Access Token to retrieve.

Example

import java.util.UUID;
import com.affinidi.tdk.iam.client.ApiClient;
import com.affinidi.tdk.iam.client.Configuration;
import com.affinidi.tdk.iam.client.apis.TokensApi;
import com.affinidi.tdk.iam.client.auth.ApiKeyAuth;
import com.affinidi.tdk.iam.client.models.TokenDto;

try {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
    ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());

    TokensApi apiInstance = new TokensApi(defaultClient);
    TokenDto response = apiInstance.getToken(UUID.fromString("<TOKEN_ID>"));
    System.out.println(response.toString());
} catch (Exception e) {
    e.printStackTrace();
}

listToken

Returns the list of Personal Access Tokens.

No parameters required.

Example

import com.affinidi.tdk.iam.client.ApiClient;
import com.affinidi.tdk.iam.client.Configuration;
import com.affinidi.tdk.iam.client.apis.TokensApi;
import com.affinidi.tdk.iam.client.auth.ApiKeyAuth;
import com.affinidi.tdk.iam.client.models.TokenList;

try {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
    ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());

    TokensApi apiInstance = new TokensApi(defaultClient);
    TokenList response = apiInstance.listToken(10, null);
    System.out.println(response.toString());
} catch (Exception e) {
    e.printStackTrace();
}

updateToken

Updates an existing Personal Access Token.

Parameters

tokenId UUID Required
ID of the Personal Access Token to update.
updateTokenInput UpdateTokenInput Required
Updated PAT name and authentication method.

Example

import java.util.UUID;
import com.affinidi.tdk.iam.client.ApiClient;
import com.affinidi.tdk.iam.client.Configuration;
import com.affinidi.tdk.iam.client.apis.TokensApi;
import com.affinidi.tdk.iam.client.auth.ApiKeyAuth;
import com.affinidi.tdk.iam.client.models.TokenDto;
import com.affinidi.tdk.iam.client.models.TokenPrivateKeyAuthenticationMethodDtoPublicKeyInfo;
import com.affinidi.tdk.iam.client.models.UpdateTokenInput;
import com.affinidi.tdk.iam.client.models.UpdateTokenPrivateKeyAuthenticationMethodDto;
import com.affinidi.tdk.iam.client.models.UpdateTokenPrivateKeyAuthenticationMethodDto.SigningAlgorithmEnum;
import com.affinidi.tdk.iam.client.models.UpdateTokenPrivateKeyAuthenticationMethodDto.TypeEnum;

try {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
    ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());

    TokensApi apiInstance = new TokensApi(defaultClient);

    UpdateTokenInput requestInput = new UpdateTokenInput()
        .name("<TOKEN_NAME>")
        .authenticationMethod(new UpdateTokenPrivateKeyAuthenticationMethodDto()
            .type(TypeEnum.PRIVATE_KEY)
            .signingAlgorithm(SigningAlgorithmEnum.RS256)
            .publicKeyInfo(new TokenPrivateKeyAuthenticationMethodDtoPublicKeyInfo()));

    TokenDto response = apiInstance.updateToken(UUID.fromString("<TOKEN_ID>"), requestInput);
    System.out.println(response.toString());
} catch (Exception e) {
    e.printStackTrace();
}