簡體   English   中英

在客戶端 - 服務器應用程序中使用Active Directory驗證用戶

[英]Authenticating users using Active Directory in Client-Server Application

我被要求在現有客戶端服務器應用程序中針對Active Directory對用戶進行身份驗證提供支持。

此時,用戶從客戶端計算機提供用戶名和密碼,通過線路(加密)傳遞到我們的服務器進程,並與存儲在數據庫中的用戶名/密碼進行匹配。

最初,我認為這將是一個容易解決的問題,因為我可以簡單地從我們的服務器進程中針對Active Directory驗證用戶的名稱/密碼。 但事實證明,用戶不必從我們的客戶端應用程序輸入密碼,而是從當前的Windows登錄會話中獲取其憑據。

我現在面臨的問題是如何在沒有密碼的情況下使用Active Directory進行身份驗證? 我確信必須有一種方法可以某種方式將某種“令牌”從客戶端傳遞到我們的服務器進程,這可以用作另一種身份驗證方法,但到目前為止我的研究已經畫了一個空白。

我們的服務器是用C ++編寫的,所以我們將使用win32 API 我還打算使用運行Windows 2008 AD LDS的虛擬機來開發和調試它 - 我希望這對我想要實現的目標是足夠的。

非常感謝任何幫助或建議。

您執行NTLM / Kerberos / Negotiate SSPI交換循環 MSDN上有一個客戶端服務器的完整示例。 需要明確的是:您沒有明確使用任何類型的LDAP訪問。 LSA(本地安全機構)是否與LDAP通信並建立客戶端的身份。 如果你是在做整個SSPI環成功,該認證已成功已經和客戶身份對LDAP alread認證。 如果您的服務器需要知道客戶端身份(例如,知道使用rname),它將使用QueryContextAttributes(..., SECPKG_ATTR_NAMES,...)從導致SSPI循環的安全上下文中檢索它QueryContextAttributes(..., SECPKG_ATTR_NAMES,...)檢索用戶名SecPkgContext_Names結構。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM