ingenieurbüro für innovative informationstechnik

Dipl.-Ing. Jörg Beckmann

Startseite   »   Produkte   »   iiitAccessServer   »   Programmierung
  

Programmierung

Einführung

Zur Anbindung von Clients an den iiitAccessServer stehen zwei Schnittstellen zur Verfügung. Für in Java geschriebene Applikationen ist die RMI-Schnittstelle gedacht, während für andere Applikationen eine über TCP/IP anzusprechende Socket-Schnittstelle zur Verfügung steht. Beide Schnittstellen werden in den folgenden Abschnitten vorgestellt.

Die RMI Schnittstelle

Für Java Applikationen gibt es die Möglichkeit den iiitAccessServer über RMI anzusprechen. Diese Methode hat den Vorteil, dass eine fertige Client-Bibliothek zur Verfügung steht, die neben der reinen Kommunikation auch noch einen lokalen Cache enthält. Als Beispiel-Implementierung eines Clients gibt es den SimpleClient, der es erlaubt, über eine einfache Kommandoeingabe Anfragen an den Server zu stellen. Als weiteres Beispielprogramm kann auch die Klasse ShutDown herangezogen werden, die dazu dient, einen auf dem lokalen Host laufenden Server geregelt zu beenden.

Für die Anbindung von Java-Clients steht in den Binärpaketen mit der Datei iiitAccessClient.jar eine spezielle Client-Library bereit. Diese unterscheidet sich vom vollständigen Archiv iiitAccessServer.jar dadurch, das nur die für den Client benötigte Software darin enthalten ist.

Die einzelnen Klassen der RMI-Schnittstelle sind im Rahmen der Java-Dokumentation beschrieben und sollen daher hier nicht weiter vertieft werden.

Die TCP/IP Schnittstelle

Applikationen, die nicht in Java geschrieben sind, können den iiitAccessServer über seine TCP/IP-Schnittstelle anprechen. Über ein einfaches Protokoll und eine ebenfalls einfache Kommandosprache können Kommandos an den Server gesendet und Antworten von ihm empfangen werden.

Beim Öffnen des Sockets meldet sich der iiitAccessServer mit einer Begrüßung wie dieser:

iiitAccessServer - For help send command "HELP"
OK

Der iiitAccessServer ist nun bereit für den Empfang von Kommandos.

Die einzelnen Kommandos werden weiter unten in eigenen Kapiteln vorgestellt.

Jedes Kommando wird gegebenenfalls mit einem Ergebnis und einer Zeile mit dem Inhalt

OK

oder einer Fehlermeldung der Form

ERROR <Nummer>: <Fehlermeldung>

beantwortet.

Die möglichen Fehlermeldungen werden ebenfalls weiter unten vorgestellt.

Nach der Abschluss der Antwort mit OK oder ERROR ... ist der iiitAccessServer wieder bereit für den Empfang eines neuen Kommandos.

Kommandos des TCP/IP-Servers

Folgende Kommandos sind definiert und werden in den folgenden Kapiteln im Detail behandelt:

HELP
QUIT
SHUTDOWN
SETUSER=<user>
EXPR=<expression>

Bei den Kommandos wird nicht zwischen Groß- und Kleinschreibung unterschieden.

HELP

Das Kommando HELP ist in erster Linie für interaktive Sessions gedacht. Es produziert eine Übersicht der definierten Kommandos in dieser Art:

HELP - This help
QUIT - Close connection
SETUSER=<user> - Set user for expressions
EXPR=<expression> - Evaluate expression
OK

QUIT

Diese Kommando beendet die aktuelle Sitzung. Es liefert eine kurze Bestätigung in der Form:

Closing connection

Diese Ausgabe wird nicht mit OK abgeschlossen, da der Server ja auch keine weiteren Kommandos mehr entgegen nimmt.

SHUTDOWN

Eine Sonderrolle nimmt das Kommando SHUTDOWN ein. Es beendet den iiitAccessServer. Aus Sicherheitsgründen kann es nur vom lokalen Rechner aus abgesetzt werden, also z.B. mit einer Telnet-Sitzung, die so aufgerufen wird:

> telnet localhost 54321

Das Kommando liefert eine kurze Bestätigung in der Form:

Closing connection and shutting down

Auch diese Ausgabe wird nicht mit OK abgeschlossen.

SETUSER

Das Kommando SETUSER=<user> setzt den Usernamen für die nachfolgenden Rechte-Abfragen. Dazu wird der Name des Users als Parameter übergeben:

setuser=joe
OK

EXPR

Mit dem Kommando EXPR=<expression> werden die eigentliche Abfragen durchgeführt. Als Parameter kann der Name einer Gruppe, eines Ausdrucks, eines Users oder auch ein dynamischer zusammengestellter Ausdruck aus den vorgenannten Elementen übergeben werden. Hier ein paar Beispiele:

