LinID Identity Manager API (linid-im-api) provides a plugin-based, dynamic-entity REST service with external configuration, plugins, and translations.
The application reads settings from Spring properties, typically via environment variables or a configuration file (
application.properties or application.yaml). Key properties:
-
configuration.path=${CONFIGURATION_PATH}Path to the YAML configuration file defining entities, providers, routes, tasks, etc. Example:configuration.path=/home/config/config.yamlYou can set the environment variable before launch:
export CONFIGURATION_PATH=/home/config/config.yaml -
plugin.loader.path=${PLUGIN_LOADER_PATH}Directory where plugin JARs are located. The service will scan this folder at startup (and possibly at runtime). Example:plugin.loader.path=/home/pluginsEnvironment variable:
export PLUGIN_LOADER_PATH=/home/plugins -
i18n.external.path=${I18N_EXTERNAL_PATH}Directory containing external i18n JSON files (e.g.,en.json,fr.json). These translations are merged according to the merge order. Example:i18n.external.path=/home/i18nEnvironment variable:
export I18N_EXTERNAL_PATH=/home/i18n -
i18n.merge.order=${I18N_MERGE_ORDER}Comma-separated list defining merge precedence for translations. Default:plugin,external,internal. Example:i18n.merge.order=plugin,external,internalEnvironment variable:
export I18N_MERGE_ORDER="plugin,external,internal"
-
authentication.accept.allow.all=${AUTHENTICATION_ACCEPT_ALLOW_ALL:false}Boolean flag to accept using the plugin that authenticates all requests without restrictions. Default:falseExample:authentication.accept.allow.all=trueEnvironment variable:
export AUTHENTICATION_ACCEPT_ALLOW_ALL=true -
copyright.mode=${COPYRIGHT_MODE:default}Defines the copyright mode. Possible values:default: applies default copyright enforcement.custom: applies a custom copyright message.none: disables copyright enforcement. Default:defaultExample:
copyright.mode=customEnvironment variable:
export COPYRIGHT_MODE=custom -
copyright.custom=${COPYRIGHT_CUSTOM:Your copyright here}Custom copyright message to apply whencopyright.mode=custom. Example:copyright.custom=Your copyright hereEnvironment variable:
export COPYRIGHT_CUSTOM="Your copyright here"
In a Spring Boot application.properties or application.yaml, you might have:
configuration.path=/home/config/config.yaml
plugin.loader.path=/home/plugins
i18n.external.path=/home/i18n
i18n.merge.order=plugin,external,internal
authentication.accept.allow.all=false
copyright.mode=default
copyright.custom=Your copyright hereThe project provides different environments under the docker folder, each with its own docker-compose.yml and .env
file.
docker/dev/docker/integration/docker/production/
You can build and run the project using either Maven or Docker.
From the project root (where pom.xml resides), simply run:
mvn clean packageThis produces an executable JAR under target/, e.g. linid-im-api-<version>.jar.
To run:
export CONFIGURATION_PATH=/home/config/config.yaml
export PLUGIN_LOADER_PATH=/home/plugins
export I18N_EXTERNAL_PATH=/home/i18n
export I18N_MERGE_ORDER="plugin,external,internal"
java -jar target/linid-im-api-<version>.jarA Docker image can encapsulate the built JAR. Expect a Dockerfile that copies the JAR and sets entrypoint to
java -jar .... To run with external config, plugins, translations, mount host directories as volumes.
docker build -f docker/Dockerfile -t linid-im-api .Start the desired environment:
docker compose -f docker/prod/docker-compose.yml --env-file docker/prod/.env upThe project defines three environments:
devintegrationproduction
All related configurations are located in the docker/ folder.
📌 Each environment (dev, integration, production) has its own .env file inside the docker/<env> folder. These files
are loaded automatically when using Docker Compose for that environment.
🚨 For production deployment, make sure to properly configure the docker/production/.env file with the correct
values before running the application.