Branch | Current Release | Circle CI Status | Code Coverage | License |
---|---|---|---|---|
master |
This is an open source implementation of the SCIM (System for Cross-domain Identity Management) protocol that is defined by RFC7643 and RFC7644.
A simple description of SCIM can be found here http://www.simplecloud.info/
SCIM is more than just users and groups. SCIM could be seen as a standardization of RESTful services and that is exactly what this library does offer: An API for defining dynamic endpoints on a RESTful basis compatible with any REST-framework on the market.
Define some JSON-schemas that describe the endpoint you want to create and get a lot of features that will support you during development.
This lib supports the full feature set of both client and server side of the SCIM specification.
RESTful is not a standard but a convention for services that define the HTTP-Methods [POST, GET, UPDATE, DELETE] to manage resources on the server. Use this API to create such services and benefit from several features that make your life easier.
for a documentation take a look into the github wiki https://github.com/Captain-P-Goldfish/SCIM/wiki
You will find a pretty detailed explanation on how to use the server implementation here: https://github.com/Captain-P-Goldfish/SCIM-SDK/wiki/How-to-use-the-server-implementation
And a pretty detailed explanation on how to use the client can be found here: https://github.com/Captain-P-Goldfish/SCIM-SDK/wiki/How-to-use-the-client-implementation
Note: You do not need to fork this project in order to make adjustments to the User
-schema or the User
-class
implementation. Find a more detailed explanation in the
wiki: best practices
This project requires JDK 8 or higher
<dependency>
<groupId>de.captaingoldfish</groupId>
<artifactId>scim-sdk-server</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>de.captaingoldfish</groupId>
<artifactId>scim-sdk-client</artifactId>
<version>${project.version}</version>
</dependency>
if you want to use the built-in methods for the rest-api you must make sure that you deliver the corresponding dependencies yourself, because this project has marked them as optional. They are not being imported as transitive dependencies. Also note that these are simply the api libraries. The implementations should also be provided by your application or underlying application server.
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>jakarta.ws.rs</groupId>
<artifactId>jakarta.ws.rs-api</artifactId>
<optional>true</optional>
</dependency>
Note: If the project does not compile within your IDE install the "lombok" plugin for your IDE and restart it.
To see the current release-notes take a look into the release section: https://github.com/Captain-P-Goldfish/SCIM-SDK/releases
This API is highly generic and allows the definition of your own schema representations for resources. You will even be able to override the default User or Group core schemata if you want to. This might be useful if you do not want to support attributes like "ims", "phoneNumbers" etc. All you need to do is simply to write two json documents.
- a schema definition that describes the resource you want to supply
- a resource type definition that describes the endpoint and the additional schema extensions that may be used within the schema definition
- create
- read
- list
- filtering (@see additional features)
(@see How to use the FilterNode) - sorting (@see additional features)
- filtering (@see additional features)
- update
- patch (@see patching resources)
- delete
- bulk
- resolving of bulkId references (@see bulkId reference resolving)
- resource versioning (@see resource versioning)
- attributes-parameter (@see attributes-parameter)
- excludedAttributes-parameter (@see excludedAttributes-parameter)
for any registered resource
- authentication for specific endpoints (@see authentication)
- authorization for specific endpoints (@see authorization)
- attribute validation (@see attribute validation)
- custom resource validation [similiar to bean validation in JEE] (@see resource validation)
- automatic POJO creation from SCIM schema resources. (@see schema pojo creator)
- return resources in BulkResponse. (@see return resources in BulkResponse)
- Simple resource references. (@see simple resource references)
- Bulk-Get. (@see Bulk-Get Feature)
- Default-Values. (@see Default Values)
- Patch-simple-value-remove. (@see Support for special filter-expressions)
The client implementation supports the following SCIM requests
- create
- read
- list
- update
- delete
- bulk
- patch
there is also direct native support for easy use of basic authentication and X509 client authentication. All other authentication types must be implemented manually.
Automatic-Module-Names for Jigsaw:
de.captaingoldfish.scim.sdk.common
de.captaingoldfish.scim.sdk.server
de.captaingoldfish.scim.sdk.client