ASystems.DirectoryServicesProviders (nuget): This package include a custom implementation of ActiveDirectoryMembershipProvider which allowes for caching and return of displayname. It also includes a RoleProvider leveraging LDAP group as roles (lacks support for adding and deleting roles).  Configuration for the provider, read http://msdn.microsoft.com/en-us/library/system.web.security.activedirectorymembershipprovider.aspx for more info  <add name="DirectoryServicesMembershipProvider"    type="ASystems.DirectoryServicesProviders.DirectoryServicesMembershipProvider, ASystems.DirectoryServicesProviders"    connectionStringName="ADService"    connectionUsername="UserWithAppropriateRights" <!-- remove for apppool credentials -->    connectionPassword="PasswordForUser" <!-- remove for apppool credentials -->    connectionProtection="Secure" <-- Secure, None -->    cache="15" <!-- minutes to cache, 0 to disable caching -->    allowedRoles="" <!-- comma separated string with groups, or name of appsetting containing the comma separated groups -->    enableUpdate="true"    enablePasswordReset="true"    enableSearchMethods="true"    requiresQuestionAndAnswer="true"    applicationName="/"    description="Default AD connection"    requiresUniqueEmail="false"    clientSearchTimeout="30"    serverSearchTimeout="30"    attributeMapPasswordQuestion="department"    attributeMapPasswordAnswer="division"    attributeMapFailedPasswordAnswerCount="singleIntAttribute"    attributeMapFailedPasswordAnswerTime="singleLargeIntAttribute"    attributeMapFailedPasswordAnswerLockoutTime="singleLargeIntAttribute"    attributeMapEmail = "mail"    attributeMapUsername = "userPrincipalName" <!-- userPrincipalName, sAMAccountName -->    attributeMapProviderUserKey = "objectSid" <!-- objectSid, objectGUID -->    additionalAttributes = "" <!-- comma separated string with attributes that are included in search results -->    maxInvalidPasswordAttempts = "5"    mergeWith="NameOfMembershipProvider" <!-- use to combine users from multiple providers -->     mergeStyle="After" <!-- After, Before -->    passwordAttemptWindow = "10"    passwordAnswerAttemptLockoutDuration = "30"    minRequiredPasswordLength="7"    minRequiredNonalphanumericCharacters="1"    passwordStrengthRegularExpression="@\"(?=.{6,})(?=(.*\d){1,})(?=(.*\W){1,})"" />  <add name="DirectoryServicesRoleProvider"    type="ASystems.DirectoryServicesProviders.DirectoryServicesRoleProvider, ASystems.DirectoryServicesProviders"    connectionStringName="ADService"    connectionUsername="UserWithAppropriateRights" <!-- remove for apppool credentials -->    connectionPassword="PasswordForUser" <!-- remove for apppool credentials -->    connectionProtection="Secure" <-- Secure, None -->    cache="15" <!-- minutes to cache, 0 to disable caching -->    useOrganisationalUnits="false" <!-- use organisational units as role instead of groups -->    mergeWith="NameOfRoleProvider" <!-- use to combine roles from multiple providers -->     mergeStyle="After" <!-- After, Before, Mixed -->    applicationName="/"    attributeMapUsername = "userPrincipalName" <!-- userPrincipalName, sAMAccountName --> />
Keywords: membership|roles|providers|membershipprovider|roleprovider|active|directory|ldap|directoryservices