• Stars
    star
    181
  • Rank 212,110 (Top 5 %)
  • Language
    Java
  • Created over 9 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The UnboundID SCIM 2.0 SDK for Java

Maven Central Javadocs Build Status

SCIM 2 SDK

SCIM, or System for Cross-domain Identity Management, is an IETF standard that defines an extensible schema mechanism and REST API for managing users and other identity data. SCIM is used by a variety of vendors — including Facebook, Salesforce, Microsoft, Cisco, Sailpoint, and Ping Identity — for a variety of purposes, including user provisioning, directory services, attribute exchange, and more.

The UnboundID SCIM 2 SDK for Java provides a powerful and flexible set of APIs for interacting with SCIM service providers and resources. Use it to build applications and servers that interoperate with SCIM servers such as the PingDirectory Server.

The SCIM 2 SDK consists of the following components:

Component name What it is Who needs it
scim2-sdk-client The SCIM 2 client API. SCIM client developers.
scim2-ubid-extensions Model classes representing UnboundID extensions to the SCIM standard. This component is subject to API changes and should be considered experimental. SCIM client developers using features specific to UnboundID servers.
scim2-sdk-server Classes for use by SCIM 2 service providers. SCIM service provider implementers.
scim2-sdk-common Shared model, exception, and utility classes. Included as a transitive dependency of all of the above.

How to get it

The SCIM 2 SDK is available from Maven Central and can be included in your product like any other Maven dependency. Check Maven Central for the latest available version of SCIM 2 SDK dependencies.

For general-purpose clients:

<dependency>
  <groupId>com.unboundid.product.scim2</groupId>
  <artifactId>scim2-sdk-client</artifactId>
  <version>VERSION</version>
</dependency>

For clients using UnboundID-specific features:

<dependency>
  <groupId>com.unboundid.product.scim2</groupId>
  <artifactId>scim2-ubid-extensions</artifactId>
  <version>VERSION</version>
</dependency>

You may also download SCIM 2 SDK builds from the Releases page.

If you're looking for a Java SDK for SCIM 1.1, you can find it here.

How to use it

The SCIM 2 SDK requires Java 8 or greater.

The primary point of entry for a client is the ScimService class, which represents a SCIM service provider, such as the PingDirectory Server. This class acts as a wrapper for a JAX-RS client instance, providing methods for building and making requests.

Other classes provide facilities for selecting attributes by path, building query filters, and working with JSON documents. SCIM resources returned from a service provider can either be represented as POJOs or using an API based on the Jackson tree model.

import com.unboundid.scim2.client.ScimService;
import com.unboundid.scim2.common.exceptions.ScimException;
import com.unboundid.scim2.common.types.UserResource;
import com.unboundid.scim2.common.types.Name;
import com.unboundid.scim2.common.types.Email;
import com.unboundid.scim2.common.GenericScimResource;
import com.unboundid.scim2.common.messages.ListResponse;
import com.unboundid.scim2.common.filters.Filter;

// Create a ScimService
Client client = ClientBuilder.newClient().register(OAuth2ClientSupport.feature("..bearerToken.."));
WebTarget target = client.target("https://example.com/scim/v2");
ScimService scimService = new ScimService(target);

// Create a user
UserResource user = new UserResource();
user.setUserName("babs");
user.setPassword("secret");
Name name = new Name()
  .setGivenName("Barbara")
  .setFamilyName("Jensen");
user.setName(name);
Email email = new Email()
  .setType("home")
  .setPrimary(true)
  .setValue("[email protected]");
user.setEmails(Collections.singletonList(email));
user = scimService.create("Users", user);

// Retrieve the user as a UserResource and replace with a modified instance using PUT
user = scimService.retrieve("Users", user.getId(), UserResource.class);
user.setDisplayName("Babs");
user = scimService.replace(user);

// Retrieve the user as a GenericScimResource and replace with a modified instance using PUT
GenericScimResource genericUser =
    scimService.retrieve("Users", user.getId(), GenericScimResource.class);
