Caching Principal Resolution Service
Installation und Konfiguration
Copyright ©
Mindbreeze GmbH, A-4020 Linz, .
Alle Rechte vorbehalten. Alle verwendeten Hard- und Softwarenamen sind Handelsnamen und/oder Marken der jeweiligen Hersteller.
Diese Unterlagen sind streng vertraulich. Durch die Übermittlung und Präsentation dieser Unterlagen alleine werden keine Rechte an unserer Software, an unseren Dienstleistungen und Dienstleistungsresultaten oder sonstigen geschützten Rechten begründet. Die Weitergabe, Veröffentlichung oder Vervielfältigung ist nicht gestattet.
Aus Gründen der einfacheren Lesbarkeit wird auf die geschlechtsspezifische Differenzierung, z.B. Benutzer/-innen, verzichtet. Entsprechende Begriffe gelten im Sinne der Gleichbehandlung grundsätzlich für beide Geschlechter.
Caching Principal Resolution Service (ActiveDirectory LDAP)
- Fügen Sie ein „CachingLdapPrincipalResolution“ Service unter “Services” im “Indices” Karteireiter hinzu.


- „LDAP Server Hostname“ soll nur dann konfiguriert werden, um die Konfiguration von „Preferred LDAP Server“ unter „LDAP Settings“ (im „Network“-Tab) zu überschrieben. Die benötigte Anmeldeinformation „LDAP Credential“ kann entweder direkt hier oder im „Network“-Tab unter „Endpoints“ ausgewählt werden. Wenn "LDAP Connection Encryption" ausgewählt ist, wird die "Connection Encryption" unter "LDAP Settings " im Reiter "Network" überschrieben. Es kann das SSL-Protokoll (LDAPS) auf Port 636 oder das TLS-Protokoll (StartTLS) auf Port 389 ausgewählt werden. Bei Auswahl von Unverschlüsselt wird keine Verschlüsselung durchgeführt.
- Um die Gruppen und die Benutzer von mehreren Domänen eines Active Directory Forests oder eines anderen Active Directory Forests (Trusted Domain Foreign Security Principals) im Cache zu beinhalten, sollen solche Domänen unter „LDAP Settings“ im „Domain Name“ Feld eingetragen werden und die entsprechende Credentials und Endpoints konfiguriert werden.




- Die Location kann als dns://<domain> (z.B dns://mycompany.com) konfiguriert werden, um diese Anmeldeinformation für mehrere LDAP Server in einer DNS Domäne gleichzeitig zu verwenden. Es ist ebenfalls möglich, ein Credential direkt einem LDAP-Server zuzuweisen: ldap://<ldapserver hostname> (z.B. ldap://ldapserver.mycompany.com).


- Falls keine Anmeldeinformationen konfiguriert sind wird Kerberos verwendet. Dafür muss unter Linux zuerst eine gültige Keytab hochgeladen und für diesen Service unter „Setup Kerberos Authentication“ ausgewählt werden.

- Im Kerberos Authentisierungsfall wird das UPN (User Principal Name) Attribut des Benutzers aus dem LDAP-Verzeichnis als Schlüssel für die Suche im Cache verwendet. Falls eine andere Authentisierung verwendet wird, welche z.B. die E-Mail-Adresse des Benutzers sendet, sollten die entsprechenden LDAP Attribute in diesem Fall mail als „Alias Name LDAP Attribute“ konfiguriert werden. Zusätzlich sollte im „Identity Alias Name Property“ Feld jener Eigenschaftsname eingetragen werden, der von der Authentisierung geliefert wird. Die Attribute „msDS-principalName“ und „userPrincipalName“ werden automatisch für alle Benutzer gespeichert, weil sie bei der Kerberos-Authentisierung vom ClientService verwendet werden. Deswegen sollen diese nicht als Benutzer-Aliasname konfiguriert werden. Falls nur eine Domäne konfiguriert ist, wird das Attribut: “samaccountname” ebenfalls automatisch hinzugefügt.

- Falls die ACLs während der Indizierung nicht normalisiert, d.h. nicht in das DN Format umgewandelt werden und sie z.B. dem „msDS-principalName“ Attribut einer Gruppe im ActiveDirectory entsprechen, dann sollte das „Group Alias Name LDAP Attribute“ ebenfalls konfiguriert werden.

