I' m glad my guide came in helpful :-)
You make some good points Jesus.
I' ve used a number of LDAP browsers over the years. My favorite for Active Directory is ADExplorer by Sysinternals. Now owed by Micrososft.
[link=]http://technet.microsoft.com/en-us/sysinternals/bb963907.aspx[/link]
I figure I' d write-up a little " How LDAP works" quick-n-dirty intro.
LDAP is a hierarchal, object-oriented database. It' s essentially a tree, where each entry in the tree has one or more " objectCategories" , which is a fancy way of saying it' s types. It' s very similar to OO programming, in this case the objectCategory is the Class, and the entry itself is an instance (object). And just like Classes, the objectCatetories specify what properties are optional and what properties are mandatory for the entry.
Be default, any entry in the tree that is a " User" can do basic authentication. Meaning some LDAP client sends a username and password, and the server accepts or rejects. This is " Simple Authentitication" in the case of FortiGate.
Regular Authentication is more complicated. It takes multiple steps, which I' ll go over here.
When a client tries to authenticate, the FortiGate sends IT' S OWN username' s DN and password . So in my example above, it is actually sending the complete path of the username to the LDAP server. i.e. DN = CN=Fortigate,OU=People,DC=example,DC=com <password>
Then, once it is authenticated, it does a search for the client' s DN within some branch of the tree. In the case of the Fortigate, It' s says " Find all user' s within the DN branch of the tree that have the client' s username and get me it' s full DN"
If found, the server will return something like DN = CN=ClientUsername,OU=Somewhere,OU=People,DC=example,DC=com
Then, the client will try to authenticate using the newly obtained DN and the client' s password. If successful, the user is correct, but wait, we want to filter against a group still. In AD, when a user is in a group, that information is stored twice, both in the user' s entry in LDAP, by the " memberOf=<list of groups>" , attributes, and also in the Group itself. The group itself maintains a list called " member" , which has a list of the members of the group. The Fortigate uses the second method for discovering group membership. This is the best way, because other LDAP servers, like OpenLDAP, have always handled groups this way. Cross-platform for the win!
So, now, still authenticated as the Fortigate user, the router performs a query for the group. It basically says " Get me the member list of the group DN who MUST be a Security Group" Then, if the client user' s DN is found in that list, which is parsed on the client, then the client is now authenticated!"
I' d like to mention something that angers me greatly, as I' ve seen it come up a lot,. Hardware and software vendors alike, will often tote their products as being " LDAP compliant." However, when you look into what kinds of LDAP authentication is supported, they can only do Simple Authentication. Well that' s useless! If they can' t do Regular authentication, then there is no way to setup Access Control beyond " if they have a valid username and password, come on in"
I hope this comes in handy. :=)