setuser=joe
OK
expr=confirm
false
OK
expr=joe
true
OK
expr=confirm-joe
false
OK
expr=confirm+joe
true
OK

Der Server antwortet mit true, wenn der User in der Ergebnismenge enthalten ist und andernfalls mit false. Abgeschlossen werden die Antworten jeweils mit OK.

Fehlermeldungen

Fehlermeldungen bestehen immer aus dem Schlüsselwort ERROR, einer eindeutigen Fehlernummer und einer Fehlermeldung im Klartext. Zur Zeit sind vier verschieden Fehler definiert, die in den folgenden Abschnitten im Detail vorgestellt werden.

Unknown Command

Diese Fehlermeldung hat die Fehlernummer 100. Sie wird produziert, wenn das Kommando nicht erkannt wurde. Hier ein paar Beispiele:

help=1234
ERROR 100: Unknown command
asdf
ERROR 100: Unknown command
setuser
ERROR 100: Unknown command

ERROR 100: Unknown command

Syntax Error

Dieser Fehler mit der Fehlernummer 101 wird ausgegeben, wenn die Kommandozeile syntaktische Fehler enthält. Hier ein paar Beispiele:

setuser=
ERROR 101: Syntax error
a+b
ERROR 101: Syntax error
a + b
ERROR 101: Syntax error
a s d f
ERROR 101: Syntax error

No user set

Diese Fehlermeldung wird zurückgegeben, wenn ein Recht abgefragt werden soll, zuvor jedoch kein User gesetzt wurde. Die Fehlernummer ist 200.

iiitAccessServer - For help send command "HELP"
OK
expr=confirm
ERROR 200: No user set

Expression can not be evaluated

Diese Fehlermeldung mit der Nummer 201 wird zurückgegeben, wenn der Ausdruck nicht aufgelöst werden kann. Der Grund für diesen Fehler wird der Meldung im Klartext angehängt. Im folgenden Beispiel ist es ein Syntaxfehler im auszuwertenden Ausdruck, aber auch anderen Ursachen sind möglich.

expr=confirm*joe
ERROR 201: Expression <confirm*joe> can not be evaluated
            - There is something strange near position 7 in <confirm*joe>

(Im Original wird diese Meldung in einer Zeile ausgegeben)

Invalid user ID

Dieser Fehler mit der Nummer 202 tritt auf, wenn das globale Konfigurations-Attribut VerifyUser true ist und beim Kommando SETUSER eine ungültige User-ID übergeben wird.

iiitAccessServer - For help send command "HELP"
OK
setuser=joe
OK
setuser=bob
ERROR 202: Invalid user ID

Ausdrücke

Bild 1

Die Möglichkeiten des iiitAccessServers sind ausführlich in einem White Paper beschrieben. Hier soll daher nur die Syntax der Ausdrücke kurz zusammengefasst werden.

Wie im Bild dargestellt, können zwei Gruppen (Mengen) von Benutzern zusammengefügt (addiert) werden. Mathematisch handelt es sich bei der entstandenen Menge C um die Vereinigungsmenge

C = A B.

Weil Mengenoperationen mit dem üblichen ASCII-Zeichensatz nicht dargestellt werden können, wird im iiitAccessServer die Darstellung

C = A + B

gewählt.

Die zweite dargestellte Gruppe bildet die Schnittmenge der Mengen C und D unter Ausschluß der Menge E. Die mathematisch korrekte Darstellung dieser Operation

F = C D \ E = (A B) D \ E

ist ebenfalls mit dem ASCII-Zeichensatz nicht darstellbar. Die Schreibweise im iiitAccessServer lautet daher

F = C & D - E = (A + B) & D - E.

Das Ergebnis enthält also alle Benutzer, die sowohl Mitglied in den Gruppen C und D, nicht jedoch in Gruppe E sind.

Die oben genannten Formeln können in der folgenden Art und Weise als Zeichenkette aufgebaut werden:

(x + y + z)
Eine Menge mit den Elementen x, y und z.
(A + B)
Die Vereinigungsmenge von A und B. In der Ergebnismenge sind alle Elemente der Mengen A und B enthalten.
(A - B)
Die Differenzmenge von A und B. Im Ergebnis sind alle Elemente von A enthalten, die nicht in B vorkommen.
(A & B)
Die Schnittmenge von A und B. Das Ergebnis enthält alle Elemente, die sowohl in A wie auch in B vorhanden sind.
((x + y + z) + A) - (b + e + f) & C
Ausdrücke lassen sich beliebig klammern. Die Auswertung erfolgt von links nach rechts. "&" hat Vorrang vor "+" und "-".

Informationen für Java Programmierer

Bis jetzt gibt es zum iiitAccessServer keine Dokumentation für Java Programmierer außer der JavaDoc API Dokumentation.
Seitenanfang