Usando o 'System.DirectoryServices' no Ubuntu para autenticar com o diretório ativo do windows

0

Eu desenvolvi um aplicativo C# usando o monodevelop, que basicamente faz a autenticação ldap com o diretório ativo do windows. Ele funciona bem no Windows, mas se eu usar o mesmo código no Ubuntu, em vez de autenticar para o diretório ativo do windows, eu acho que ele está tentando autenticar com o diretório ativo novell. Ele falha com novell.ldap.exception dizendo invalid credentials .

Eu removi todas as referências a novell.directory.ldap , mas system.directoryServices está referindo-se internamente à montagem de novell. Minha exigência é usar o mesmo conjunto de assemblies .net System.DirectoryServices em ambas as janelas e Linux e autenticar com o diretório ativo do windows.

Existe alguma maneira de conseguir isso usando o monodesenvolvimento C #?

Esta é a parte de código sempre falhando no Ubuntu no Findall com credenciais inválidas. porque está sempre apontando para o diretório ativo novell

string strLdapURL = "LDAP://" + Domain + ":389";
DirectoryEntry entry = new DirectoryEntry(strLdapURL, strUserName, Password);
DirectorySearcher mySearcher = new DirectorySearcher(entry);
mySearcher.Filter = "(&(ObjectCategory=computer)(!userAccountControl:1.2.840.113556.1.4.803:=2)(operatingSystem=*server*))";
mySearcher.PropertiesToLoad.Add("PwdLastSet");
mySearcher.SizeLimit = int.MaxValue;
mySearcher.PageSize = int.MaxValue;
mySearcher.Tombstone = false;
mySearcher.SearchScope = System.DirectoryServices.SearchScope.Subtree;
System.DirectoryServices.SearchResultCollection entry1 = mySearcher.FindAll();
    
por roshan sullad 28.01.2015 / 02:47

1 resposta

2

Eu consertei sozinho

Minha suposição estava errada de que novell.directory.ldap estava apontando para a estrutura de diretórios ativa do novell. Isso funciona com o diretório ativo do Windows também, é apenas uma questão de especificar o URL do diretório ativo do windows apropriado.

Acabei de adicionar referência ao assembly novell.directory.ldap e, em seguida, nas credenciais, alterei o nome de usuário administrador para Administrador (diferencia maiúsculas de minúsculas).

Mais cedo eu estava usando apenas o nome de usuário na operação de ligação; lá eu acrescentei nome de domínio também como domain \ Administrator. Consegui que funcionasse.

string strDomain = "domain";
string strUserName = "Administrator";
string Password = "Password123";
String loginDN =  strDomain + "\" + strUserName;
int LdapVersion  = LdapConnection.Ldap_V3;;
String ldapHost = domain;

string strLdapURL = "LDAP://" + Domain + ":389";

LdapConnection lc = new LdapConnection();

lc.Connect( ldapHost, LdapPort );
lc.Bind( LdapVersion, loginDN, password );
    
por roshan sullad 02.02.2015 / 20:19