Java/C# Kerberos 互操作可能吗?
我已经使用 Java 中的套接字实现了 Kerberos 服务器/客户端,其中客户端将其服务 TGT 发送到服务器,并且服务器知道客户端是可信的。
我主要担心的是窥探的“中间人”攻击。有人可以捕获 TGT,并冒充客户端。
在纯 Java 实现中,这没有问题,因为进一步的通信是使用服务会话密钥(GSSContext.wrap()/GSSContext.unwrap())加密的,而窥探者没有这些密钥。
但客户端应用程序需要用 C# 重新编写。
我认为保持通信加密的两个选项是:
- 在 C# 中编写自己的 wrap() 和 unwrap() 方法
- 使用 SSL/TLS。
在我考虑使用 SSL 之前,选项 1 可行吗?
I have implemented a Kerberos server/client using sockets in Java, where the client sends his service-TGT to the server, and the server knows the client is authentic.
My main concern is the snooping 'man-in-the-middle' attack. Someone could capture the TGT, and pretend to be the client.
In a pure Java implementation, this is no problem, as further communication is encrypted with the service session keys (GSSContext.wrap()/GSSContext.unwrap()), which the snooper does not have.
But the client app needs to be re-written in C#.
I figure my two options for keeping communication encrypted are:
- Write my own wrap() and unwrap() methods in C#
- Use SSL/TLS.
Is option 1 possible, before I look into SSL as an option?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
选项 1 涉及一些繁重的代码移植,您可能有时间也可能没有时间去做。
选项 2 听起来不错。
有选项 3,这取决于您的限制,使用私有加密 TCP 通道,它应该比 SSL/TLS 更快,但正如我所说可能不适用。它可以使用对称加密,并通过会话密钥(这是秘密的)进行初始化
Option 1 involves some heavy code porting which you may or not may have time to do.
Option 2 sounds good.
There is option 3 which depends on your constraints, use a private encrypted TCP channel, which should be faster than SSL/TLS, but as I said may not be applicable. It could use symmetric encryption, having initialized by the session keys (which are secret)