Funny how I learn something new everytime I visit a new customer. Seeing different environments and how different customers solve the same problems is eye opening. More importantly, the more environments I see the more I begin to understand how misconceptions I had held in the past.
As a little background, I broke into the infosec biz in the opposite way that many of my peers have. My first formal role in infosec was as a security systems engineer for Motorola. My job was to basically look at security standards, product management requirements, and security threats and design security features. Problem is, when you take that direction you miss out on the real world, hands on perspective of infosec and have difficulty understanding exactly how organizations infosec functions (if it even exists!) It’s way too easy to fall into the ivory tower mentality. Add a couple of years of grad school in infosec, and you have the makings of a great infosec philosopher, but not a practitioner. Consulting has really opened my eyes and is helping me understand what I never fully grasped before.
With that out of the way, during my last couple of engagements I’ve learned a ton about enterprise identity management and have corrected a major misconception I had held in the past. Earlier in my career, I was faced with solving the problem of figuring out how to integrate enterprise identity management systems with wireless equipment; so that system administrators could use their existing credentials to log into the management interfaces of the wireless infrastructure. At the time, the solution that struck me was to use a AAA server with RADIUS; after all RADIUS is easily extensible, simple to develop and support, and is flexible. What I completely failed to realize at the time is that a AAA server is in fact not intended to act as an identity management system. Sure, AAA stands for Authentication, Authorization, and Accounting, but the AAA server is generally just a relay and is not the actual identity management system.
As I have since learned, identity management is actually centered around one of the oldest protocols in the book, LDAP or Lightweight Directory Access Protocol. LDAP is a directory service that is designed to provide extremely fast lookups and extensive search capabilities. LDAP gets it speed from the hierarchical design of objects that are stored within the directory. All objects descend from a single root node, with each child node having one or more child nodes and one or more sibling nodes. Here’s a figure of a basic tree structure of an LDAP directory.

Each node in the directory is uniquely identifiable by use of a distinguished name. A distinguished name is made up by simply concatenating the identifiers for each ascendent node to the node being named. In this figure, the DN for me would be CN=Walter,OU=Person,OU=Users,DC=jdt,DC=com. Each node also has a collection of attributes associated with it that contain information such as date of creation, address, member groups, object identifier and any other information that is pertinent to the object itself. Lookups are done by connecting to the directory server and issuing queries. LDAP queries are interesting in that they are written in a reverse polish notation style; e.g. if you wanted to search for my name in the query above quickly, you could search for a person named Walter with the following query: (&(OU=Users)(CN=Walter)).
To make LDAP directories generally useful, they usually provide some information to LDAP clients without requiring the client to authenticate. Examples would be a web based corporate address book that is accessible from a organizations intranet. However, in order to gain access more sensitive information, LDAP clients usually authenticate to a directory via a bind operation. In fact, this is how many network operating systems such as Active Directory, Novell etc. authenticate users; a bind against a corporate LDAP directory is performed using the user’s credentials. Once the bind is successful, the user is granted access to the local system and further authenticated LDAP queries can be performed to obtain additional information needed to grant the user access to resources.
LDAP itself does not provide any integrity or encryption mechanisms to protect information that is transmitted between the directory and LDAP clients. However, bind operations usually use authentication protocols which protect credentials that are transmitted such as NTLM or GSSAPI. To provide integrity and confidentiality for LDAP data, LDAP may also be transmitted over a TLS secured port (LDAPS). Yet another use case for an enterprise PKI that I had absolutely no idea about.
So, to complete the original story, what I’ve since discovered when it comes to centralized user management, enterprise identity management, don’t think of AAA services. Rather, think of LDAP directory services. As a matter of fact, AAA servers usually have plug-ins (such as FreeRADIUS’s rlm_ldap plugin) that let them use LDAP directories as a data source when performing authentication and authorization services.