SCIM Group Request Converter Lambda
If you would like to convert an incoming SCIM Group request into a Group, you must specify a lambda in the SCIM configuration. This lambda will be invoked prior to the Group being acted upon.
When you create a new lambda using the FusionAuth UI we will provide you an empty function for you to implement.
Lambda Structure#
If you are using the API to create the lambda you will need to ensure your function has the following signature:
function convert(group, members, options, scimGroup, context) {
// Lambda code goes here
}
This lambda must contain a function named convert that accepts the following parameters:
-
group- the FusionAuth Group object. You can modify this object. -
members- the members in this FusionAuth Group. You can modify this object.-
members[x].userId- The Id of the FusionAuth User -
members[x].data.$ref- The URI to retrieve the SCIM User representation of the FusionAuth User- ex.
https://login.piedpiper.com/api/scim/v2/Users/902c246b-6245-4190-8e05-00816be7344a
- ex.
-
-
options- request options. You can modify this object.options.roleIds
-
scimGroup- the SCIM request object. This object is read-only. -
context- Available since 1.64.0 - an object containing the context of the request, including access to secrets. This object is read-only.
The FusionAuth object is well documented in the Group API documentation. The SCIM Group object is a JavaScript object containing the SCIM Group request JSON payload. See SCIM Group.
You may add or modify anything in the group, members and options objects.
Assigning The Lambda#
Once a lambda is created, you must assign it to a Tenant. See the SCIM tab in the Tenant configuration.
Default Lambda#
A default SCIM Group Request Converter Lambda that converts an incoming SCIM Group request to a FusionAuth Group is available and may be used or modified. The lambda function is documented below.
function convert(group, members, options, scimGroup) {
// Un-comment this line to see the scimGroup object printed to the event log
// console.info(JSON.stringify(scimGroup, null, 2));
// Request options
// FusionAuth allows you to assign one or more application roles to a group.
// To use this feature, assign one or more application Ids here.
// options.roleIds = [];
// Set the name of the group using the SCIM Group displayName
group.name = scimGroup.displayName;
// Build a members array with a userId and a $ref in custom data
if (scimGroup.members) {
for (var i = 0; i < scimGroup.members.length; i++) {
members.push({
userId: scimGroup.members[i].value,
data: {
$ref: scimGroup.members[i]['$ref']
}
});
}
}
}