c++ - 通过 kerberos 或任何安全协议(protocol)向 Windows 服务器应用程序验证 linux 客户端应用程序

标签 c++ linux authentication kerberos handshake

我需要一些可用于我的额外研究的指南或关键字。

假设有用 C++ 编写的客户端和服务器应用程序。有可能将 blob 从客户端传递到服务器,反之亦然。在windows上,我们可以介绍Kerberos的利用,生成,处理这样的blob,接受它,模拟线程等等。msdn上有一些例子。这不是那么简单,但我已经设法让它发挥作用。

但是如果我的客户端运行在 linux 机器上呢?最简单且不安全的身份验证方法是通过 blob 以原始格式传递用户的用户名/域/密码。但是如果我想使用 Kerberos 呢?所以,问题是:

  • 我需要在客户端 linux 机器上具备哪些先决条件?我的第一个想法是安装在那里的某种 samba/winbind 东西。我听说 samba 通过 Kerberos 向 Windows AD 进行身份验证。

  • 有没有在 Linux 上执行 Kerberos 握手的好例子?我知道麻省理工学院网站上有一些例子。我应该使用这些吗?我想让它以正确的方式工作并测试它并不是那么容易(实际上我从我的 Windows 经验中知道它)。

最佳答案

您应该研究的 API 是 GSSAPI。如果 Windows 服务器应用程序使用 SSPI(GSSAPI 的 Windows 版本),那么您应该能够使用 GSSAPI 编写可互操作的客户端。不过,这实际上取决于 Windows 服务器如何使用 SSPI。参见 MSDN SSPI一些细节。

MIT kerberos 库可用于大多数 linux 发行版,并且具有使用 kerberos 执行 GSSAPI 所需的所有库。

GSSAPI 是一个用于包装数据的库,您仍然需要实现生成的协议(protocol)交换。这可能非常复杂,具体取决于 Windows 服务器的编写方式。

可以使用 Active Directory 作为您的 KDC 来编写 linux 客户端/服务器 kerberos 应用程序。查看Linux Samba代码应该 帮助您了解编写 linux 客户端所涉及的一些问题 用于基于 Windows 的服务。

关于c++ - 通过 kerberos 或任何安全协议(protocol)向 Windows 服务器应用程序验证 linux 客户端应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29990553/

相关文章:

面向 Objective-C 程序员的 C++

c++ - 无法执行else语句,它会给出错误

c++ - 如何为多人游戏作弊(例如 : Tibia) accesses information from the client (in this case, C++)?

linux - 打开Kafka与外界通信的端口

c++ - 对以下程序的输出感到困惑

c - 为什么while循环会清除一个变量?

linux - 正确重新配置 dns 后,DNS 无法解析,除非在 centos 上重新启动我的脚本

javascript - 使用 firebase 创建简单例份验证的最佳方法是什么?

excel - 在 IE 中打开 Excel 文件会引发三次登录?

javascript - 使用 CSRF token 登录 Cypress