SCIM 2.0
SCIM stands for System for Cross-domain Identity Management.
The System for Cross-domain Identity Management (SCIM) specification is designed to make managing user identities in cloud-based applications and services easier. - www.simplecloud.info
idaas.nl supports SCIM for managing users and groups. It allows creating, patching, putting and deleting objects via SCIM. This includes assigning and revoking group memberships.
The core of the idaas.nl SCIM server has been released as open source code and is available on github.
Endpoints
GET|HEAD | scim/v1
GET|HEAD | scim/v1/{fallbackPlaceholder}
POST | scim/v2/.search
GET|HEAD | scim/v2/ResourceTypes
GET|HEAD | scim/v2/ResourceTypes/{id}
GET|HEAD | scim/v2/Schemas
GET|HEAD | scim/v2/Schemas/{id}
GET|HEAD | scim/v2/ServiceProviderConfig
GET|HEAD | scim/v2/{fallbackPlaceholder}
GET|HEAD | scim/v2/{resourceType}
POST | scim/v2/{resourceType}
GET|HEAD | scim/v2/{resourceType}/{resourceObject}
PUT | scim/v2/{resourceType}/{resourceObject}
PATCH | scim/v2/{resourceType}/{resourceObject}
DELETE | scim/v2/{resourceType}/{resourceObject}
SCIM from the web interface
Idaas.nl uses SCIM for all user and group operations. Including from all operations initiated from the web interface.
This is visible under /users
and /groups
in the web application. All actions initiated from here are plain SCIM actions. These are visible from your web brower's developer tools.
Example SCIM request
PUT /api/scim/v2/Users/8ec33dbe-ae75-9682-9f1a-9cf2743bc18a
Host: [your-tenant].manage.idaas.nl
content-type: application/scim+json
Authorization: Bearer ...
{
"id": "8ec33dbe-ae75-9682-9f1a-9cf2743bc18a",
"meta": {
"created": "2019-09-28T17:34:16+00:00",
"lastModified": "2019-12-06T06:32:47+00:00",
"location": "https://login.manage.idaas.nl/api/scim/v2/Users/8ec33dbe-ae75-9682-9f1a-9cf2743bc18a",
"resourceType": "User"
},
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User",
"arietimmerman:ice"
],
"urn:ietf:params:scim:schemas:extension:account:2.0:Password": {
"lastSuccessfulLoginDate": "2019-12-06T06:32:47+00:00"
},
"urn:ietf:params:scim:schemas:core:2.0:User": {
"active": false,
"emails": [
{
"value": "arietimmerman@gmail.com",
"type": "other",
"primary": true
}
],
"phoneNumbers": [
{
"type": "other",
"primary": true,
"value": "0612345678"
}
],
"roles": [
{
"id": "8ec33dbe-85fc-4d0f-8ca7-7c7baf3af4f6",
"meta": {
"created": "2019-09-28T17:34:16+00:00",
"lastModified": "2019-09-28T17:34:16+00:00",
"resourceType": "Role"
},
"value": "8ec33dbe-85fc-4d0f-8ca7-7c7baf3af4f6",
"display": "Administrator",
"slug": null,
"system": true,
"tenant": "login"
}
],
"groups": [
{
"value": "8ec3654b-2d54-47a9-b56e-22ace9e533d8",
"$ref": "https://login.manage.idaas.nl/api/scim/v2/Group/8ec3654b-2d54-47a9-b56e-22ace9e533d8",
"display": "Active Users"
}
]
},
}
Get Users
Find users with a certain mail address
GET /api/scim/v2/Users?sortBy=id&sortOrder=descending&count=20&startIndex=0&filter=emails.value co "@gmail.com"
Get group members
GET /api/scim/v2/Users?sortBy=id&sortOrder=descending&count=20&startIndex=0&filter=groups.value eq "123"
Self Registration
Initiate a SCIM creation request to the /Me endpoint
POST /scim/v2/Me HTTP/1.1
Host: your-tenant.idaas.nl
Content-Type: application/json+scim
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User",
"arietimmerman:ice"
],
"urn:ietf:params:scim:schemas:core:2.0:User": {
"userName": "johndoe@example.com",
"password": "test123",
"name": {
"formatted": "John Doe"
},
"displayName": "John Doe",
"emails": [
{
"value": "johndoe@example.com",
"type": "other",
"primary": true
}
]
}
}
After registering the user one should initiate an OpenID authentication request like the one below. Note that acr_values is set to activation
and login_hint
is set to your_new_emailadress
https://your-tenant.idaas.nl/oauth/authorize?acr_values=activation&client_id=8aa2d46c-593f-45e9-8b52-634b4b066e80&code_challenge=47ABApj8HBSa-_TImW-5JCeuA2Rkm5NMpJWZG3hSuFU&code_challenge_method=S256&nonce=12345&redirect_uri=http://localhost:8080/Tester&response_type=id_token&scope=email&state=123&login_hint=your_new_emailadress
Now the user is presented with a message stating the activation link is send. After the user reads this mail and follows the action link, the user is activated and logged in immediately.
All other authentication modules reject authentication for inactive users.