Aufgabe 3:
Lernziel
- Verständnis für die Socket-Programmierung mit UDP/IP
- Verständnis von SUN-RPC
Aufgabenbeschreibung
Im Rahmen der dritten praktischen Aufgabe soll der bisher implementierte
Client um eine User-Authentifizierung erweitert werden. Die Informationen
(UserID und GroupID), die durch der Authentifizierung gewonnen
werden, sollen genutzt werden, um den Zugriff über das Dateisystem
auf berechtigte Nutzer zu beschränken. Zusätzlich soll aufbauend
auf der Authentifizierung das Kommando rwho
implementiert werden.
Die Umsetzung soll mit Hilfe von SUN-RPCs
erfolgen. Dazu gehört ein RPC basierter Server, der auf einem vorher
festgelegtem Rechner (IP-Addresse) laufen soll und einem Client,
der von unserem Client dargestellt wird.
Der Server soll die folgenden Funktionen anbieten:
- anmelden: Dient dazu einen Benutzer am Authentifizierungs-Server anzumelden. Der Benutzer identifiziert sich dazu mit seinem Nutzernamen, seinem Passwort und dem Hostnamen seines Rechners. Der Server gleicht diese Daten mit einer User-Datei ab. Ist der Abgleich erfolgreich speichert er die Daten (Username, Hostname, UserID, GroupID und ClientID) des Nutzers in der Liste der angemeldenten Anwender. Als Resultat der Anmeldung erhät der Client eine Datenstruktur, die die UserID und GroupID des Benutzers sowie eine ClientID zur späteren Identifikation der Anmeldung enthält.
- abmelden: Der Benutzer meldet sich vom Server ab. Dies geschieht, wenn der Benutzer den Client beendet (evtl. wenn sich der Benutzer ummeldet; Abmeldung mit gleichzeitiger Neuanmeldung unter anderem Namen).
-
status: Mit dieser Anfrage ist der Benutzer eines Clients
in der Lage abzufragen, wieviele und welche anderen Benutzer gerade online
(am Server angemeldet) sind. Eine Benutzung dieser Anfrage durch
das
'rwho'
Kommando setzt vorraus, das sich ein Benutzer beim Start des Clients automatisch beim Server angemeldet hat.
Unsinnige Aufrufe sollen in den Serverfunktionen durch Plausibilittstests erkannt und mit entsprechenden Fehlercodes zurückgewiesen werden.
Implementierungshinweise
Zuerst solltet ihr damit beginnen die Authentifikation als eigenständiges
Client/Server-Programm zu implementieren. Danach könnt ihr die Aufrufe
dieses Programms in euren Clienten integrieren. Da die Funktionalität zur
Authentifizierung vom Dateisystem des Clients unabhängig ist, kann sie
bereits getestet werden bevor das Dateisystem vollständig eingebunden wurde.
Hinweis: Hinweise zur Implementierung eines
SUN-RPC basierten Client/Servers könnt ihr der folgenden
Beschreibung
entnehmen.
Weitere Infos: rpcgen(1)
Vorgabe
Da die zu implementierenden Strukturen vom der Definition der SUN-RPCs abhängen, gibt es zu dieser Aufgabe keine Vorgabe.
Hilfestellung
- RPC Definition (Wikipedia.org)
- RPC Protokoll Spezifikation (RFC 1057)