桌面SSO客户端的参考实现(在C / C ++中),基于Kerberos的auth(服务器端是Java和MS AD)

时间:2012-11-09 12:10:53

标签: single-sign-on kerberos autologin spnego

我们需要在托管Windows环境中为富客户端实施桌面SSO(某些Vista计算机,某些Citrix客户端使用Win 2008 Citrix后端)。

富客户端(用C / C ++编写)使用SOAP Web服务连接到服务器。服务器是在JBoss EAP上运行的Java应用程序。用户数据存储在Microsoft ActiveDirectory中。 ADFS 2.0不适用于我们。富客户端不使用Internet Explorer组件。

我们计划在服务器端使用PicketLink。 然而,核心问题是:我们如何将SSO注入C / C ++客户端?我们使用哪些API?我的理解是我们需要在客户端中读取Kerberos令牌,但我想避免手动实现所有Kerberos交互。 Windows API中是否有任何缩减层?任何第三方图书馆?

也许有一个开源参考实现或产品,它展示了如何在托管Windows环境中实现基于Kerberos的富客户端SSO?

非常感谢任何建议!

非常感谢!

1 个答案:

答案 0 :(得分:0)

如果您使用HTTP作为SOAP传输,则可以使用Microsoft的WinHTTP。它具有开箱即用的SPNEGO支持。这些门票将被JGSS高兴地接受。如果你真的需要在客户端看到如何使用SSPI,请查看libneon或libserf的C源代码。但是这三个库中的所有库都将通过开箱即用的SPNEGO提供HTTP服务。

注意:neon需要一个小补丁,但这个补丁可以在邮件列表中找到。 注2:我认为其他一切都有效:域,dns,帐户,spns等等。