Skip to content

Kommunikationsprotokolle konfigurieren

yallie edited this page May 21, 2018 · 1 revision

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!