genericUser.replaceValue("displayName", TextNode.valueOf("Babs Jensen"));
genericUser = scimService.replaceRequest(genericUser).invoke();

// Perform a partial modification of the user using PATCH
scimService.modifyRequest("Users", user.getId())
           .replaceValue("displayName", "Babs")
           .invoke(GenericScimResource.class);

// Perform a password change using PATCH
scimService.modifyRequest("Users", user.getId())
           .replaceValue("password", "new-password")
           .invoke(GenericScimResource.class);

// Search for users with the same last name as our user
ListResponse<UserResource> searchResponse =
  scimService.searchRequest("Users")
        .filter(Filter.eq("name.familyName", user.getName().getFamilyName()).toString())
        .page(1, 5)
        .attributes("name")
        .invoke(UserResource.class);

For detailed information about using the SCIM 2 SDK, including more examples, please see the wiki.

Reporting issues

Please report bug reports and enhancement requests through this project's issue tracker. See the contribution guidelines for more information.

License

The UnboundID SCIM2 SDK is available under three licenses: the GNU General Public License version 2 (GPLv2), the GNU Lesser General Public License version 2.1 (LGPLv2.1), and a free-right-to-use license created by UnboundID Corp. See the LICENSE file for more info.

More Repositories

1

ldapsdk

UnboundID LDAP SDK for Java
Java
328
star
2

pingidentity-devops-getting-started

Ping Identity Devops Program
Shell
96
star
3

pingidentity-server-profiles

Example demonstrating how to customize PingDirectory, PingFederate and PingAccess Docker containers by applying configuration files
Shell
57
star
4

pingidentity-docker-builds

Sample docker builds for the Ping Identity product line.
Shell
50
star
5

Postman-Calls

Sample Postman calls to Ping Identity APIs
44
star
6

scim

SCIM 1.1 SDK for Java
Java
41
star
7

angular-spa-sample

Sample application using OAuth/OpenID Connect.
TypeScript
28
star
8

astro

React component library for Ping Identity's design system
TypeScript
27
star
9

helm-charts

Shell
23
star
10

ping-cloud-base

The base Kubernetes yaml files to deploy the cookie-cutter Ping Identity software stack onto a Kubernetes cluster
Shell
21
star
11

pingone-sample-js

PingOne for Customers Sample App - OIDC Authentication Quick Start. Sample code providing a quick and simple introduction to PingOne for Customers using simple JavaScript or Python including code that can be modified for use in your own applications.
JavaScript
21
star
12

Android-AppAuth-Sample-Application

Sample Android application using the OpenID Foundation AppAuth reference libraries
Java
21
star
13

pingone-sample-custom-signon

This sample demonstrates the PingOne flow orchestration service implementation to authorize the application or user that initiated the authentication request. Flow services that are used only to implement custom authentication UIs.
JavaScript
20
star
14

pingid-python-samples

Sample python scripts to demonstrate the PingID User Management API.
Python
18
star
15

pf-authn-js-widget

JavaScript Widget for the PingFederate Authentication API
Handlebars
18
star
16

AuraIntruder

Python
17
star
17

pingone-sample-registration

This sample demonstrates PingOne Authentication and some Management API services usage like - registration of a new user, user password update by logged in user or by application itself, recovery a forgotten password scenario and of course - OAuth2/OIDC implementation
Python
15
star
18

java-spring-oidc

A Java/Spring sample of the OpenID Connect Authorization Code Flow with Ping Federate.
Java
15
star
19

pingone-sample-dotnet

PingOne Customers Sample .NET
C#
13
star
20

pf-ognl-expressions

Sample OGNL expressions for attribute mapping and issuance criteria
13
star
21

terraform-provider-pingone

Terraform PingOne provider
Go
13
star
22

pingid-api-playground

Java application to test the PingID API operations. This sample application can help a developer understand the flows and the tokens involved with using the PingID API.
Java
12
star
23

CorpIT

Scripts and tools used by Ping Identity's corporate IT organisation
Shell
12
star
24

terraform-provider-pingfederate

