2010-07-12 153 views
0

我正在努力为我们的Intranet设置SSO,这个想法是用户使用其活动目录用户名和密码登录到他们的工作站。然后,一个小应用程序将在登录时运行,如果它将被输入到带有时间戳的数据库中,它将向服务器发送一些唯一可识别的信息,用户名和计算机MAC地址。然后,当用户访问内部网时,Java小应用程序会将用户的mac地址发送给服务器,并将其与服务器进行比较,并将其与数据库条目进行比较,以查看它是否在给定时间范围内找到匹配项,如果发现匹配,则将其签名并移除来自数据库的条目。获取当前登录AD用户的唯一标识符令牌

不幸的是我们的Intranet没有在IIS上运行,所以我不能使用NTLM来进行身份验证,这将更容易,但不能跨浏览器兼容,这是需求之一。 NTLM也不是一种选择,因为我们的内部网只能以intranet.company.com的形式访问,据我所知NTLM不适用于这种形式的地址。

好吧,现在问题。我目前正在使用C++创建客户端身份验证应用程序,并且需要一种方法来获取一些唯一标识符或标记,以便将合法登录的Active Directory用户与持有应用程序并更改其本地用户名的人区分开来给AD用户。

是的我知道这可能是这样做的错误方式,但现在它似乎是唯一的选择。如果你有任何建议,除非不这样做,请让我知道。另外我知道如果你能想出一种方法来弥补NTLM的漏洞,请确保让我知道它所带来的巨大的安全漏洞。

回答

0

AD仅仅是微软实施的Kerberos。 Kerberos的核心功能之一是创建这样的许可权证。所以,在这方面你的解决方案根本不是黑客。这只是验证部分,看起来像是车祸。

但是,我完全失去了客户端问题。一般来说,AD或Kerberos的整个要点是您无法欺骗经过身份验证的用户。您只需向操作系统索取登录用户的故障单。无论谁掌握了你的应用,或者他的本地用户名是什么都没关系。操作系统确切地知道谁登录。

+0

这正是我想要做的,但我似乎迷失在如何获得该票。 就这个问题而言,攻击者所需要做的就是知道一个人将要登录的mac地址和时间,并且他可以成功地欺骗该用户,就像他们登录时一样,并且在他们访问内部网之前首次。现在我知道它不太可能,但它仍然是一个漏洞。 – 2010-07-13 20:33:57