PDA

View Full Version : خواندن UserName ها از روی سرور Domain



taha_ha@yahoo.com
دوشنبه 27 آبان 1387, 09:51 صبح
سلام
برای خواندن UserName ها از روی سرور Domainچه کدی باید بنویسم?

ath.gha
دوشنبه 04 آذر 1387, 20:20 عصر
سلام
برای خواندن UserName ها از روی سرور Domainچه کدی باید بنویسم?


یک storeprosedure به نام sp_who
وجود دارد که تمام کاربرانی که login کردن و آخرین عملی که اتفاق افتاده را نمایش می دهد

sre.net
شنبه 30 آذر 1387, 10:12 صبح
سلام
اگر درست متوجه شده باشم منظور شما بیرون کشیدن اطلاعات active directory از domain server هستش
برای دریافت این اطلاعات شما میتونید از پروتکل LDAP استفاده کنید، اسم این پروتکل مخفف پروتکل سبک اتصال به دایرکتوری است پس کار باهاش خیلی آسونه :چشمک:
نمونه ای که من تو یه پروژه وب ازش استفاده کردم رو براتون میذارم البته روش استفادش تو پروژه ویندوز فرم هم فرقی نمیکنه


public bool IsAuthenticated(string domain, string username, string pwd)
{
string domainAndUsername = domain + @"\" + username;
DirectoryEntry entry = new DirectoryEntry(_path, domainAndUsername, pwd);
try
{
//Bind to the native AdsObject to force authentication.
object obj = entry.NativeObject;

DirectorySearcher search = new DirectorySearcher(entry);
search.Filter = "(SAMAccountName=" + username + ")";
StringBuilder groupNames = new StringBuilder();


search.PropertiesToLoad.Add("cn");
search.PropertiesToLoad.Add("mail");
search.PropertiesToLoad.Add("telephoneNumber");
search.PropertiesToLoad.Add("displayName");
SearchResult result = search.FindOne();

if (null == result)
{
return false;
}

//Update the new path to the user in the directory.
_path = result.Path;
_filterAttribute = (string)result.Properties["cn"][0];

}
catch (Exception ex)
{
throw new Exception("Error authenticating user. " + ex.Message);
}

return true;
}


برای استفاده از توابع اکتیو باید دو کلاس زیر رو اد کنیــــــــــــــــد


using System.DirectoryServices;
using System.DirectoryServices.ActiveDirectory


اینم واسه کسب اطلاعات گروهها


public ArrayList GetGroups()
{
DirectoryEntry entry = new DirectoryEntry("LDAP://ACTIVE DIRECTORY IP OR HOST NAME", "USERNAME", "PASSWORD");
DirectorySearcher search = new DirectorySearcher(entry);
search.Filter = "(cn=" + _filterAttribute + ")";
search.PropertiesToLoad.Add("memberOf");
ArrayList groupNames = new ArrayList();

try
{
SearchResult result = search.FindOne();
int propertyCount = result.Properties["memberOf"].Count;
string dn;
int equalsIndex, commaIndex;

for (int propertyCounter = 0; propertyCounter < propertyCount; propertyCounter++)
{
dn = (string)result.Properties["memberOf"][propertyCounter];
equalsIndex = dn.IndexOf("=", 1);
commaIndex = dn.IndexOf(",", 1);
if (-1 == equalsIndex)
{
return null;
}
groupNames.Add(dn.Substring((equalsIndex + 1), (commaIndex - equalsIndex) - 1));
//groupNames.Append("|");
}
}
catch (Exception ex)
{
throw new Exception("Error obtaining group names. " + ex.Message);
}
return groupNames;
}



البته این کدها رو شخصا ننوشتم و توی سرچ پیدا کردم بعد customize کردم و حالشو بردم :چشمک:
آخه اختراع چرخ که لذتی نداره ، باید کاری کــــــــــــــــــــــــ ـرد ...

spicirmkh
چهارشنبه 20 مرداد 1389, 12:01 عصر
سلام

این دو کلاس که اضافه می کنم پیغام می دهد 'DirectoryServices' does not exist

سوال بعدی آیا در اکتیو دایرکتوری مشخصات دیگر مثل نام و فامیل آدرس ایمیل و جود دارد

برنامه هست نوشته باشید بصورت دمو نحوه کار اکتیو دایرکتوری نمایش دهد

با تشکر