Yesterday, the higher-ups needed a report of all users in Active Directory whose accounts required Smart Cards to log into the Domain (and those that did not). Most things I have needed to retrieve out of Active Directory have been quick to find and usually obvious, but this particular information was a bit more elusive. Any AD guru would certainly know exactly where to look, but alas, I did not. As I looked around Google and on all the properties on the User object in AD, nothing obvious came up – then I stumbled across this KB article: kb305144.
The Smart Card Required for Interactive Logon check box located in the property pane for a User in Active Directory Users and Computers mmc snap-in is stored as a bit field in the UserAccountControl property of the User object in Active Directory. Once I saw it was a bit field and I had all the possible values, the rest is simple.
Here the quick and dirty code I wrote to run the report:
I hope others may find this helpful.
UPDATE: You can also filter the search results using the same UserAccountControl enum.
Let's inspect the following expression:
(&(objectCategory=person)(objectClass=user)(useraccountcontrol:1.2.840.113556.1.4.803:=262144))
decodes to:
Filter on AD Records where (objectCategory = Person) && (objectClass=user) && (UserAccountControl & 0x40000)
The number sequence 1.2.840.113556.1.4.803 tells AD to to a bitwise AND operation on the value in useraccountcontrol and 262144 (0x40000 hex). See kb269181 on how to query Active Directory by using a bitwise filter.
Using a bitwise AND (&) on UserAccountControl and 0x40000 will return true (bit 1) if that bit field is set.
If you found this article helpful:
8.25.2006
Reporting on Smart Card Logon in Active Directory
Labels:
.net,
activedirectory,
ad,
ldap,
programming,
reporting,
smartcard
Subscribe to:
Posts (Atom)

