Das Benutzer-Manager-Interface

Der Content Management Server (CM) muss häufig feststellen, ob ein bestimmter Benutzer auf eine bestimmte Art und Weise auf eine Datei zugreifen darf, oder ob ein Benutzer zu einer bestimmten Benutzergruppe gehört. Um solche Fragen zu beantworten, ruft der Content Management Server entsprechende externe, d.h. nicht eingebaute Tcl-Prozeduren auf. Diese Prozeduren bilden das Benutzermanager-API. Indem die Implementation der Prozeduren des APIs geändert wird, können andere Benutzermanager als der in den CM eingebaute angesprochen werden, um solche Fragen zu beantworten.

An den Content Management Server können je ein Benutzermanager für das Redaktionssystem und das Live-System angebunden werden. Da Implementationen für den eingebauten Benutzermanager (die Voreinstellung) sowie für LDAP und ADS mitgeliefert werden, reicht es in der Regel aus, die jeweils zu verwendende Implementation zu konfigurieren.

Dies geschieht mit Hilfe des Systemkonfigurationseintrags userManagement und seinen Untereinträgen editorial und live. Diese spezifizieren jeweils wiederum je eine Konfigurationsdatei:

<?xml version="1.0" encoding="UTF-8"?>
<userManagement>
  <editorial fileName="um_ldap_nis.xml"/>
  <live fileName="um_none.xml"/>
  ...
</userManagement>

Eine solche Konfigurationsdatei (wie oben beispielsweise um_ldap_nis.xml) konfiguriert das zu verwendende Schnittstellenmodul:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <handler>ldap_nis</handler>
  <config>
    <-- Server-Einstellungen -->
    <host>ldap.server</host>
    <!-- LDAP-Account mit weitreichenden Leserechten für Datenabfrage
         (leerer Wert: anonyme LDAP-Anfragen) -->
    <bindDn>cn=manager,dc=company,dc=de</bindDn>
    <bindPassword>password</bindPassword>
    <!-- Die folgenden Server-Angaben sind optional -->
    <port>389</port>
    <!--  LDAP-Protokollversion (Alternative: 2)  -->
    <protocolVersion>3</protocolVersion>
    <!--  Verbindungsaufbau (default: unverschlüsselt; weitere Optionen: ssl, tls -->
    <secureConnection>tls</secureConnection>

    <-- Gruppen -->
    <groupSearchBase>ou=groups,dc=company,dc=de</groupSearchBase>
    <groupFilter>(objectclass=posixGroup)</groupFilter>
    <groupResolver>
      <name>simple</name>
      <properties>
        <dnFormat>cn=%s,ou=groups,dc=company,dc=de</dnFormat>
      </properties>
    </groupResolver>
    <!-- Angaben zu LDAP-Attributen, die jeweils den Wert eines usermanAPI-Keys bereitstellen -->
    <groupAttributeMapping>
      <name>cn</name>
      <realName>description</name>
    </groupAttributeMapping>

    <-- Die folgenden Angaben haben für einen Live-Benutzer-Anbindung keine Relevanz
        (es geht hier um den CM, der keine Live-Benutzer hat) -->
    <-- Benutzer -->
    <userSearchBase>ou=people,dc=company,dc=de</userSearchBase>
    <userFilter>(objectclass=posixAccount)</userFilter>
    <userResolver>
      ...
    </userResolver>
    <userAttributeMapping>
      ...
    </userAttributeMapping>

    <-- Gruppenzugehörigkeit -->
    <!-- Ab Version 6.5.0: konfigurierbares Attribut für die Gruppenzugehörigkeit -->
    <groupToUserRelationAttribute>memberUid</groupToUserRelationAttribute>
    <!-- Das existierende relationAttribute enthält als Wert für den Benutzer
         dessen Namen (true) oder seinen DN (false; default) -->
    <memberValueIsLogin>true</memberValueIsLogin>

    <!-- Gewährung globaler Rechte. Der über den Namen referenzierte Resolver wird
         aus cm/serverCmds/userman/lib/ldap/resolver/perm/<name>.tcl geladen -->
    <globalPermissionResolver>
      <name>simple</name>
      <properties/>
    </globalPermissionResolver>

    <!-- Explizite Superuser (Liste von Logins) -->
    <superUsers type="list">
      <login>root</login>
    </superUsers>
  </config>
</configuration>

Mit dem Unterelement handler wird ein Connector-Tcl-Skript referenziert, das sich im instanzspezifischen Verzeichnis

/NPS/instance/instName/script/cm/serverCmds/userman/handler

oder im gemeinsamen Verzeichnis

/NPS/share/script/cm/serverCmds/userman/handler

befindet. Das betreffende Skript ist dafür zuständig, die Konfigurationsparameter auszulesen und die erforderlichen Tcl-Schnittstellen-Prozeduren zu implementieren. Verwenden Sie die mitgelieferten Skriptdateien als Vorlage, um gegebenenfalls eigene Connectoren zu erstellen. Das dazu gehörende Interface ist in Abschnitt Das Benutzermanager-API beschrieben.

Die folgenden Anbindungsvarianten werden mit CMS Fiona ausgeliefert.

  • Datenquelle: Internes Benutzermanagement
  • Dummy für kein Live-Benutzermanagement (none)
  • Datenquelle: ADS
  • Datenquelle: LDAP in
    • zwei normalen Varianten und
    • einer einfach gehaltenen Lösung

Ein externer Benutzermanager muss bestimmte allgemeine Eigenschaften haben, damit er mit CMS Fiona eingesetzt werden kann. Beachten Sie bitte auch die Anforderungen an LDAP-Server.