2010-07-12 156 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