googlegsa / sharepoint.v3

Google Search Appliance Connector for SharePoint
5 stars 10 forks source link

Improve performance of Active Directory groups expansion at serve time #186

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
Currently SharePoint connector implements very inefficient way for AD groups 
expansion, i.e. it reads nested AD groups recursively and in our case it takes 
literally 2-5 minutes. 

In this patch we have added two additional ways for AD groups expansion:

1. Using IN_CHAIN filter
"The LDAP_MATCHING_RULE_IN_CHAIN is a matching rule OID that is designed to 
provide a method to look up the ancestry of an object. Many applications using 
AD and AD LDS usually work with hierarchical data, which is ordered by 
parent-child relationships. Previously, applications performed transitive group 
expansion to figure out group membership, which used too much network 
bandwidth; applications needed to make multiple roundtrips to figure out if an 
object fell "in the chain" if a link is traversed through to the end"
http://msdn.microsoft.com/en-us/library/windows/desktop/aa746475(v=vs.85).aspx

2. Using tokenGroups attribute
http://msdn.microsoft.com/en-us/library/windows/desktop/ms680275(v=vs.85).aspx

We've also made this behavior configurable, so you can choose one of the three 
options (recursive, in chain, token groups) on the UI screen.

In our testing tokenGroups approach showed the best performance, i.e. it takes 
~ 0.3 sec, which is 500 times faster than the recursive one.

I'm attaching the patch with this feature. Please note that this patch is 
against 2.8.6 release.

Original issue reported on code.google.com by ase...@gmail.com on 14 Sep 2012 at 10:26

Attachments: