====== SCIM module - Creating a user with group assigned ======
{{tag> scim}}
[[devel:documentation:modules_scim | SCIM]] module was added in CzechIdM 8.1.0.
The aim of this tutorial is to create a new group (~ IdM role), a user (~ IdM identity) with contract (~ IdM identity contract). Then assign him a group (~IdM identity role).
===== What do you need before you start =====
* We need to install CzechIdM 8.1.0 (and higher). In the example below, we use localhost:8080 as url on which the CzechIdM run.
* We need to install [[devel:documentation:modules_scim|Scim module]] into CzechIdM.
* Create an identity, which has permission to create and read reports. We are using the default ''admin:admin'' identity.
Note: [[devel:documentation:modules_scim#swagger|Swagger]] can be used in the example.
===== 01 Create user =====
Only ''userName'' attribute is required for creating a user:
curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'Authorization: Basic YWRtaW46YWRtaW4=' -d '{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"userName": "scimOne"
}' 'http://localhost:8080/idm/api/v1/scim/Users'
===== 02 Create contract =====
Default contract is created automatically for new user (if default contract is enabled by [[.:application_configuration:dev:backend#identity|configuration]]).
Created contracts for user can be found:
curl -X GET --header 'Accept: application/json' --header 'Authorization: Basic YWRtaW46YWRtaW4=' 'http://localhost:8080/idm/api/v1/scim/Users/scimOne/Contracts'
But if we want to create new contract:
curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'Authorization: Basic YWRtaW46YWRtaW4=' -d '{
"schemas": [
"urn:ietf:params:scim:schemas:CzechIdM:8.1:Contract"
],
"user": "scimOne",
"position": "test"
}' 'http://localhost:8080/idm/api/v1/scim/Contracts'
We will use returned contract ''id'' attribute in next requests.
===== 03 Create group with member =====
Now we have user and contract. Now we will create new role with this role assigned to user's contract. We can create and assing role with one request:
curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'Authorization: Basic YWRtaW46YWRtaW4=' -d '{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:Group"
],
"displayName": "roleScimOne",
"members": [{
"$ref": "/Users/scimOne/Contracts/5ea857ff-2ec1-4c29-813b-c0d37fc23065"
}
]
}' 'http://localhost:8080/idm/api/v1/scim/Groups'
Congratulations, you can see from response, group is assigned to given user.
===== Advanced =====
[[.:scim_form_value]]