Problem med LDAP i webapp
Jeg tester en webapp. men kan ikke få validering af brugernavne og passwords mod en Windows 2003 server.Opstillingen er følgende:
W 2003 med AD og et domæne (OST)
W 2003 med IIS og webapp'en.
Webserveren er medlem af OST.
Jeg har benyttet store dele af koden fra:
http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q316748
Min kode er følgende:
---------------------
public bool IsAuthenticated(String username, String pwd)
{
String domainAndUsername = XMLSettings.Instance.GetValueAsString("server:domain") + @"\\" + username;
try
{
DirectoryEntry entry = new DirectoryEntry(_path, domainAndUsername, pwd);
Log.CreateLog(Log.Type.Information, "LDAP::IsAuthenticated", "Der blev udført DirectoryEntry(" + _path + ", " + domainAndUsername + ", " + pwd + ");");
//Bind to the native AdsObject to force authentication.
Object obj = entry.NativeObject;
DirectorySearcher search = new DirectorySearcher(entry);
search.Filter = "(SAMAccountName=" + username + ")";
search.PropertiesToLoad.Add("cn");
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)
{
Log.CreateLog(Log.Type.Error, "LDAP::IsAuthenticated", "Der opstod en exception: " + ex);
return false;
}
return true;
}
---------------------
Når jeg afvikler koden får jeg en exception:
----------
System.Runtime.InteropServices.COMException (0x80004005): Unspecified error
at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
at System.DirectoryServices.DirectoryEntry.Bind()
at System.DirectoryServices.DirectoryEntry.get_NativeObject()
at intranet.classes.logon.LdapAuthentication.IsAuthenticated(String username, String pwd) in c:inetpubwwwrootintranetclasseslogonLdap.cs:line 49
----------
Line 49 -> Object obj = entry.NativeObject;
Den log som bliver lavet lige før den fejlramte kode viser at servernavn, brugernavn og passwords er korrekte.
Hvad er der galt? Har brugte ganske mange dage på det nu.