Java / C # Kerberos inter-op possibile?
Domanda
ho implementato un server / client Kerberos utilizzando i socket in Java, in cui il client invia il suo servizio-TGT al server, e il server conosce il client è autentica.
La mia preoccupazione principale è il snooping attacco 'man-in-the-middle'. Qualcuno potrebbe catturare il TGT, e fingere di essere il cliente.
In un'implementazione Java puro, questo non è un problema, come ulteriore comunicazione è cifrato con le chiavi di sessione di servizio (GSSContext.wrap () / GSSContext.unwrap ()), che lo Snooper non ha.
Ma l'applicazione client deve essere ri-scritto in C #.
ho dato i miei due opzioni per mantenere la comunicazione crittografata sono:
- scrivere il mio involucro () e scartare () metodi in C #
- Usa SSL / TLS.
è l'opzione 1 possibile, prima che io guardo in SSL come opzione?
Soluzione
L'opzione 1 comporta qualche porting del codice pesante che si può o non può avere il tempo di fare. Opzione 2 suona bene.
Non c'è l'opzione 3, che dipende dalla vostra vincoli, utilizzare un canale criptato TCP privato, che dovrebbe essere più veloce di SSL / TLS, ma come ho detto potrebbe non essere applicabile. Si potrebbe utilizzare la crittografia simmetrica, dopo aver inizializzato le chiavi di sessione (che sono segreto)