terraform-provider-pingfederate
Go
11
star
25

ios-napps-sample-application

Sample application for Native Application SSO using iOS9's new SFSafariViewController
Swift
11
star
26

JAMFScripts

Some of the internal scripts Ping Identity Runs on the JSS
11
star
27

pingone-user-import-tool

A tool to provide a quick and easy way to import users into a P14C instance.
Java
10
star
28

ios-appauth-sample-application

Sample iOS application using the OpenID Foundation AppAuth reference libraries
Objective-C
9
star
29

pingone-mobile-sdk-ios

Swift
8
star
30

PingID-API-.NET-Sample

Sample C# .NET example of using the PingID API. This example performs a GetUserDetails operation and displays the parsed response.
C#
7
star
31

pingauthorize-tutorials

Shell
7
star
32

pf-pcv-rest

PingFederate password credential validator (PCV) for a basic REST authentication endpoint
Java
7
star
33

pingone-spring-boot-tools

pingone-customers-spring-boot-tools
Java
7
star
34

ssam

Self-Service Account Manager
Java
7
star
35

pingone-sample-login

Sample login application for use with PingOne for Customers
7
star
36

pingone-mobile-sdk-android

6
star
37

pingone-authenticator-sample-app-ios

Swift
6
star
38

pa-spa-guide-react

A guide for onboarding a Spring Boot/React sample application to PingAccess.
Java
6
star
39

pingone-sample-scripts

Sample scripts for use by PingOne customers
Java
5
star
40

pingone-authenticator-sample-app-android

Java
5
star
41

pingone-sample-python

Python
5
star
42

pingidentity-cdr-sandbox

HTML
5
star
43

terraform-provider-pingdirectory

Terraform provider for PingDirectory
Go
5
star
44

pingid-node-samples

Collection of sample node.js scripts to demonstrate the PingID User Management API.
JavaScript
5
star
45

java8-token-binding-negotiation

Token Binding Protocol Negotiation TLS Extension support for Java 8
Java
5
star
46

terraform-provider-davinci

PingOne Davinci Terraform Provider
Go
4
star
47

bug-bounty-server-profiles

4
star
48

server-sdk-maven

Develop and package PingData Server SDK extensions using Maven
Java
4
star
49

PingFed_WS-Trust_DotNet45

Sample code for getting Ping Federate and WS-Trust to work together with .NET 4.5
C#
4
star
50

pingidentity-solutions-sa-ciam-demo

Customer360
HTML
4
star
51

android-napps-sample-application

Android sample application to demonstrate using the Chrome Custome Tabs for Native App SSO
Java
4
star
52

pf-open-banking-plugin

PingFederate open banking software statement assertion plugin
Java
4
star
53

pingctl

Ping Identity Command Line Interface (CLI) tool used for PingOne, PingDevops and future command line tools and aliases.
Shell
4
star
54

PingOneAPSJavaSampleApp

Sample PingOne APS app built in Java
CSS
4
star
55

pingid-php-scripts

Collection of sample PHP scripts to demonstrate the PingID User Management API.
PHP
4
star
56

pa-agent-c-sdk-sample-apache

PingAccess Agent SDK for C sample application - Apache agent that implements the PingAccess Agent Protocol.
C
4
star
57

pingid-powershell-scripts

Collection of sample PowerShell scripts to demonstrate the PingID User Management API.
PowerShell
3
star
58

status-servlet

A load balancer health check target for the PingData servers
Java
3
star
59

java10-token-binding-negotiation

Token Binding Protocol Negotiation TLS Extension support for Java 10
Java
3
star
60

pingone-node-sdk

PingOne Node SDK
JavaScript
3
star
61

pingone-sample-native-mobile

PingOne for Customers sample code for React Native application
JavaScript
3
star
62

pingid-desktop-application

Sample scripts to automate configuration of the PingID desktop application
Batchfile
3
star
63

pf-datastore-mongodb

PingFederate custom data store for MongoDB. Allows PingFederate to retrieve attributes from a MongoDB data source.
Java
3
star
64

