C# Winform 使用域账号进行登录验证

     公司用的系统很多要求用域账号来登录,具体实现如下:


using System.DirectoryServices;


public string ValidateDomainUser(string Domain, string UserName, string Password)
        {
            DirectoryEntry entry = new DirectoryEntry(Domain, UserName, Password);
            try 
            {
                string objectSid = (new SecurityIdentifier((byte[])entry.Properties["objectSid"].Value, 0).Value);//如果账号不对则会抛出异常
                return objectSid;
            }
            catch
            {
                return null;
            }
            finally
            {
                entry.Dispose();
            }

        }

        这里的第一个参数是用来初始化DirectoryEntry.Path参数的,CSDN对于此参数的介绍如下:

语法 Path 属性会根据提供程序而不同。 一些常见的情况有:

WinNT

    连接到的计算机上的组。 例如,"WinNT:// < 域名 > / < 计算机名 > / < 组名称 >"。 如果要连接到本地计算机上,"WinNT: / /< 计算机名 > / < 组名称 >"。

    连接到的计算机上的用户。 例如,"WinNT: / /< 域名 > / < 计算机名 > / < 用户名 >"。 如果要连接到本地计算机上,"WinNT: / /< 计算机名 > / < 用户名 >"。

    连接到计算机上的服务。 例如,"WinNT: / /< 域名 > / < 计算机名 > / < 服务名称 >"。 如果要连接到本地计算机上,"WinNT: / /< 计算机名 > / < 服务名称 >"。

    发现网络上的所有域。 例如,"WinNT:"域可通过枚举此项的子级。

LDAP

    连接到域中的组。 例如,"ldap://cn = < 组名称 >,CN = < 用户 >,DC = < 域组件 >,DC = < 域组件 >,..."。

    连接到域中的用户。 例如,"ldap://cn = < 完整的用户名称 >,CN = < 用户 >,DC = < 域组件 >,DC = < 域组件 >,..."。

    连接到域中的计算机。 例如,"ldap://cn = < 计算机名 >,CN = < 计算机 >,DC = < 域组件 >,DC = < 域组件 >,..."。

IIS

    连接到一个 Web 目录。 例如,"IIS://LocalHost/W3SVC/1/ROOT/ < Web 目录名称 >"。


     

   我用的参数Domain是这样的:   "LDAP://xxx.xxxxx.com/DC=xxx,DC=xxxxx,DC=COM";     


 引用自:https://msdn.microsoft.com/zh-cn/library/system.directoryservices.directoryentry.path(v=vs.110).aspx


猜你喜欢

转载自blog.csdn.net/weixin_39730950/article/details/80166874