This project has moved. For the latest updates, please go here.

ProtocolSetups

Bei Zyan kann man das Netzwerkprotokoll, welches für die Kommunikation verwendet werden soll, nach Bedarf einstellen. Außerdem können weitere Protokolleinstellungen, wie z.B. Verschlüsselung oder Authentifizierung, angepasst werden. Im Zyan-API werden diese Konfigurationsmöglichkeiten von sogenannten ProtocolSetup-Klassen bereitgestellt. Sie können entweder die vordefinierten ProtocolSetups verwenden, die mit Zyan ausgeliefert werden, oder Sie schreiben Ihre eigenen ProtocolSetups.

Jedes ProtocolSetup besteht immer aus zwei Klassen. Eine von IServerProtocolSetup abgeleitete Klasse für den Server und eine von IClientProtocolSetup abgeleitete Klasse für die Konfiguration des Clients.

Folgende ProtocolSetups werden mit Zyan ausgeliefert:
Netzwerkprotokoll Namensraum Server ProtocolSetup-Klasse Client ProtocolSetup-Klasse Verschlüsselung Authentifizierung
TCP Zyan.Communications.Protocols.Tcp TcpBinaryServerProtocolSetup TcpBinaryClientProtocolSetup Windows Std. Integr. Windows-Auth
TCP Zyan.Communications.Protocols.Tcp TcpCustomServerProtocolSetup TcpCustomClientProtocolSetup Benutzerdef. Benutzerdef.
TCP Zyan.Communications.Protocols.Tcp TcpDuplexServerProtocolSetup TcpDuplexClientProtocolSetup Benutzerdef. Benutzerdef.
HTTP Zyan.Communications.Protocols.Http HttpCustomServerProtocolSetup HttpCustomClientProtocolSetup Benutzerdef. Benutzerdef.
Named Pipes Zyan.Communications.Protocols.Ipc IpcBinaryServerProtocolSetup IpcBinaryClientProtocolSetup Windows Std. Integr. Windows-Auth

Authentifizierungsanbieter

Ein wichtiger Punkt bei der Netzwerkkommunikation ist die Authentifizierung (also das Überprüfen der Benutzeridentität). Zyan unterstützt verschiedene Authentifizirungsmodelle. Sie können die Benutzer z.B. ganz klassisch mit Benutzername und Kennwort authentifizieren oder die Integrierte Sicherheit von Windows für die Authentifizierung nutzen. Für jedes unterstützte Authentifizierungsmodell gibt es einen sog. Authentifizierungsanbieter (engl. authentication provider). Diese implementieren die IAuthenticationProvider-Schnittstelle (Namensraum Zyan.Communication.Security), welche nur eine einzige Methode, nämlich Authenticate umfasst. Der Ablauf der Authentifizierung ist denkbar einfach:
  • Anmeldeinformationen werden als Parameter entgegen genommen
  • Authentifizierung wird durchgeführt
  • Ergebnis der Authentifizierung (Erfolgreich oder nicht) wird zurückgegeben

Folgende Authentifizierungsanbieter werden mit Zyan ausgeliefert:
Authentifizierungsanbieter Beschreibung Unterstüzte ProtocolSetups
IntegratedWindowsAuthProvider Authentifizierung über Windows-Sicherheitstoken TcpBinary + IpcBinary
BasicWindowsAuthProvider Authentifizierung über Windows-Benutzername und Passwort Alle
NullAuthenticationProvider Keine Authentifizierung! Alle

Sie können Ihren eigenen Authentifizierungsanbieter erstellen, indem Sie die Wenn Sie eine Klasse schreiben, welche die IAuthenticationProvider-Schnittstelle implementiert. So ist es z.B. mit wenigen Zeilen Code möglich, einen Authentifizierungsanbieter zu erstellen, der Benutzer z.B. gegen eine SQL Datenbak authentifiziert.

Um eine bestimmte Authentifizierungsmethode zu verwenden, wird der entsprechende Authentifizierungsanbieter beim Erzeugen des ProtocolSetup übergeben.
Hier ein Beispiel (Verschlüsselte HTTP-Kommunikation mit Authentifizierung über Windows-Benutzername und -Passwort):
BasicWindowsAuthProvider authProvider = new BasicWindowsAuthProvider();
HttpCustomServerProtocolSetup protocolSetup = new HttpCustomServerProtocolSetup(8080, authProvider, true);

Im Falle des BasicWindowsAuthProviders muss der Client Anmeldeinformationen (Credentials) übergeben. Diese werden dem Konstruktor der ZyanConnection übergben. So sieht die passende Client-Konfiguration zu obigem Beispiel aus:
Hashtable credentials = new Hashtable();
credentials.Add(AuthRequestMessage.CREDENTIAL_USERNAME, "User");
credentials.Add(AuthRequestMessage.CREDENTIAL_PASSWORD, "Password");

HttpCustomClientProtocolSetup protocolSetup = new HttpCustomClientProtocolSetup(true);
ZyanConnection connection = new ZyanConnection("http://server:8080/Module", protocolSetup, credentials, false, true);

Die letzten beiden Parameter bestimmen das Verhalten der Sitzungsverwaltung. Folgende Einstllungen sind möglich:
autoLoginOnExpiredSession keepSessionAlive Beschreibung
false true Standardeinstellung: Die Sitzung der Verbindung wird automatisch durch einen Zeitgeber verlängert, solange das Verbindungsobjekt angemeldet ist
false false Keine automatische Verlängerung oder Neuanmeldung der Sitzung; Die Sitzung läuft ab, wenn innerhalb der Sitzungslebenszeit kein Methodenaufruf ausgeführt wird
true false Wenn ein Methodenaufruf erfolgt, nachdem die Sitzung abgelaufen ist, meldet sich das Verbindungsobjekt automatisch mit zwischengespeicherten Anmeldeinformationen erneut an. Die Neuanmeldung erfordert einen erneuten Roundtrip zum Server


Achtung!
Wenn die automatische Neuanmeldung (autoLoginOnExpiredSession) bei abgelaufener Sitzung aktiviert ist, merkt sich die ZyanConnection die Anmeldeinformationen im Arbeitsspeicher! Das kann ein erhöhtes Sicherheitsrisiko darstellen. Sie sollten den Parameter möglichst auf false einstellen, wenn Ihre Zyan-Anwendung übers Internet kommuniziert. Standardmäßig ist die automatische Neuanmeldung deaktiviert. Sie sollten dieses Feature nur verwenden, wenn Sie keine automatische Sitzungsverlängerung (keepSessionAlive) verwenden können.

Hinweis: Der IntegratedWindowsAuthProvider benötigt keine Anmeldeinformationen, sondern beschafft sich den Windows-Sicherheitstoken des Client-Benutzers automatich. Wenn in Verbindung mit diesem Authentifizierungsanbieter trotzdem manuelle Anmeldeinformationen vom Client übergeben werden, ignoeriet der Authentifizierungsanbieter diese!

Last edited Mar 21, 2011 at 12:55 PM by yallie, version 11

Comments

No comments yet.