You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

149 lines
4.9 KiB

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.DirectoryServices;
using System.DirectoryServices.Protocols;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ADDemo
{
public partial class Form1 : Form
{
string Username = "";
string ADError = "";
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
DirectoryEntry de = new DirectoryEntry();
Get_User("meyering", ref de);
}
public class UserData
{
public string Name { get; set; } = "";
public string Department { get; set; } = "";
public string Office { get; set; }
}
private void trylogin()
{
try
{
LdapConnection connection = new LdapConnection("ldap.fabrikam.com");
NetworkCredential credential = new NetworkCredential("user", "password");
connection.Credential = credential;
connection.Bind();
Console.WriteLine("logged in");
}
catch (LdapException lexc)
{
String error = lexc.ServerErrorMessage;
Console.WriteLine(lexc);
}
catch (Exception exc)
{
Console.WriteLine(exc);
}
//---------------------------
using (DirectoryEntry adsEntry = new DirectoryEntry(path, strAccountId, strPassword))
{
using (DirectorySearcher adsSearcher = new DirectorySearcher(adsEntry))
{
//adsSearcher.Filter = "(&(objectClass=user)(objectCategory=person))";
adsSearcher.Filter = "(sAMAccountName=" + strAccountId + ")";
try
{
SearchResult adsSearchResult = adsSearcher.FindOne();
bSucceeded = true;
strAuthenticatedBy = "Active Directory";
strError = "User has been authenticated by Active Directory.";
}
catch (Exception ex)
{
// Failed to authenticate. Most likely it is caused by unknown user
// id or bad strPassword.
strError = ex.Message;
}
finally
{
adsEntry.Close();
}
}
}
}
private void getusera()
{
UserData user = new UserData();
DirectoryEntry entry = new DirectoryEntry("LDAP://DC=mydomain,DC=local");
using (DirectorySearcher ds = new DirectorySearcher(entry))
{
ds.Filter = "(SAMAccountName=" + "myusername" + ")";
ds.PropertiesToLoad.Add("displayName");
ds.PropertiesToLoad.Add("name");
ds.PropertiesToLoad.Add("department");
ds.PropertiesToLoad.Add("physicalDeliveryOfficeName");
var result = ds.FindOne();
if (result != null)
{
try
{
user.Name = result.Properties["name"][0].ToString();
user.Department = result.Properties["department"][0].ToString();
user.Office = result.Properties["physicalDeliveryOfficeName"][0].ToString();
}
catch { }
}
}
}
public bool Get_User(string Userid, ref DirectoryEntry de)
{
var enTry = new DirectoryEntry("LDAP://db.debian.org/uid=meyering,ou=users,dc=debian,dc=org");
// Dim enTry As DirectoryEntry = New DirectoryEntry("LDAP://db.debian.org/uid=abi,ou=users,dc=example,dc=com")
var mySearcher = new DirectorySearcher(enTry);
mySearcher.Filter = "(SAMAccountName=" + Userid + ")";
foreach (System.DirectoryServices.SearchResult resEnt in mySearcher.FindAll())
{
try
{
de = resEnt.GetDirectoryEntry();
Username = de.Properties["givenname"].ToString() + de.Properties["sn"].ToString();
ADError = "";
return true;
}
catch (Exception ex)
{
this.Username = "";
this.ADError = ex.Message;
return false;
}
}
return false;
}
}
}