Movatterモバイル変換


[0]ホーム

URL:


Skip to content
DEV Community
Log in Create account

DEV Community

Cover image for OpenLDAP con CSharp
Alonzo Vera
Alonzo Vera

Posted on

     

OpenLDAP con CSharp

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;}}}
Enter fullscreen modeExit fullscreen mode

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();}
Enter fullscreen modeExit fullscreen mode

Pueden obtener el ejemploaqui

Top comments(0)

Subscribe
pic
Create template

Templates let you quickly answer FAQs or store snippets for re-use.

Dismiss

Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment'spermalink.

For further actions, you may consider blocking this person and/orreporting abuse

Cjomo es!
  • Joined

More fromAlonzo Vera

DEV Community

We're a place where coders share, stay up-to-date and grow their careers.

Log in Create account

[8]ページ先頭

©2009-2025 Movatter.jp