i2scim

Developer Notes

These notes are for those developers who wish to work with the i2scim project directly. An overview of maven modules is provided along with build and test instructions.

Introduction

The i2scim project is built using the Quarkus.io platform. The project is broken into a series of maven modules for usage in 3 ways:

  1. As SCIM Protocol microservice front-ending a database (MongoDB).
  2. As a SCIM server with built-in memory index and disk based storage.
  3. As a SCIM client library for building and manipulating SCIM resources on a service provider.

This project is a Quarkus based project that uses injection to instantiate services based on an Eclipse Microprofie run configuration which which supports configuration variables provided by environment, application properties or K8S ConfigMaps. See: https://github.com/smallrye.

The project modules consist of the following:

Finally there are two packaging modules that assemble combinations of the modules above into Dockers images for direct deployment in docker or as part of a Kubernets configuration.

Testing Configuration

To run the provided tests, a Mongo Database (Community Edition) needs to be available. By default, the server should be available on localhost port 27017. The tests require a user account with enough access rights to create databases and manipulate data. By default, the tests will use username admin and password t0p-Secret.

For Open Policy Agent integration testing, install the OPA agent. In the /opa project directory, you will find a shell script to start the OPA server along with a rego policy for the i2scim server. By default, the OPA tests will attempt to access the OPA agent using a URL of: http://localhost:8181/v1/data/i2scim.

To override these defaults, the following environment variables may be set:

Using Quarkus with IntelliJ

i2scim was developed using Quarkus and IntelliJ. Here is information on how to set up a Quarkus development environment under IntelliJ