{"id":22787344,"url":"https://github.com/aserto-dev/scim","last_synced_at":"2026-02-26T17:07:52.615Z","repository":{"id":218733291,"uuid":"722564334","full_name":"aserto-dev/scim","owner":"aserto-dev","description":"Aserto SCIM service","archived":false,"fork":false,"pushed_at":"2025-04-29T15:14:44.000Z","size":181,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-30T12:58:44.985Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aserto-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-11-23T12:22:52.000Z","updated_at":"2025-04-29T15:08:46.000Z","dependencies_parsed_at":"2024-12-18T14:40:03.986Z","dependency_job_id":"0fdd4b07-4902-42b6-91de-1d65edbf6103","html_url":"https://github.com/aserto-dev/scim","commit_stats":null,"previous_names":["aserto-dev/scim"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/aserto-dev/scim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aserto-dev%2Fscim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aserto-dev%2Fscim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aserto-dev%2Fscim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aserto-dev%2Fscim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aserto-dev","download_url":"https://codeload.github.com/aserto-dev/scim/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aserto-dev%2Fscim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270892211,"owners_count":24663543,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-17T02:00:09.016Z","response_time":129,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-12T00:54:14.764Z","updated_at":"2026-02-26T17:07:47.578Z","avatar_url":"https://github.com/aserto-dev.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# scim\nThe Aserto SCIM service uses the SCIM 2.0 protocol to import data into the Aserto Directory. While not all features have been implemented yet, it supports the basic operations in order to manage users and groups using the SCIM core schemas.\n\n### sample config.yaml\n```yaml\n---\nlogging:\n  log_level: info\nserver:\n  listen_address: \":8080\"\n  auth:\n    basic:\n      enabled: true\n      username: \"scim\"\n      password: \"scim\"\n    bearer:\n      enabled: true\n      token: \"scim\"\ndirectory:\n  address: \"localhost:9292\"\n  no_tls: true\nscim:\n  user:\n    object_type: user\n    identity_object_type: identity\n    identity_relation: user#identifier\n    property_mapping: \n      enabled: active\n    source_object_type: scim_user\n    manager_relation: manager\n  group:\n    object_type: group\n    group_member_relation: member\n    source_object_type: scim_group\n  role:\n    object_type: group\n    role_relation: member\n  relations:\n    - object_id: system\n      object_type: system\n      relation: admin\n      subject_id: admins\n      subject_type: group\n      subject_relation: member\n```\n\n### start service\n```\ngo run ./cmd/aserto-scim/main.go run -c ./config.yaml\n```\n\n### run as docker container\n\n```\ndocker run -p 8080:8080 -v {config directory}:/config:ro ghcr.io/aserto-dev/scim:latest run -c /config/config.yaml\n```\n\n### list users\n\n```\ncurl  -X GET \\\n  'http://127.0.0.1:8080/Users' \\\n  --header 'Accept: */*' \\\n  --header 'Authorization: Bearer scim'\n```\n\n### create user\n```\ncurl  -X POST \\\n  'http://127.0.0.1:8080/Users' \\\n  --header 'Accept: */*' \\\n  --header 'Authorization: Bearer scim' \\\n  --header 'Content-Type: application/json' \\\n  --data-raw '{\n    \"schemas\": [\"urn:ietf:params:scim:schemas:core:2.0:User\"],\n    \"userName\": \"rsanchez\",\n    \"name\": {\n        \"givenName\": \"Rick\",\n        \"familyName\": \"Sanchez\"\n    },\n    \"emails\": [{\n        \"primary\": true,\n        \"value\": \"rick@the-citadel.com\",\n        \"type\": \"work\"\n    }],\n    \"displayName\": \"Rick Sanchez\",\n    \"locale\": \"en-US\",\n    \"groups\": [],\n    \"active\": true\n}'\n```\n\nThe create operation will return a user ID, which will be used to identify the user from now on\n\n### get a user\n`curl -X 'GET' 'http://127.0.0.1:8080/Users/{user id}' `\n\n```\ncurl  -X GET \\\n  'http://127.0.0.1:8080/Users/rsanchez' \\\n  --header 'Accept: */*' \\\n  --header 'Authorization: Bearer scim'\n```\n\n### delete a user\n`curl -X 'DELETE' 'http://127.0.0.1:8080/Users/{user id}'`\n\n```\ncurl  -X DELETE \\\n  'http://127.0.0.1:8080/Users/rsanchez' \\\n  --header 'Accept: */*' \\\n  --header 'Authorization: Bearer scim'\n```\n\n### patch user\n`curl -X 'PATCH' 'http://127.0.0.1:8080/Users/{user id}'`\n\n```\ncurl  -X PATCH \\\n  'http://127.0.0.1:8080/Users/rsanchez' \\\n  --header 'Accept: */*' \\\n  --header 'Authorization: Bearer scim' \\\n  --header 'Content-Type: application/json' \\\n  --data-raw '{\n\"schemas\":[\"urn:ietf:params:scim:api:messages:2.0:PatchOp\"],\n\"Operations\":[\n{\"op\":\"add\",\"path\": \"nickName\",\"value\": \"Madman\"},\n{\"op\":\"add\",\"path\": \"emails[type eq \\\"home\\\"].value\",\"value\": \"rick@home\"}\n]}'\n```\n\n### create group\n```\ncurl  -X POST \\\n  'http://127.0.0.1:8080/Groups' \\\n  --header 'Accept: */*' \\\n  --header 'Authorization: Bearer scim' \\\n  --header 'Content-Type: application/json' \\\n  --data-raw '{\"displayName\": \"admin\"}'\n```\n\n### add user to group\n```\ncurl  -X PATCH \\\n  'http://127.0.0.1:8080/Users/rsanchez' \\\n  --header 'Accept: */*' \\\n  --header 'Authorization: Bearer scim' \\\n  --header 'Content-Type: application/json' \\\n  --data-raw '{\n\"schemas\":[\"urn:ietf:params:scim:api:messages:2.0:PatchOp\"],\n\"Operations\":[\n{\"op\":\"add\",\"path\": \"groups[type eq \\\"work\\\"].value\",\"value\": \"admin\"}\n]}'\n```\n\n### create a relation from an imported group to a user (e.g. giving admin permission to users that are port of an imported group)\n```\n  relations:\n    - object_id: system\n      object_type: system\n      relation: admin\n      subject_id: admins\n      subject_type: group\n      subject_relation: member\n```\nThis will create a `admin` relation with `member` subject relation between the `admins` group and the object with id `system` and type `system`","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faserto-dev%2Fscim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faserto-dev%2Fscim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faserto-dev%2Fscim/lists"}