pf-datastore-simpletable

Sample custom datastore for PingFederate that uses the adapter configuration to define a list of users.
Java
3
star
65

pipeline-example-infrastructure

Shell
3
star
66

pf-pcv-sqlstoredprocedure

PingFederate password credential validator to check username/password against a SQL database using a stored procedure.
Java
3
star
67

pf-agentless-ik-sample-python

These sample applications let you test integration with the Agentless Integration Kit. PingFederate acts as both the identity provider (IdP) and service provider (SP), showing the complete end-to-end configuration and user experience.
Python
3
star
68

pingone-sample-resource-owner

PingOne customers sample resource owner. Sample that demonstrates how client can access protected resources by presenting the access token to the resource server (API).
Java
3
star
69

pf-agentless-ik-sample-java

These sample applications let you test integration with the Agentless Integration Kit. PingFederate acts as both the identity provider (IdP) and service provider (SP), showing the complete end-to-end configuration and user experience.
Java
3
star
70

pingidentity-server-profiles-playground

Experimental, training getting started server-profile examples.
Shell
2
star
71

pf-pcv-tester

Custom password credential validator that always returns success for testing purposes.
Java
2
star
72

dtva-reference

An implementation of the Distributed Token Validity API
Java
2
star
73

open-banking-client-registration-tool

simple command line tools that demonstrates how TPPs can register an OAuth client with an ASPSP using Open Banking dynamic client registration
Java
2
star
74

pingfederate-go-client

pingfederate-go-client
Python
2
star
75

pingidentity-solution-stacks

Ping Identity Solution Stacks
HTML
2
star
76

pingone-verify-mobile-sdk-ios

PingOneVerify Native SDK for iOS
Objective-C
2
star
77

ping-cloud-dashboards

2
star
78

mobile-authentication-framework-android

Java
2
star
79

pf-identitystoreprovisioner-ldap

Custom identity store provisioner that provisions identities into a generic LDAP data store.
Java
2
star
80

pingone-sample-angular

PingOne for Customers Sample Applications for Registration and OIDC Login implemented with Angular.js
JavaScript
2
star
81

terraform-docs

Makefile
2
star
82

cassandra-spring-boot-starter

Cassandra spring-boot starter and auto configuration for pure datastax driver
Java
2
star
83

token-binding-java

Token Binding for Java: a library for processing/validating as well as creating/signing Token Binding message structures.
Java
2
star
84

pf-datastore-json

Sample custom datastore for PingFederate that queries a JSON text file on the PingFederate server.
Java
2
star
85

pingidentity-solutions-sa-wf-demo

Workforce360
Shell
1
star
86

StartAuthenticationSample

Java
1
star
87

pingone-for-individuals-server-sdk

Java
1
star
88

pingoneauthorize-api-tutorials

Tutorials for PingOne Authorize API Access management and fine-grained authorization.
1
star
89

ping-devops

PingIdentity DevOps Command-Line Tool
Shell
1
star
90

pingone-sample-oidc-ios

An example of mobile login for iOS applications for use with PingOne for Customers
Swift
1
star
91

pf-agentless-ik-sample-php

These sample applications let you test your integration with the Agentless Integration Kit.
HTML
1
star
92

WS-Trust-PingSDK-Java

Sample code for getting Ping Federate and WS-Trust to work together with Java
Java
1
star
93

pingauthorize-sideband-tests

Java
1
star
94

support-examples

Examples of product use from our support team
Java
1
star
95

pf-datastore-soap

Sample custom datastore for PingFederate that queries a SOAP service
Java
1
star
96

pingid-devices-management-sample

PingID Devices Management Sample
Java
1
star
97

pingauthorize-contrib

PLpgSQL
1
star
98

homebrew-devops

Homebrew Tap for PingIdentity DevOps tools
Ruby
1
star
99

mobile-authentication-framework-ios

Swift
1
star
100

pingone-magiclink-sample-solution

Sample magiclink solution using the PingOne platform
Java
1
star