Caching Principal Resolution Service
Installation and Configuration
Copyright ©
Mindbreeze GmbH, A-4020 Linz, 2022.
All rights reserved. All hardware and software names used are brand names and/or trademarks of their respective manufacturers.
These documents are strictly confidential. The submission and presentation of these documents does not confer any rights to our software, our services and service outcomes, or any other protected rights. The dissemination, publication, or reproduction hereof is prohibited.
For ease of readability, gender differentiation has been waived. Corresponding terms and definitions apply within the meaning and intent of the equal treatment principle for both sexes.
Caching Principal Resolution Service (Active Directory LDAP)
- Add a “CachingLdapPrincipalResolution” service under “Services” in the “Indices” tab.


- “LDAP Server Hostname“ should only be configured to overwrite the configuration of “Preferred LDAP Server” under “LDAP Settings” (in the “Network” tab). The required login information “LDAP Credential” can be selected either directly here or in the “Network” tab under “Endpoints.”
If “LDAP Connection Encryption” is selected the “Connection Encryption” under “LDAP Settings” in the “Network” tab is overwritten. The SSL protocol (LDAPS) on port 636 or the TLS protocol (StartTLS) on port 389 can be selected. If Unencrypted is selected, no encryption is performed.
- In order to cache user and groups of different domains from the same Active Directory Forest or other Active Directory Forests (Trusted Domain Foreign Security Principals) their domain names should be configured in Domain Name field of LDAP Settings. The corresponding Credentials and Endpoints should be provided accordingly.




- The Location can be configured as dns://<domain> (e.g. dns://mycompany.com) to use these credentials for multiple LDAP servers at the same time in one DNS domain. It is also possible to assign a credential directly to an LDAP server: ldap://<ldapserver hostname> (e.g. ldap://ldapserver.mycompany.com).


- If no login information is configured, Kerberos is used. To do this, a valid keytab must first be uploaded under Linux and selected for this service under “Setup Kerberos Authentication.”

- In the Kerberos authentication case, the UPN (User Principal Name) attribute of the user from the LDAP directory is used as a key for cache search. If another authentication method is used, which would send the user’s e-mail address for instance, the corresponding LDAP attributes, in this case mail, should be configured as “Alias Name LDAP Attribute”. In addition, the “Identity Alias Name Property” field should contain the property name provided by authentication. The attributes “msDS-principalName” und “userPrincipalName” are automatically saved for all users because they are used by the client service during Kerberos authentication. Therefore, they should not be configured as user aliases. If only one domain is configured, the attribute “sameaccountname” is also automatically added.

- If the ACLs are not normalized during indexing, i.e. they are not converted to DN format and they correspond, for example, to the “msDS-principalName“ attribute of a group in the active directory, then the “Group Alias Name LDAP Attribute“ should also be configured.

- If users have different alias names in multiple domains, aliases from certain domains can be deprioritized using “Deprioritize Alias Names From Domain.” As a result, the principals in these domains are not added to the list of user principals.
- Using “Suppress ‘Everyone’ Principal For Domain“ and “Suppress ‘Authenticated Users‘ Principal For Domain“ prevents users from being treated as members of these groups.
If only certain groups or users are to be stored in the cache, the "Group Filters" or "User Filters" can be configured and used for this purpose. The filters must correspond to the LDAP filter syntax. The cache structure can be restricted to certain ActiveDirectory organizational units. Therefore it is necessary to configure the "Exclude Base DN" and "Include Base DN" options accordingly. The "Distinguished Name" of all users and groups is compared with the individual lines of the configured "Include Base DN" and "Exclude Base DN" to include or exclude the user or group. The "Exclude Base DN" option is applied first.



