ASP.NET
We need to add
System.DirectoryServices
DLL reference in our project. In
packages.config
file, we can add the below package or install it using
NuGet
.
<
packages
>
<
package
id
="
System.DirectoryServices"
version
="
4.7.0"
targetFramework
="
net461"
/
>
<
/packages
>
Here is the manager class,
Validate(string userId, string password)
method will validate things from LDAP server.
* Links:
* https://www.nuget.org/packages/System.DirectoryServices/
using
System.DirectoryServices;
namespace
DotNet
public
interface
ILdapValidator
bool
Validate(
string
userId,
string
password);
public
class
LdapManager : ILdapValidator
public
readonly
string
DomainName;
public
readonly
int
PortNumber;
public
LdapManager(
string
domainName,
int
port =
389
)
DomainName = domainName;
PortNumber = port;
public
bool
Validate(
string
userId,
string
password)
string
path = LdapPath();
string
username = UserFullId(userId);
DirectoryEntry de =
new
DirectoryEntry
(path, username, password, AuthenticationTypes.Secure);
DirectorySearcher ds =
new
DirectorySearcher(de);
ds.FindOne();
return
true
;
catch
(DirectoryServicesCOMException ex)
return
false
;
public
string
UserFullId(
string
userId)
string
value
=
string
.Format(
@"
{0}@{1}"
, userId, DomainName);
return
value
;
public
string
LdapPath()
string
value
=
string
.Format(
@"
LDAP://{0}:{1}"
, DomainName, PortNumber);
return
value
;
Here, we are using the LDAP manager class to validate username and password:
string
domain =
"
LdapdomainNameOrIp.com"
;
int
port =
389
;
string
user =
"
user.name"
;
string
password =
"
password@123"
;
bool
isValied =
new
LdapManager(domain, port).Validate(user, password);
ASP.NET Core
We need to add
Novell.Directory.Ldap
DLL reference in our project. In
.csproj
file, we can add the below package or install it from
NuGet
.
<
ItemGroup
>
<
PackageReference
Include
="
Novell.Directory.Ldap.NETStandard"
Version
="
2.3.8"
/
>
<
/ItemGroup
>
Here is the manager class,
Validate(string userId, string password)
method will validate things from LDAP server.
* Links:
* https://www.nuget.org/packages/Novell.Directory.Ldap.NETStandard/2.3.8
using
Novell.Directory.Ldap;
using
System;
namespace
DotNetCore
public
interface
ILdapValidator
bool
Validate(
string
userId,
string
password);
public
class
LdapManager : ILdapValidator
public
readonly
string
DomainName;
public
readonly
int
PortNumber;
public
LdapManager(
string
domainName,
int
port =
389
)
DomainName = domainName;
PortNumber = port;
public
bool
Validate(
string
userId,
string
password)
string
username = UserFullId(userId);
using
(
var
connection =
new
LdapConnection { SecureSocketLayer =
false
})
connection.Connect(DomainName, PortNumber);
connection.Bind(username, password);
return
connection.Bound;
catch
(LdapException ex)
return
false
;
public
string
UserFullId(
string
userId)
string
value
=
string
.Format(
@"
{0}@{1}"
, userId, DomainName);
return
value
;
Here, we are using the LDAP manager class to validate username and password:
string
domain =
"
LdapdomainNameOrIp.com"
;
int
port =
389
;
string
user =
"
user.name"
;
string
password =
"
password@123"
;
bool
isValied =
new
LdapManager(domain, port).Validate(user, password);
Source Code
It is a
Visual Studio 2017
solution with console projects:
DotNet:
.NET Framework 4.6.1
DotNetCore:
.NET Core 2.2
References
Validate a username and password against Active Directory?
Application Login through Active Directory (LDAP)
ASP.NET Core 2.0 LDAP Active Directory Authentication
Working with DirectoryServices in ASP.NET Core
Limitations
The LDAP path may not be simple as mine so fix it as needed.
The code may throw an error for untested inputs, if may please let me know
History
15
th
July, 2020: Initial version