Changed on:
17 Oct 2023
`Inactive`
`Inactive`
User Group is used in IDPs for the following scenarios:
To provision a user successfully, besides the user information, the roles set in IDP need to follow the specific convention:
App role setting in IDP convention:
<FLUENT_CONTEXT_TYPE>_<FLUENT_CONTEXT_ID>_<FLUENT_ROLE_ID or IDP_LOGICAL_ROLE_ID> where:
Example of App roles assigned to user and group in Azure Active Directory
As written above, there is also a possibility to convert a role defined in IDP to a list of roles in Fluent. For example, role A, defined in IDP App roles, has been configured to map with B, and C roles in Fluent, so if a user is assigned role A in IDP and is provisioned, then the user will be assigned to role B, C in Fluent. The configuration is maintained in Fluent (not in IDP).
Dynamic mapping is always executed before the direct mapping to convert custom roles into Fluent roles and then have the direct mapping take care of the provisioning.
The mapping configuration needs to be stored as Fluent Settings with the key
`fc.connect.scim-connector.provisioning.pipeline.config`
`rules`
If no configuration is stored at Fluent, then the SCIM connector will assume no dynamic mapping rules and only the direct mapping will be executed.
Background
An IDP role “X” can be configured in IDP to work in two ways:
Provisioning
No | At IDP | At Fluent (after the provisioning job is run) |
1 | a new user is created without a role | user is not created in Fluent |
2 | a new user is assigned to D | user is created in Fluent with role D |
3 | a new user is assigned to C | user is created in Fluent with roles F, G |
4 | a new user is assigned to C, D | user is created in Fluent with roles D, F, G |
5 | a new user is assigned to A, B | user is not created due to not finding respective roles of A and B in Fluent |
6 | a new user is assigned to A, B, C | user is not created due to not finding respective roles of A and B in Fluent |
7 | a new user is assigned to A, B, C, D | user is not created due to not finding respective roles of A and B in Fluent |
8 | a new user is assigned to A, B, C, D, E, | user is not created in Fluent due to not finding respective roles of A and B in Fluent |
9 | the existing user is assigned to A, B | user got no change in Fluent |
10 | the existing user is assigned to A, B, C, D | user got no changes in Fluent |
11 | the existing user is assigned to C, D | user is updated in Fluent with roles D, F, G |
12 | the existing user is assigned to C and D and is added to Group G | user is updated in Fluent with roles D, F, G, M, N |
13 | the existing user is assigned to C, D, and M and is added to Group G | user is updated in Fluent with roles D, F, G, M, N |
14 | the existing user is assigned to C, D, M | user is updated in Fluent with roles D, F, G, M |
15 | the existing user is assigned to C, D, M and | user is updated in Fluent with roles D, F, G, M, N |
16 | the existing user is assigned to D, M | user is updated in Fluent with roles D, F, G, M, N |
17 | the existing user is assigned to Group H | user got no change in Fluent |
The error message follows the standard defined in RFC 7644: System for Cross-domain Identity Management: Protocol.
Error Messages can be viewable in IDP UI or in Cloudwatch.
Example:
1{
2 "schemas": ["urn:ietf:params:scim:api:messages:2.0:Error"],
3 "scimType":"mutability",
4 "detail":"Attribute 'id' is readOnly",
5 "status": "400"
6}
Language: json
Name: Code Example
Description:
[Warning: empty required content area]Error messages:
No | Context | Status | Scimtype | Detail | Example |
1 | wrong contextId | 400 | roleInvalidContextId | Invalid context id, unable to find a match [{contextType - contextID}] |
|
2 | wrong contextType | 400 | roleInvalidContextType | Invalid context type, unable to find a match [{contextType}] |
|
3 | wrong role | 400 | invalidValue | Unable to find a matching Fluent role [{role}] |
|
4 | wrong app role convention | 400 | roleNameConvention | Role does’t match the expected naming convention [{appRole}] |
|
5 | SCIM endpoint Fluent does not support | 501 | Not Implemented |
|
Copyright © 2024 Fluent Retail Pty Ltd (trading as Fluent Commerce). All rights reserved. No materials on this docs.fluentcommerce.com site may be used in any way and/or for any purpose without prior written authorisation from Fluent Commerce. Current customers and partners shall use these materials strictly in accordance with the terms and conditions of their written agreements with Fluent Commerce or its affiliates.