Table of Contents

Introduction

Evaluators are used to provide permissions for database entities to users, they determine what any user can see and do in IdM. An user is assigned one or multiple roles and each role is assigned one or multiple authorization policies. Each authorization policy says "for X kind of entity, give the user permissions A, B and C according to evaluator C". When resolving permissions, the user gets a given permission for a given entity if at least one authorization policy with that permission says the user should have it.

Automatic roles

For common use-cases, IdM provides several roles with preconfigured permissions such as userRole, userManagerRole, superAdminRole and helpdeskRole. Those roles are created during IdM start by processors named Init*RoleProcessor. They're only created if they don't already exist, so editing them is possible and the changes won't get reverted during a restart of IdM.

The codes for automatic roles are in configuration properties idm.sec.core.role.*.

Supported operations

The evaluator isn't an entity by itself, so the only operation that can be done with it is selecting it in the detail of an Authorization Policy and selecting its parameters if it has any.

The evaluator is simply a specification of how an Authorization Policy provides permissions to users.

Lifecycle

Evaluators are usually queried under three different circumstances

Fetching a set of entities

Rendering frontend elements

Internal queries

Getting Started

In an IdM with some users and roles, go to the Roles tab, open the detail of a role and click "Permissions". In the detail of a permission, you can select its assigned evaluator and set its parameters if it has any.

Types of Users

Admin

Admin user type refers to a user who usually has the superAdminRole with the APP_ADMIN permission. This user can perform all operations and is not restricted by any permissions in IdM. This kind of account typically only has one role, since the superAdminRole already grants access to everything.

The Admin's tasks with regards to roles and evaluators may include:

Manager

Manager user type refers to a user who usually has the userManagerRole, which grants them the permission to manage certain roles (typically the ones that they're guarantors of).

Their typical tasks with regards to roles and evaluators may include:

Role request approver

Role request approver user type refers to a user who approves or disapproves a role request created by someone else. Depending on the configuration, this user may have a variety of roles (typically securityRole, helpdeskRole or roleManagerRole).

Their typical task is approving or disapproving a role request created by someone else. This type of user often, but not always, coincides with the Manager type.

Basic User

Basic user user type refers to a user typically with the userRole role.

Their typical task is requesting roles for themselves and usually waiting to have those requests approved by the Role request approvers.

Troubleshooting

Infinite recursion

Since many evaluators use other evaluators in their getPredicate and getPermission methods, there is a risk of creating an infinite recursion if a chain of such calls forms a circle. The simplest such case is combining an IdentityByContractEvaluator with an IdentityContractByIdentityEvaluator.

Note that this problem may occur over a combination of multiple roles. The solution is removing one of the responsible Authorization Policies and achieving the desired business outcome through a different combination of evaluators. If that is impossible, a new evaluator may have to be developed for the use case.

Glossary

Lists of evaluators by managed entity

Any entity

IdM

Evaluators for IdMIdentity

IdmRoleRequest

IdmConceptRoleRequest

IdmApprovalTask

IdmAuthorizationPolicy

IdmAutomaticRoleAttributeRuleRequest

IdmAutomaticRoleRequest

IdmCodeListItem

IdmCodeListItemValue

IdmConceptRoleRequest

IdmConceptRoleRequestFormValue

IdmConfiguration

IdmContractGuarantee

IdmContractPosition

IdmContractSliceFormValue

IdmDelegation

IdmDelegationDefinition

IdmFormAttribute

IdmFormDefinition

IdmIdentity

IdmIdentityContract

IdmIdentityContractFormValue

IdmIdentityFormValue

IdmIdentityRole

IdmIdentityRoleFormValue

IdmIncompatibleRole

IdmLongRunningTask

IdmProcessedTaskItem

dmProfile

IdmRequest

IdmRequestItem

IdmRole

IdmRoleCatalogueRole

dmRoleComposition

IdmRoleFormAttribute

IdmRoleFormValue

IdmRoleGuarantee

IdmRoleGuaranteeRole

IdmRoleRequest

IdmRoleTreeNode

IdmTreeNode

IdmTreeNodeFormValue

IdmWorkflowTaskNote

Acc

AccAccount

AccAccountRoleRequestFormValue

AccAccountFormValue

AccAccountRoleAssignment

AccAccountRoleAssignmentFormValue AccContractAccount AccIdentityAccount AccIdentityRoleAccount AccRoleAccount

AccRoleCatalogueAccount

AccTreeAccount

Rpt

RptReport

Sys

SysSystem

SysSystemFormValue

SysSystemOwner

SysSystemOwnerRole

Vs

VsAccountFormValue

VsRequest