![]() |
ingenieurbüro für innovative informationstechnikDipl.-Ing. Jörg Beckmann |
|||
![]() Einführung Installation Konfiguration Programmierung Lizenz Kontakt |
Konfigurationsanleitung
|
|||
InhaltKonfigurationsdateiGlobale ParameterPlug-InsLDAP-KonfigurationKonfigurationsdateiDer iiitAccessServer wird über eine XML-Datei konfiguriert.
Nach dem Start sucht das Programm in den Verzeichnissen Hier soll und kann nicht der grundsätzliche Aufbau von XML-Dateien erläutert werden, Informationen zu XML finden Sie z.B. bei http://www.xml.org. Um die Verarbeitung der Konfigurationsdatei einfach zu halten, werden nicht alle Möglichkeiten von XML genutzt. Im Gegensatz zur üblichen XML-Notation wird bei den Namen der Elemente und Attribute nicht zwischen Groß- und Kleinschreibung unterschieden. Der grundsätzliche Aufbau sieht so aus: <?xml version="1.0" encoding="UTF-8"?> <AccessServer> <Element1 Attribute1 = "value1" Attribute2 = "value2" AttributeN = "valueN" /> <Element2 Attribute1 = "value1" Attribute2 = "value2" AttributeN = "valueN" > <SubElement1 Attribute1 = "value1" Attribute2 = "value2" AttributeN = "valueN" /> <SubElement2 Attribute1 = "value1" Attribute2 = "value2" AttributeN = "valueN" /> </Element2> </AccessServer> Dabei können die einzelnen Elemente beliebig tief geschachtelt werden. Globale ParameterLoggingEs gibt zwei Möglichkeiten, Log-Ausgaben zu konfigurieren. Im einfachsten Fall wird nur der Log-Level eingestellt, indem dem ElementAccessServer das Attribut LogLevel
hinzugefügt wird:
<?xml version="1.0" encoding="UTF-8"?> <AccessServer LogLevel = "DEBUG" > ... </AccessServer> Die Log-Ausgabe geschieht dann auf Etwas detailierter kann das Logging mit einem eigenen Element <?xml version="1.0" encoding="UTF-8"?> <AccessServer> <Logger LogLevel = "INFO" LogFile = "./accessserver.log" MaxFileSize = "1000000" MaxBackupFiles = "5" /> ... </AccessServer> Das Attribut Mit den Attributen Das Element LDAP-AnbindungDie Konfiguration der LDAP-Anbindung wird sowohl für den LDAP Resolver wie auch für den CacheManager benötigt. Sie kann bei den jeweiligen Konfigurationen der Plug-Ins oder der Einfachheit halber auch global eingetragen werden. Sie hat folgenden Aufbau:<?xml version="1.0" encoding="UTF-8"?> <AccessServer> ... <LdapConfig RootDN = "dc=iiit,dc=de" LdapPersonSearchBase = "ou=person,dc=iiit,dc=de" LdapGroupSearchBase = "ou=group,dc=iiit,dc=de" LdapFormulaSearchBase = "ou=formula,dc=iiit,dc=de" LdapPersonClass = "iiitPerson" LdapGroupClass = "iiitGroup" LdapFormulaClass = "iiitFormula" LdapExpressionField = "iiitExpression" LdapCommonNameField = "cn" LdapUserIdField = "uid" LdapMemberUserIdField = "memberUid" > <server java.naming.provider.url = "ldap://ldap1.iiit.de/" java.naming.factory.initial = "com.sun.jndi.ldap.LdapCtxFactory" java.naming.security.protocol = "" java.naming.security.authentication = "simple" java.naming.security.principal = "" java.naming.security.credentials = "" /> <server java.naming.provider.url = "ldap://ldap2.iiit.de/" java.naming.factory.initial = "com.sun.jndi.ldap.LdapCtxFactory" java.naming.security.protocol = "" java.naming.security.authentication = "simple" java.naming.security.principal = "" java.naming.security.credentials = "" /> </LdapConfig> ... </AccessServer> Das Attribut Neben diesem Basis-Einstellungen muss noch konfiguriert werden, wie
auf den oder die LDAP-Server zugegriffen werden kann. Dazu dienen die
IgnoreCaseDas Element <?xml version="1.0" encoding="UTF-8"?> <AccessServer IgnoreCase = "true" > ... </AccessServer> Anmerkung: Der LDAP Resolver
erzwingt, dass dieser Wert intern auf VerifyUserMit dem Attribut <?xml version="1.0" encoding="UTF-8"?> <AccessServer VerifyUser = "true" > ... </AccessServer> Plug-InsDer iiitAccessServer unterstützt drei Arten von Plug-Ins, die in den folgenden Kapiteln dargestellt werden. Der grundsätzliche Aufbau der Konfiguration ist jeweils gleich: <?xml version="1.0" encoding="UTF-8"?> <AccessServer> ... <xxxPlugin PluginClass = [Classname] > <PluginConfig Attribute1 = "value1" Attribute2 = "value2" AttributeN = "valueN" > <Element Attribute1 = "value1" Attribute2 = "value2" AttributeN = "valueN" > <SubElement1 Attribute1 = "value1" Attribute2 = "value2" AttributeN = "valueN" /> <SubElement2 Attribute1 = "value1" Attribute2 = "value2" AttributeN = "valueN" /> </Element> </PluginConfig> </xxxPlugin> ... </AccessServer> Der Name des Elements ist Resolver Plug-InsResolver-Plugins werden benötigt, um Namen, die von der Applikation abgefragt werden, aufzulösen. In jeder Konfigurationsdatei muß dieses Element daher genau einmal vorhanden sein. Zur Zeit sind zwei Klassen von ResolverPlugins definiert, die im folgenden vorgestellt werden. Property-File ResolverDieser Resolver liest seine Daten aus einer gewöhnlichen Java-Property-Datei. Da die Einträge nur einmal beim Start eingelesen werden, ist dieser Resolver nicht für den produktiven Einsatz geeignet, sondern nur für Tests und Entwicklung. Er ist wie folgt zu konfigurieren: <?xml version="1.0" encoding="UTF-8"?> <AccessServer> ... <ResolverPlugin PluginClass = "de.iiit.AccessServer.parser.PropertyFileResolver" > <PluginConfig FileName = "etc/expressions.properties" /> </ResolverPlugin> ... </AccessServer> Die einzige Konfigurationsvariable ist der Name der Property-Datei. In diesem Beispiel ist der Name der mitgelieferten Datei eingetragen. Die Property-Datei hat folgenden Aufbau: ga1=a1,a2 ga2=a3,a4 ga3=a5,a6 gn= ga12=ga1+ga2 ga23=ga2+ga3 ga13=ga1+ga3 ga=ga1 + ga2 + ga3
LDAP ResolverDer LDAP-Resolver ist für den produktiven Einsatz gedacht.
Er benötigt eine LDAP-Konfiguration wie weiter
oben dargestellt. Diese kann entweder global oder im Element
<?xml version="1.0" encoding="UTF-8"?> <AccessServer> ... <LdapConfig ... > <server ... /> ... </LdapConfig> ... <ResolverPlugin PluginClass = "de.iiit.AccessServer.parser.LdapResolver" /> ... </AccessServer> Cache PluginsDer iiitAccessServer beinhaltet zwei verschiedene Cache-Implementierungen. Einfacher CacheDer einfache Cache ist ein reiner 1st-Level-Cache. Die Konfiguration sieht so aus: <?xml version="1.0" encoding="UTF-8"?> <AccessServer> ... <CachePlugin PluginClass = "de.iiit.AccessServer.cache.SimpleCache" > <PluginConfig InvalidationTimeout = "600" LRUTimeout = "100" SleepTime = "10" /> </CachePlugin> ... </AccessServer> Mit dem Datenbank-CacheDer Datenbank-Cache enthält einen 1st- und einen persistenten 2nd-Level-Cache. Letzterer stützt sich auf eine oder mehrere MySQL-Datenbanken und ist daher etwas aufwendiger zu konfigurieren. Dieser Cache wird auch nicht automatisch gefüllt, sondern benötigt ein eigenes Plug-In - den CacheManager - der die Daten aus der LDAP-Datenbank liest und im Cache in optimierter Form ablegt. <?xml version="1.0" encoding="UTF-8"?> <AccessServer> ... <CachePlugin PluginClass = "de.iiit.AccessServer.cache.DbCache" > <PluginConfig InvalidationTimeout = "600" LRUTimeout = "100" SleepTime = "10" Md5PatternLength = "1" > <JdbcDriver ClassName = "com.mysql.jdbc.Driver" /> <CacheDatabase Url = "jdbc:mysql://jacomo/AccessServerCache" UserName = "checker" Password = "checker" Connections = "5" /> <CacheDatabase Url = "jdbc:mysql://wuppi/AccessServerCache" UserName = "checker" Password = "checker" Connections = "5" /> </PluginConfig> </CachePlugin> ... </AccessServer> Die Attribute Innerhalb der Plug-In-Konfiguration sind weitere Elemente mit der
eigentlichen Datenbank-Konfiguration notwendig. Im Element
Für jede benötigte Datenbank werden in einem
Wenn mehr Datenbanken angegeben werden als benötigt, so werden diese weiteren Datenbanken ignoriert. Wichtig ist in diesem Zusammenhang, dass die Datenbanken in der gleichen Reihenfolge wie beim CacheManager angegeben werden. Wenn einzelne Datenbank-Server deutlich leistungsfähiger sind als andere, so können diese auch mehrfach angegeben werden, um ihnen einen größeren Anteil an der Gesamt-Last zu übertragen. Thread Plug-InsRMI ServerDer RMI-Server stellt die Schnittstelle der Wahl für Java-Applikationen dar. Die einzige Konfigurationseinstellung ist die Nummer des TCP-Ports, auf dem der Server seine private RMI Registry betreiben soll. Der Default-Wert für die Port-Nummer ist 54322. <?xml version="1.0" encoding="UTF-8"?> <AccessServer> ... <ThreadPlugin PluginClass = "de.iiit.AccessServer.server.RMIServer" > <PluginConfig Port = "54322" /> </ThreadPlugin> ... </AccessServer> TCP/IP ServerDer TCP/IP-Server ist zur Zeit die einzige Schnittstelle für nicht-Java Applikationen zum iiitAccessServer. Auch Java Applikationen können diese Schnittstelle nutzen. Besser ist dafür aber der oben beschriebene RMI-Server geeignet. Die einzige Konfigurationseinstellung ist die Nummer des TCP-Ports, auf dem der Server auf Verbindungen warten soll. Dieses Plug-In kann mehrfach mit unterschiedlichen Port-Nummern eingerichtet werden. Der Default-Wert für die Port-Nummer ist 54321. <?xml version="1.0" encoding="UTF-8"?> <AccessServer> ... <ThreadPlugin PluginClass = "de.iiit.AccessServer.server.TcpServer" > <PluginConfig Port = "54321" /> </ThreadPlugin> ... </AccessServer> CacheManagerWenn mehrere Instanzen des iiitAccessServers installiert sind, so darf und muss der CacheManager nur bei einer davon aktiviert werden. Der CacheManager liest beim ersten Start den Inhalt der LDAP-Datenbank und füllt damit den persistenten 2nd-Level-Cache. Danach werden alle Änderungen in der LDAP-Datenbank mitgelesen und in den Cache übertragen. Wenn dabei Fehler auftreten, kann automatisch eine e-Mail mit einer Fehlermeldung an den verantwortlichen Administrator gesendet werden. <?xml version="1.0" encoding="UTF-8"?> <AccessServer> ... <ThreadPlugin PluginClass = "de.iiit.AccessServer.cachemanager.CacheManager" > <PluginConfig ReplicationFile = "/var/lib/ldap/replication.log" RefreshInterval = "10" Md5PatternLength = "1" SMTPServer = "jacomo.iiit.de" SMTPPort = "-1" SMTPUser = "" SMTPPassword = "" SMTPMailTo = "root@iiit.de" > <JdbcDriver ClassName = "com.mysql.jdbc.Driver" /> <AdminDatabase Url = "jdbc:mysql://wuppi/AccessServerAdmin" UserName = "checker" Password = "checker" Connections = "5" /> <CacheDatabase Url = "jdbc:mysql://jacomo/AccessServerCache" UserName = "checker" Password = "checker" Connections = "5" /> <CacheDatabase Url = "jdbc:mysql://wuppi/AccessServerCache" UserName = "checker" Password = "checker" Connections = "5" /> </PluginConfig> </ThreadPlugin> ... </AccessServer> Genau wie beim LDAP Resolver kann die LDAP-Konfiguration global oder als Element innerhalb der Plug-In-Konfiguration abgelegt werden. Mit den Attributen Die Cache-Datenbanken müssen genauso wie beim
Datenbank-Cache konfiguriert werden.
Zusätzlich wird eine Datenbank für temporäre
Daten des CacheManagers benötigt. Diese wird analog zu
den anderen Datenbanken mit dem Element Um Änderungen in der LDAP-Datenbank in den Cache übertragen
zu können, liest der CacheManager die Replikationsdatei des
OpenLDAP-Servers und simuliert damit quasi den LDAP-KonfigurationHier kann und soll nicht die Konfiguration von OpenLDAP erläutert werden, sondern nur die Besonderheiten, die beim Betrieb des iiitAccessServers zusammen mit OpenLDAP zu beachten sind. Schema-ErweiterungenIm Unterverzeichnis Um diese Schema-Erweiterung in den LDAP-Server einzubinden, ist
die Datei
include /etc/openldap/schema/iiit.schema
einzutragen. Der entsprechende Abschnitt der Konfigurationsdatei sieht dann in etwa so aus: ... include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/nis.schema include /etc/openldap/schema/iiit.schema ... Indizierung der LDAP-DatenbankZusammen mit dem iiitAccessServer haben sich folgenden Index-Definitionen für die LDAP-Datenbank bewährt: ... index default pres,eq index uid index cn,sn pres,eq index objectClass eq ... ReplikationDamit der iiitAccessServer die Änderungen in der
LDAP-Datenbank mitlesen kann, muss beim LDAP-Server Replikation
eingeschaltet werden. Bei der Replikation schreibt der LDAP-Server
alle Änderungen im LDIF-Format in eine Datei, die normalerweise
vom Programm Wenn der iiitAccessServer in einer Umgebung mit
replizierten LDAP-Servern läuft, so kann er nicht zusammen
mit dem Master-Server sondern nur mit einem der Slave-Server
zusammen installiert werden, da es sonst zu Konflikten zwischen
dem iiitAccessServer und dem Wichtig: Der iiitAccessServer kann
nicht zusammen mit dem Um die Replikation im OpenLDAP-Server einzuschalten sind
Einträge der folgenden Art in der Konfigurationsdatei
... replogfile /var/lib/ldap/replication.log replica host=AccessServer binddn="cn=Replicator,dc=iiit,dc=de" bindmethod=simple credentials=secret Diese Einträge müssen hinter der
Datenbank-Definition, also überlicherweise ganz am Ende der
Konfigurationsdatei vorgenommen werden. Der Eintrag
|
||||
|
||||
Produktbezeichnungen auf diesen Seiten
sind häufig eingetragene Warenzeichen der jeweiligen
Markeninhaber. Senden Sie e-Mail mit Fragen oder Kommentaren zu dieser Website an: webmaster@iiit.de Copyright © 2001 - 2003 ingenieurbüro für innovative informationstechnik, Dipl.-Ing. Jörg Beckmann, Dortmund |