
En mi empresa hemos empezado a trabajar con OpenLDAP, y esto implica cambiar todos los metodos de autenticacion de los sistemas desarrollados, a éste protocolo.
Al principio parecia dificil, pero no fue asi. Todo se hizo mas facil con la ayuda de algunos articulos de stackoverflow.
Al final pude armar una clasehelper que me permitiera acceder a los elementos del LDAP:
publicclassLDAPHelper{privatereadonlyLdapConnectionldapConnection;privatereadonlystringsearchBaseDN;privatereadonlyintpageSize;publicLDAPHelper(stringsearchBaseDN,stringhostName,intportNumber,AuthTypeauthType,stringconnectionAccountName,stringconnectionAccountPassword,intpageSize){varldapDirectoryIdentifier=newLdapDirectoryIdentifier(hostName,portNumber,true,false);varnetworkCredential=newNetworkCredential(connectionAccountName,connectionAccountPassword);ldapConnection=newLdapConnection(ldapDirectoryIdentifier,networkCredential){AuthType=authType};ldapConnection.SessionOptions.ProtocolVersion=3;this.searchBaseDN=searchBaseDN;this.pageSize=pageSize;}publicIEnumerable<SearchResultEntryCollection>PagedSearch(stringsearchFilter,string[]attributesToLoad){varpagedResults=newList<SearchResultEntryCollection>();varsearchRequest=newSearchRequest(searchBaseDN,searchFilter,SearchScope.Subtree,attributesToLoad);varsearchOptions=newSearchOptionsControl(SearchOption.DomainScope);searchRequest.Controls.Add(searchOptions);varpageResultRequestControl=newPageResultRequestControl(pageSize);searchRequest.Controls.Add(pageResultRequestControl);while(true){varsearchResponse=(SearchResponse)ldapConnection.SendRequest(searchRequest);varpageResponse=(PageResultResponseControl)searchResponse.Controls[0];yieldreturnsearchResponse.Entries;if(pageResponse.Cookie.Length==0)break;pageResultRequestControl.Cookie=pageResponse.Cookie;}}}
Con ésta clase, la consulta a los elementos del LDAP fue sencilla:
staticvoidMain(string[]args){try{varbaseOfSearch="dc=integrate,dc=com,dc=bo";varldapHost="192.168.0.101";varldapPort=389;varconnectAsDN="cn=admin,dc=integrate,dc=com,dc=bo";varpageSize=1000;varsecureString="CONTRASEÑA_ADMIN_LDAP";varopenLDAPHelper=newLDAPHelper(baseOfSearch,ldapHost,ldapPort,AuthType.Basic,connectAsDN,secureString,pageSize);varsearchFilter="objectclass=posixAccount";//var searchFilter = "uid=rvera";varattributesToLoad=new[]{"sn","uid","cn","userPassword"};varpagedSearchResults=openLDAPHelper.PagedSearch(searchFilter,attributesToLoad);foreach(varsearchResultEntryCollectioninpagedSearchResults)foreach(SearchResultEntrysearchResultEntryinsearchResultEntryCollection){Console.WriteLine(searchResultEntry.Attributes["uid"][0]+": "+searchResultEntry.Attributes["cn"][0]);Console.WriteLine(searchResultEntry.Attributes["userPassword"][0]);Console.WriteLine(".......");}}catch(Exceptionexp){Console.WriteLine(exp.Message);Console.WriteLine(exp.StackTrace);}Console.WriteLine("Presione una tecla para terminar...");Console.Read();}
Pueden obtener el ejemploaqui
Top comments(0)
Subscribe
For further actions, you may consider blocking this person and/orreporting abuse