通过远程活动目录验证用户

本文关键字:验证 用户 活动 程活动 | 更新日期: 2023-09-27 18:31:33

我有一个奇怪的场景,希望你们能提供帮助,我需要使用活动目录验证当前登录的用户,如果他们在网络上,这不是问题,但在某些情况下,他们将在另一个网络上(访问客户端),以便他们使用他们需要针对AD验证的软件。

目前我正在使用以下代码,我说这将在本地和远程工作是否正确?如果不是,我如何获取它来验证凭据?

DomainServer = new ActiveDirectory(Microsoft.Exchange.WebServices.Data.ExchangeVersion.Exchange2010, "LDAP://DOMAIN.NAME", "https://exchange.domain.name/ews/exchange.asmx");
DomainServer.connect();
if (!DomainServer.isConnected())
{
    domain_errors = "Unable to connect to Active Directory.";
}
class ActiveDirectory
    {
        private ExchangeService _ExchangeServer;
        private DirectoryEntry _searchRoot;
        private DirectorySearcher _search;
        private SearchResult _searchresult;
        private ExchangeVersion _ExchangeVer;
        private string _ActiveDirectoryAddress; 
        private string _ActiveDirectoryURL; 
        public ActiveDirectory(ExchangeVersion Ver, string ActiveDirectoryAddress, string ActiveDirectoryURL)
        {
            _ActiveDirectoryURL = ActiveDirectoryURL;            
            _ActiveDirectoryAddress = ActiveDirectoryAddress;
            _ExchangeVer = Ver;            
        }
        public void connect()
        {
            _ExchangeServer = new ExchangeService(_ExchangeVer);
            _ExchangeServer.UseDefaultCredentials = true;
            _ExchangeServer.Url = new Uri(_ActiveDirectoryURL);
            _ExchangeServer.Timeout = 60;
        }
        public bool isConnected()
        {            
            if (_searchRoot.Properties.Count > 0){
                return true;
            } else {
                return false;
            }
        }
    }

通过远程活动目录验证用户

Windows 在本地

计算机上缓存用户名和密码,以便域用户即使计算机(如便携式计算机)未连接到域也可以登录。 由于Windows本质上是为您处理身份验证,因此您真正需要做的就是授权谁可以使用该软件。 我能想到几种可能性。

首先,在数据库中,您可以维护一个用户表,其中包含有权访问该软件的用户的 SID 和用户名。 当用户执行程序时,请检查当前登录用户的 SID 是否在该表中。 这样,您可以限制哪些用户可以在不连接到 Active Directory 的情况下实际执行软件。 这也允许您在数据库级别撤销访问权限。

其次,数据库服务器是否可以访问活动目录? 如果是这样,请在 AD 中为有权访问此系统的用户创建一个组,然后在数据库中授予该组访问权限。 将数据库连接设置为使用 Windows 身份验证。 因此,如果此人属于该组,则他们有权访问数据库。 否则,他们不会。 然后,您只需在该组中添加或删除它们来控制访问,安全性将在数据库级别进行控制。

第三(我不喜欢这个),如果你有一个Web服务器,运行一个接受用户名和密码的Web服务(当然使用HTTPS),然后使用该Web服务通过防火墙连接并针对AD进行身份验证。 然后,只需将结果返回给应用程序即可。 这在将凭据传递到 Web 服务并通过防火墙打开连接时存在一些安全问题。