0

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

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

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

是的,我知道这可能是错误的做法,但现在它似乎是唯一的选择。如果您有任何建议,请告诉我。此外,我知道它会造成巨大的安全漏洞,如果您能想出一种方法来修补该漏洞而不使用 NTLM,请务必让我知道。

4

1 回答 1

0

AD 只是微软对 Kerberos 的实现。如果 Kerberos 的核心功能之一是创建此类权限票证。因此,在这一方面,您的解决方案根本不是 hack。只是验证部分看起来像车祸。

但是,我完全迷失了您遇到的客户端问题。一般来说,AD 或 Kerberos 的全部意义在于您不能欺骗经过身份验证的用户。您只需向操作系统索要登录用户的票证。谁拥有您的应用程序,或者他的本地用户名是什么都没有关系。操作系统准确地知道谁登录了。

于 2010-07-13T08:15:02.870 回答