- Falls die Benutzer unterschiedliche Aliasnamen in mehreren Domänen haben, können die Aliasnamen aus bestimmten Domänen mit „Deprioritize Alias Names From Domain“ depriorisiert werden. Dadurch werden die Principals in diesen Domänen nicht zu der Liste der Benutzer Principals hinzugefügt.
- Mit „Suppress ‚Everyone‘ Principal For Domain“ und „Suppress ‚Authenticated Users‘ Principal For Domain“ werden Benutzer nicht mehr als Mitglieder dieser Gruppen behandelt.
- Falls nur bestimmte Gruppen oder Benutzer im Cache gespeichert werden sollen, können die „Group Filter“ bzw. „User Filter“ dafür konfiguriert und verwendet werden. Die Filter müssen der LDAP Filter Syntax entsprechen. Der Cacheaufbau kann auf bestimmte ActiveDirectory Organisationseinheiten eingeschränkt werden. Dafür ist es notwendig die „Exclude Base DN“ und „Include Base DN“ Optionen entsprechend zu konfigurieren. Dabei wird der „Distinguished Name“ von allen Benutzern und Gruppen mit den einzelnen Zeilen des konfigurierten „Include Base DN“ und „Exclude Base DN“ verglichen, um den Benutzer oder die Gruppe zu inkludieren bzw. zu exkludieren. Die „Exclude Base DN“ Option wird zuerst angewandt.



- Geben Sie den Verzeichnispfad für den Cache im „Database Directory Path“ Feld an und ändern Sie, wenn notwendig, die “Cache In Memory Items Size”, abhängig vom verfügbaren Speicherplatz der JVM. Im „Cache Update Interval“ Feld geben sie die Zeit (Minuten) an, die gewartet wird bevor der Cache aktualisiert wird. Beim ersten Starten des Service wird diese Zeit ignoriert. Beim nächsten Starten des Service wird diese Zeit berücksichtigt. Um den Cache nach bestimmter Anzahl von Updates (N) zu löschen und neue aufzubauen kann eine Zahl N im Feld „Clean Cache after each N updates“ eingetragen werden. Im Feld „Clean Cache Update Schedule“ kann man das Cleanup und Update vom Cache mithilfe von Extended Cron Expressions zu bestimmten Zeiten konfigurieren (eine Dokumentation und Beispiele zu Cron Expressions finden Sie hier).. Wenn „Backup cache before cleaning“ ausgewählt ist, wird eine Kopie des Cache im /data/currentservice/<Service Name>/temp Verzeichnis angelegt.
Die Option „Group Members Resolution And Inversion Threads“ bestimmt die Anzahl der Threads, die parallel Gruppenmitglieder auflösen und diese Gruppen invertieren. Werte kleiner als 1 werden als 1 angenommen.
Die Option „In-Memory Containers Inversion Threshold“ bestimmt die maximale Anzahl der Gruppen. Falls diese Anzahl überschritten wird, wird weiterer RAM Speicherverbrauch beim Invertieren durch die Verwendung von Festplatten vermieden.
Die Einstellungen „Health Check Interval“, „Health Check max. Retries On Failure“ und „Heath Check Request Timeout“ ermöglichen es, dass dieser Service neugestartet wird falls es z.B. dauerhafte Verbindungsprobleme gibt. - Das Service wird am angegebenen “Webservice Port” aufgerufen.




- Mit der Auswahl der Option „Include Identity Principals“ kann man auch nach Identity Principals, die mit der Identity selbst mitgeschickt werden im Cache suchen und deren Gruppenmitgliedschaften finden.
- „Identity Alias Name Property“ erlaubt es aber in der Identity befindliche Properties zu verwenden um mit deren Wert im Cache nach Gruppenmitgliedschaften zu suchen.




