Java / C # Kerberos inter-op möglich?
Frage
Ich habe einen Kerberos-Server / Client unter Verwendung von Sockets in Java implementiert, wo der Kunde seinen Dienst-TGT an den Server sendet, und der Server weiß der Kunde authentisch ist.
Mein Hauptanliegen ist der Snooping 'Man-in-the-middle' Angriff. Jemand könnte das TGT erfassen, und so tun, als der Kunde zu sein.
In einer reinen Java-Implementierung ist dies kein Problem, da die weitere Kommunikation mit den Dienstsitzungsschlüsseln (GSSContext.wrap () / GSSContext.unwrap ()) verschlüsselt ist, welche die Schnüffler nicht haben.
Aber die Client-Anwendung muss neu geschrieben in C # sein.
Ich schätze meine zwei Möglichkeiten für die Aufbewahrung Kommunikation verschlüsselt sind:
- Schreiben meine eigene Wrap () und unwrap () Methoden in C #
- SSL / TLS verwenden.
Ist die Option 1 möglich, bevor ich in SSL als Option aussehen?
Lösung
Option 1 beinhaltet einige schwere Portieren von Code, die Sie kann oder auch nicht Zeit zu tun haben kann. Option 2 Töne gut.
Es gibt die Option 3, die auf Ihrem Beschränkungen abhängt, einen privaten verschlüsselten TCP-Kanal verwenden, die schneller sein sollte als SSL / TLS, aber wie gesagt nicht anwendbar sein. Es könnte die symmetrische Verschlüsselung verwenden, die von dem Sitzungsschlüssel initialisiert habe (die geheim sind)