- Specify the directory path for the cache in the “Database Directory Path“ field and change the “Cache In Memory Items Size” if necessary, depending on the available memory capacity of the JVM. Specify the time (in minutes) to wait before the cache is refreshed in the “Cache Update Interval“ field. This time interval is ignored the first time the service is started. In order to clean the cache and rebuild it after a certain number of updates N, the number N can be configured in the „Clean Cache after each N updates“ field. But in order to clean and rebuild the cache in certain times (the field “Clean Cache Update Schedule” can be configured by using extended cron expressions (a documentation and examples of cron expressions can be found here). If „Backup cache before cleaning“ is selected, the cache will be copied to /data/currentservice/<Service Name>/temp directory before cleaning.
The option "Group Members Resolution And Inversion Threads" determines the number of threads that resolve group members in parallel and invert these groups. Values less than 1 are assumed to be 1.
The option "In-Memory Containers Inversion Threshold" determines the maximum number of groups. If this number is exceeded, further RAM memory consumption during inversion is avoided by using hard disks.
The settings “Health Check Interval“, “Health Check max. Retries On Failure“ and “Heath Check Request Timeout“ allow this service to be restarted if, for instance, there are persistent connection problems. - The service is called up on the specified “Webservice Port”.



By selecting the “Include Identity Principals” option, you can also search the cache for identity principals that are sent with the identity itself and find their group memberships. However, - “Identity Alias Name Property” allows you to use properties located in the identity in order to use their value to search the cache for group memberships.




- “Preserve Case for Principals Matching Pattern“ allows you to keep certain principals (defined by Regex pattern) in the original format (not lower case).
- “Exclude Principals Pattern“ allows you to remove certain principals for all users from their principals list.
- Configuring “Foreign Security Principal Domains“ enables optimized resolution of foreign security principals (users or groups from trusted domains). Foreign security principals are resolved for the entire domain at startup and cached until next update. For example: If the users or groups of domain1.com are added in some groups of the domain2.com then only domain1.com should be configured in this field. If this field is empty then foreign security principals will be resolved individually which, in extreme cases, may cause performance issues (timeouts) if there is a very high number of foreign security principals. All involved domains should be already configured in LDAP Setting section of Network tab.
- “Suppress Anonymous Users Principals“ makes it possible, for example, to suppress the “Everyone” principal for anonymous users, meaning anonymous users cannot even find public documents.
- “Resolve non anonymous principal to all registered users“ determines whether "normal" (non-anonymous) users belong to the group that contains all users.
"Include Principals Rule" allows you to add new principals for all users (if these users match a configured Regex pattern). It can also be used to create "pseudogroups", i.e. groups that implicitly contain all users. For example, with the "Pattern" .* (matches all) and the "Principal" myportal-users a pseudogroup myportal-users can be created. Each user is thus a member of the pseudogroup myportal-users.
- “Suppress LDAP Queries“ prevents LDAP queries from being made to find these groups.
- „Case Insensitive Member Resolution“ determines if principals are checked in a case-insensitive manner. (Default: active)
- The “Use Parent Principal Cache Service“ and “Parent Principal Cache Service Port” options enable the group membership resolution of the user in another cache (parent cache). This means that the groups resolved by the parent cache are also returned as group membership.

- Finally, select this service in the crawler configuration under “Caching Principal Resolution Service”. See chapter 5.
Caching Principal Resolution Service (Novell LDAP)
- Add a “CachingNovellLdapPrincipalResolution” service under “Services” in the “Indices” tab.



- “LDAP Server Hostname” should only be configured to overwrite the configuration “Preferred LDAP Server” in the “LDAP Settings” in the “Network” tab. The required login information “LDAP Credential” can either be selected directly here or in the “Network” tab under “Endpoints.”

- The location for an LDAP server has this format: ldap://<ldapserver hostname> (e.g. ldap://ldapserver.mycompany.com).


- The “Username” must be specified in DN format and the “Domain” field must be left blank.


- For further configuration parameters see: Caching Principal Resolution (Active Directory LDAP).
Configuring the data sources for the Caching Principal Resolution Service.
Select one of the configured caching principal resolution services in “Data Source”. For example, Caching LDAP Principal Resolution can be selected for a file system data source (in the screenshot “FS Data Source”).

Producer Consumer Configuration
Producer Cache
On the producer node, click on "Add Property" in the "Consumer Services" section and configure the following fields:
Readonly on Consumer | This checkbox should be selected only on producer nodes of Mindbreeze InSpire environments with producer and consumer nodes. Local updates on all consumer nodes will be disabled. Consumers Base URLs should be configured in order to be updated remotely. |
Base URL | The URL to the Mindbreeze Management Center of the Mindbreeze InSpire consumer appliance. If hosted in the cloud, usually https://mycompany.mindbreeze.com:8443 Windows: Base URL should be directly the consumer cache URL (HTTP). E.g. http://consumerhost:23900 |
Realm | The target realm used by the consumer appliance.Default: "master". Windows: Realm should be empty |
Service Port | The Caching Principal Resolution Service Port on the Mindbreeze InSpire Appliance Windows: Service Port should be empty |
Disable | To disable updating the remote cache |


Consumer Cache
On InSpire environments with producer and consumer nodes local cache updates are disabled on consumers if “Readonly on Consumer” option is selected on producer nodes. On other environments activate the "Readonly" checkbox manually. No further configuration is necessary. After each cache update on producer all of the consumer caches are automatically synchronized.

Principal Resolution Service REST API
URL | Description |
http://localhost:23900/control?action=updatecache | Updates all containers. |
http://localhost:23900/control?action=updatecache&container=<containerid>&isunifiedid=false | Updates <containerid> only. |
http://localhost:23900/control?action=updatecache&partition=<partition> | Updates only one partition. |
http://localhost:23900/control?action=updatecache&scope=full | Performs a complete update |
http://localhost:23900/control?action=updatecache&scope=clean | Performs a cleanup and a full update. |
http://localhost:23900/control?action=cancelupdate | Aborts a running update. |
http://localhost:23900/control?action=checkconsistency&individualid=<userid>&isunifiedid=false | Checks if cached principals match <userid> with the principals provided by the source. If “all” is used instead of <userid>, the check is performed for all users. |
http://localhost:23900/control?action=checkprincipals&individualid=<userid>&timeoutms=<milliseconds> | Returns principals with <userid> from the cache. <userid> should not be a unified ID. |
http://localhost:23900/control?action=checkprincipals&individualid=“somestring“&aliasnameattribute=<attribute>&aliasname=<aliasname>&timeoutms=<milliseconds> | Returns principals with alias names. <aliasnameattribute> should be the configured “Service Request Identity Alias Name Property.” |
http://localhost:23900/control?action=checkprincipals&individualid=“somestring“&isanonymous=true&timeoutms=<milliseconds> | Returns principals of anonymous users |
http://localhost:23900/control?action=export&path=c:\export | Exports all database tables in CSV format. |
http://localhost:23900/control?action=reopencache&path=c:\newcache | Reopens the cache in an empty directory. The cache should be updated after reopening. |
http://localhost:23900/info?key=cachedir | Returns the currently used cache directory. |
http://localhost:23900/control?action=updateprincipalmembership&container=<container>&individuals=<individuals> | <individuals> List of individuals separated by ";" – e.g. user1; user2. |
http://localhost:23900/control?action=printstacktraces | Outputs the current status of all threads. |
http://localhost:23900/control?action=reset&aliasnames=true&partition=<partition> | Resets the alias names of a partition. |
http://localhost:23900/control?action=syncconsumers | All configured consumer caches are synchronized. |