Hi Sandeep,
To implement LDAP login authentication in a .NET Core application, you can use the System.DirectoryServices.Protocols
namespace, which provides classes for LDAP (Lightweight Directory Access Protocol) interactions. Below is a basic example of how to set up an LDAP authentication API.
Step 1: Add Necessary NuGet Package
Make sure you have the System.DirectoryServices.Protocols
package installed in your project. You can install it via NuGet Package Manager or using the command:
dotnet add package System.DirectoryServices.Protocols
Step 2: Implement LDAP Authentication
Here's a simple example of an API controller in .NET Core that handles LDAP authentication:
using Microsoft.AspNetCore.Mvc;
using System.DirectoryServices.Protocols;
using System.Net;
namespace YourNamespace.Controllers
{
[ApiController]
[Route("api/[controller]")]
public class LdapAuthController : ControllerBase
{
private readonly string ldapServer = "ldap://your-ldap-server"; // Replace with your LDAP server URL
private readonly string ldapBaseDn = "DC=example,DC=com"; // Replace with your LDAP base DN
[HttpPost("login")]
public IActionResult Login(string username, string password)
{
try
{
using (var ldapConnection = new LdapConnection(new LdapDirectoryIdentifier(ldapServer)))
{
ldapConnection.SessionOptions.ProtocolVersion = 3;
// Bind with the user's credentials
ldapConnection.Credential = new NetworkCredential(username, password);
ldapConnection.Bind(); // Attempt to authenticate
// If successful, you can return an OK status or further user details
return Ok(new { message = "Login successful", username });
}
}
catch (LdapException ldapEx)
{
// Handle specific LDAP exceptions
return Unauthorized(new { message = "Invalid credentials", error = ldapEx.Message });
}
catch (Exception ex)
{
// Handle other exceptions
return StatusCode(500, new { message = "An error occurred", error = ex.Message });
}
}
}
}
Step 3: Configure Your LDAP Server Details
Replace the following placeholders with your LDAP server details:
ldapServer
: The URL of your LDAP server (e.g., ldap://your-ldap-server
).
ldapBaseDn
: The base DN (Distinguished Name) where your user directory is located (e.g., DC=example,DC=com
).
Step 4: Testing the API
You can test the API using a tool like Postman or curl by sending a POST request to http://localhost:5000/api/ldapauth/login
with username
and password
parameters in the body.
Step 5: Secure the API
Ensure that the API is secured, as sending credentials in plain text over HTTP is not safe. You should implement HTTPS for your API and consider additional security measures such as token-based authentication or session management.
Additional Considerations
- Error Handling: Make sure to handle exceptions and errors appropriately, especially for different types of LDAP exceptions.
- Configuration: For production environments, consider storing the LDAP server details in a configuration file or environment variables.
- Logging: Implement logging to track successful and failed authentication attempts.
This basic setup should help you get started with LDAP authentication in a .NET Core application.