Frage

Wir haben einen Verschlüsselungsdienst, den wir über net.tcp bereitgestellt haben.Meistens wird der Dienst zum Verschlüsseln/Entschlüsseln von Zeichenfolgen verwendet.Hin und wieder müssen wir jedoch große Dokumente (PDF, JPG, BMP usw.) verschlüsseln.

Was sind die besten Endpunkteinstellungen für ein Szenario wie dieses?Soll ich einen Stream annehmen/zurückgeben?Ich habe viel darüber gelesen, aber niemand gibt Hinweise, was zu tun ist, wenn die große Datei nicht häufig vorkommt.

War es hilfreich?

Lösung

MSDN beschreibt So aktivieren Sie Streaming über WCF ziemlich gut.

Beachten Sie: Wenn die Verbindung zwischen Client und Server verschlüsselt werden muss, müssen Sie Ihren eigenen Verschlüsselungsmechanismus implementieren.Der Standard net.tcp Für die Verschlüsselung sind X.509-Zertifikate erforderlich, die mit Streams nicht funktionieren, da diese Art der Verschlüsselung auf einmal für eine gesamte Nachricht und nicht für einen Bytestrom funktionieren muss.

Dies bedeutet wiederum, dass Sie den Client nicht mit den standardmäßigen WCF-Sicherheitsmechanismen authentifizieren können, da für die Authentifizierung eine Verschlüsselung erforderlich ist.Die einzige mir bekannte Lösung hierfür besteht darin, eigene benutzerdefinierte Verhaltenserweiterungen auf Client und Server zu implementieren, um die Authentifizierung durchzuführen.

Eine wirklich gute Referenz zum Hinzufügen benutzerdefinierter Verhaltenserweiterungen ist Hier:Hier wird auch dokumentiert, wie eine benutzerdefinierte Konfiguration bereitgestellt wird (etwas, das meiner Meinung nach derzeit nirgendwo in den MSDN-Dokumenten besprochen wird).

Andere Tipps

Ein Muster, dem Sie folgen könnten, wäre ein asynchroner Dienst, der Dateien an einem gemeinsam genutzten Dateisystemspeicherort bearbeitet:

  1. Platzieren Sie die zu verschlüsselnde Datei an einem freigegebenen Speicherort
  2. Rufen Sie den Dienst auf und weisen Sie ihn an, die Datei zu verschlüsseln. Dabei übergeben Sie sowohl den Speicherort und Namen der Datei als auch die Adressen eines Rückrufdienstes auf dem Client
  3. Der Dienst würde die Datei verschlüsseln und die verschlüsselte Kopie an einem freigegebenen Speicherort ablegen (derselbe Ort, an dem die unverschlüsselte Kopie abgelegt wurde, oder ein anderer, spielt keine Rolle).
  4. Der Dienst würde den Client zurückrufen und ihm den Namen und den Speicherort der verschlüsselten Datei mitteilen
  5. Der Client kann die verschlüsselte Datei abrufen
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top