The Baton-SCIM connector is a generic connector for applications compatible with SCIM (System for Cross-domain Identity Management). It communicates with the SCIM API to sync data about users, groups, and roles.Built-in service providers include:
Miro
Postman
Slack
Zoom
For other SCIM-enabled applications, you can create your own configuration file.
# The URL of the SCIM API endpoint (required)apiEndpoint: "https://api.example.com/scim/v2/"# Whether the service requires a specific Accept header for SCIM (required)hasScimHeader: true# Authentication configuration (required)auth: # Authentication type: "oauth2", "apiKey", or "basic" (required) authType: "oauth2" # Prefix for API key in Authorization header (optional) apiKeyPrefix: "Bearer" # Whether to obtain token programmatically (optional) shouldObtainToken: false # Auth URL for obtaining token (required if shouldObtainToken is true) authUrl: "https://example.com/oauth/token" # JSONPath to extract token from response (required if shouldObtainToken is true) tokenPath: "access_token"# User resource mapping (required)user: # JSONPath to user ID (required) id: "id" # JSONPath to username (required) userName: "userName" # JSONPath to first name (required) firstName: "name.givenName" # JSONPath to last name (required) lastName: "name.familyName" # JSONPath to primary email (required) primaryEmail: "emails[?(@.primary==true)].value" # JSONPath to first email (optional) firstEmail: "emails[0].value" # JSONPath to active status (required) active: "active" # Whether groups are defined on the user object (optional) hasGroupsOnUser: false # Group mapping on user object (required if hasGroupsOnUser is true) userGroup: # JSONPath to groups array on user object path: "groups" # JSONPath to group name in user's group object name: "display" # JSONPath to group ID in user's group object (optional) id: "value" # Role mapping on user object (optional) roles: # JSONPath to roles array on user object path: "roles" # JSONPath to role name name: "value" # JSONPath to role display name (optional) display: "display"# Group resource mapping (required)group: # JSONPath to group ID (required) id: "id" # JSONPath to group display name (required) displayName: "displayName" # Member mapping in group object (optional) members: # JSONPath to members array in group object path: "members" # JSONPath to member ID id: "value" # JSONPath to member display name (optional) displayName: "display"# Pagination mapping (required)pagination: # JSONPath to total results count totalResults: "totalResults" # JSONPath to items per page itemsPerPage: "itemsPerPage" # JSONPath to start index startIndex: "startIndex"# Provisioning configuration (optional, required for provisioning)provisioning: # Configuration for adding a user to a group addUserToGroup: # Schema for the operation schemas: "urn:ietf:params:scim:api:messages:2.0:PatchOp" # Operation type op: "add" # Path to field being modified path: "members" # Path to value field in the operation valuePath: "value" # Configuration for removing a user from a group removeUserFromGroup: schemas: "urn:ietf:params:scim:api:messages:2.0:PatchOp" op: "replace" path: "members" valuePath: "value" # Configuration for adding a role to a user addUserRole: schemas: "urn:ietf:params:scim:api:messages:2.0:PatchOp" op: "add" path: "roles" valuePath: "value" # Configuration for removing a role from a user removeUserRole: schemas: "urn:ietf:params:scim:api:messages:2.0:PatchOp" op: "remove" path: "roles" valuePath: "value"
Providing your C1 tenant client ID and client secret via flags automatically triggers Continuous Service Mode. This mode is recommended for production deployments.
# With a built-in service providerbaton-scim --token=your-oauth-token --service-provider=slack# With a custom configurationbaton-scim --api-key=your-api-key --scim-config=./config.yaml
# With a built-in service providerdocker run --rm -v $(pwd):/out -e BATON_TOKEN=your-oauth-token -e BATON_SERVICE_PROVIDER=slack ghcr.io/conductorone/baton-scim:latest -f "/out/sync.c1z"# With a custom configurationdocker run --rm -v $(pwd):/out -v $(pwd)/config.yaml:/config.yaml -e BATON_API_KEY=your-api-key -e BATON_SCIM_CONFIG=/config.yaml ghcr.io/conductorone/baton-scim:latest -f "/out/sync.c1z"
The SCIM connector supports provisioning actions like adding/removing users from groups and assigning/revoking user roles. To enable provisioning, use the --provisioning flag: