[英]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.