- „Preserve Case for Principals Matching Pattern“ ermöglicht es, bestimmte (durch Regex Pattern definierte) Principals im originalen Format (nicht kleingeschrieben) beibehalten zu können.
- „Exclude Principals Pattern“ ermöglicht es, bestimmte Principals für alle Benutzer aus deren Principals Liste zu entfernen.
Die Konfiguration von "Foreign Security Principal Domains" ermöglicht eine optimierte Auflösung der Foreign Security Principals (Benutzer oder Gruppen aus trusted Domänen). Dabei werden beim Start alle Foreign Security Principals (FSP) einer Domäne aufgelöst und bis zur nächsten Aktualisierung zwischengespeichert. Zum Beispiel wenn die Benutzer oder Gruppen von domain1.com in einigen Gruppen von domain2.com hinzugefügt worden sind dann sollte nur domain1.com in diesem Feld konfiguriert werden. Wenn dieses Feld leer ist, werden FSPs einzeln aufgelöst, was in Extremfällen zu Performanz Problemen (Timeouts) führen kann, falls es sehr viele FSPs gibt. Alle hier konfigurierte Domänen sollten im Abschnitt LDAP-Einstellungen der Registerkarte Netzwerk ebenfalls konfiguriert sein.
- „Suppress Anonymous Users Principals“ ermöglicht es z.B. den ‚Everyone‘ Principal für anonyme Benutzer zu unterdrücken, d.h. anonyme Benutzer können auch öffentliche Dokumente nicht finden.
- „Resolve non anonymous principal to all registered users“ bestimmt, ob „normale“ (nicht anonyme) Benutzer zur Gruppe gehören, die alle Benutzer enthält.
- “Include Principals Rule“ ermöglicht es, neue Principals für alle Benutzer (wenn diese Benutzer einem konfigurierten Regex Pattern entsprechen) hinzuzufügen. Damit können auch „Pseudogruppen“, d.h. Gruppen, die implizit alle Benutzer beinhalten, erstellt werden. Beispielsweise kann mit dem „Pattern“ .* (matched alles) und den „Principal“ myportal-users eine Pseudogruppe myportal-users erstellt werden. Jeder Benutzer ist damit Mitglied in der Pseudogruppe myportal-users.
- Falls die Gruppen eines Benutzers nicht im Cache gespeichert sind, wird durch auswählen von „Suppress LDAP Queries“ verhindert, dass LDAP Abfragen gemacht werden, um diese Gruppen zu finden. „Case Insensitive Member Resolution“ bestimmt, ob Benutzer unabhängig von deren Groß- und Kleinschreibung geprüft werden. (Standard: aktiviert)
- „Use Parent Principal Cache Service“ und “Parent Principal Cache Service Port” Optionen ermöglichen die Gruppenmitglieschaftseauflösung des Benutzers in einem anderen Cache (Parent Cache). Dadurch werden zusätzlich die vom Parent Cache aufgelösten Gruppen als Gruppenmitgliedschaft geliefert.

- Zum Schluss wählen Sie in der Crawler Konfiguration unter „Caching Principal Resolution Service“ diesen Service aus. Siehe Kapitel 5.
Caching Principal Resolution Service (Novell LDAP)
- Fügen Sie ein „CachingNovellLdapPrincipalResolution“ Service unter “Services” im “Indices” Karteireiter hinzu.



- „LDAP Server Hostname“ sollte nur dann konfiguriert werden um die Konfiguration „Preferred LDAP Server“ im „LDAP Settings“ im „Network“ Karteireiter zu überschrieben. Die benötigten Anmeldeinformationen „LDAP Credential“ kann entweder hier direkt ausgewählt oder in der „Network“ Karteireiter unter „Endpoints“ ausgewählt werden.

- Die Location für einen LDAP Server hat das Format: ldap://<ldapserver hostname> (z.B. ldap://ldapserver.mycompany.com).


- Der “Username” muss im DN Format angegeben und das „Domain“ Feld leer gelassen werden.


- Für weitere Konfigurationsparameter siehe: Caching Principal Resolution (ActiveDirectory LDAP).
Konfiguration der Datenquellen für das Caching Principal Resolution Service.
Wählen Sie einen der konfigurierten Caching Principal Resolution Services in „Data Source” aus. Z.B. kann Caching LDAP Principal Resolution für eine Dateisystemdatenquelle (im Screenshot „FS Data Source”) ausgewählt werden.

Producer Consumer Konfiguration
Producer Cache
Klicken Sie am Producer Node auf “Add Property” im “Consumer Services” Abschnitt und konfigurieren Sie folgende Felder:
Readonly on Consumer | Diese Checkbox sollte nur auf Producer Nodes von Mindbreeze InSpire Umgebungen mit Producer und Consumer Nodes aktiviert werden. Dadurch werden auf Consumer Nodes keine automatische Cacheaktualisierungen durchgeführt. Um die Consumer Caches zu aktualisieren sollen die folgenden Parameter konfiguriert werden. |
Base URL | Die URL zum Mindbreeze Management Center der Mindbreeze InSpire Consumer-Appliance. Zum Beispiel: https://search.mycompany.com:8443 |
Realm | Ziel-Realm der Consumer-Appliance. Default “master” |
Service Port | Der Caching Principal Resolution Service Port auf der Mindbreeze InSpire Appliance Windows: Service Port sollte leer sein |
Disable | Um das Aktualisieren des Remote-Cache zu deaktivieren |


Consumer Cache
Auf Mindbreeze InSpire Umgebungen mit Producer und Consumer Nodes sind die lokale Cacheaktualisierungen auf Consumer Nodes deaktiviert, wenn die „Readonly on Consumer“ Option auf Producer Nodes konfiguriert ist. Auf andere Umgebungen ist die „Readonly“ Option manuell auszuwählen. Es ist keine weitere Konfiguration erforderlich. Consumer Caches werden nach jeder Aktualisierung im Producer Cache automatisch synchronisiert.

Principal Resolution Service REST API
URL | Description |
http://localhost:23900/control?action=updatecache | Aktualisiert alle Container. |
http://localhost:23900/control?action=updatecache&container=<containerid>&isunifiedid=false | Aktualisiert nur <containerid>. |
http://localhost:23900/control?action=updatecache&partition=<partition> | Aktualisiert nur eine Partition. |
http://localhost:23900/control?action=updatecache&scope=full | Vollständige Aktualisierung wird durchgeführt |
http://localhost:23900/control?action=updatecache&scope=clean | Cleanup und vollständige Aktualisierung wird durchgeführt. |
http://localhost:23900/control?action=cancelupdate | Bricht eine laufende Aktualisierung ab. |
http://localhost:23900/control?action=checkconsistency&individualid=<userid>&isunifiedid=false | Überprüft ob gecachte Prinzipals mit <userid> mit den von der Quelle bereitgestellten Prinzipals übereinstimmen. Wenn „all“ anstelle von <userid> verwendet wird, wird die Überrpüfung für alle Benutzer durchgeführt. |
http://localhost:23900/control?action=checkprincipals&individualid=<userid>&timeoutms=<milliseconds> | Gibt Prinzipals mit <userid> vom Cache zurück. <userid> sollte keine unified Id sein. |
http://localhost:23900/control?action=checkprincipals&individualid=“somestring“&aliasnameattribute=<attribute>&aliasname=<aliasname>&timeoutms=<milliseconds> | Gibt Prinzipals mit Aliasname zurück. <aliasnameattribute> sollte das konfigurierte ‚Service Request Identity Alias Name Property‘ sein. |
http://localhost:23900/control?action=checkprincipals&individualid=“somestring“&isanonymous=true&timeoutms=<milliseconds> | Gibt Prinzipals anonymen Benutzern zurück |
http://localhost:23900/control?action=export&path=c:\export | Exportiert alle Datenbanktabellen im CSV-Format. |
http://localhost:23900/control?action=reopencache&path=c:\newcache | Öffnet den Cache wieder in einem leeren Verzeichnis. Der Cache sollte nach dem Wiederöffnen aktualisiert werden. |
http://localhost:23900/info?key=cachedir | Gibt das momentan verwendete Cache-Verzeichnis zurück. |
http://localhost:23900/info?key=cachemode | Gibt den momentan verwendeten Modus zurück (read-only / read/write). |
http://localhost:23900/control?action=updateprincipalmembership&container=<container>&individuals=<individuals> | <individuals> Liste von Individuen getrennt mit „;“ Zeichen z.B. user1;user2. |
http://localhost:23900/control?action=printstacktraces | Gibt der aktuelle Zustand von allen Threads aus. |
http://localhost:23900/control?action=reset&aliasnames=true&partition=<partition> | Setzt die Aliasnamen von einer Partition zurück. |
http://localhost:23900/control?action=syncconsumers | Alle konfigurierte Consumer Caches werden synchronisiert. |