Asp.net中的Active Directory C#

时间:2011-09-07 07:07:38

标签: asp.net active-directory

我对Active Directory有一个问题。我的项目已托管在一台服务器上。并且活动目录已在另一台服务器中维护。现在,在员工登录时,我需要在我的应用程序中使用AD authientication。我使用这两个不同的服务时完全感到困惑,因为我无法获取ACtive Directory的记录;我使用的代码是:

string principal = this.Context.User.Identity.Name;
string filter = string.Format("(&(ObjectClass=dev)(sAMAccountName={1}))", "dev", principal);
string domain = "SOFTWARESERVER";
string[] properties = new string[] { "fullname","mail","sn" };
System.Security.Principal.WindowsIdentity wi = System.Security.Principal.WindowsIdentity.GetCurrent();
string[] a = Context.User.Identity.Name.Split('\\');

DirectoryEntry ADEntry = new DirectoryEntry("LDAP://SOFTWARESERVER/DC=softageenapl,DC=com,DC=np");
DirectorySearcher searcher = new DirectorySearcher(ADEntry);

searcher.SearchScope = SearchScope.Subtree;
searcher.ReferralChasing = ReferralChasingOption.All;
searcher.PropertiesToLoad.AddRange(properties);
searcher.Filter = filter;
SearchResult result = searcher.FindOne();
DirectoryEntry directoryEntry = result.GetDirectoryEntry();

string Name = ADEntry.Properties["Fullname"].Value.ToString();
string displayName = directoryEntry.Properties["displayName"][0].ToString();
string firstName = directoryEntry.Properties["givenName"][0].ToString();
string lastName = directoryEntry.Properties["sn"][0].ToString();
string email = directoryEntry.Properties["mail"][0].ToString();

1 个答案:

答案 0 :(得分:0)

我知道这个问题是从2011年开始的。目前,我希望这段代码可以帮助某人

(C#)添加以下引用:

using System.DirectoryServices;
using System.DirectoryServices.AccountManagement;

之后,您可以在应用中使用此代码:

PrincipalContext p = new PrincipalContext(ContextType.Domain, "IP of the server");
bool Valid = p.ValidateCredentials("User", "password");

如果logIn ,则名为有效的变量将显示 True 值。

看一下这个问题:来自here, StackOverflow,人们已经详细解释了这个主题(使用Microsoft Active Directory“登录”)。