Code to allow Umbraco 7.7.2+ to use MembershipProvider-based providers for Active Directory authentication.
Users of Umbraco 7.4.2-7.7.1 should use UmbBackofficeMembershipProvider 3.0.0 (NuGet). This version requires API changes and bug fixes present in Umbraco 7.7.2+ to function properly.
This project includes a DLL that will allow you to use a traditional MembershipProvider
for logging in Umbraco backoffice users.
- NET Framework 4.5
- Umbraco 7.7.2+
This project is available on NuGet.
- Before making any configuration file changes, make sure that you have an Administrator-level user account in Umbraco with the same username as the Active Directory account that you will use to login to Umbraco. It doesn't matter what you set for the password once UmbBackofficeMembershipProvider is enabled as it will check against Active Directory and not Umbraco for the password (unless you enable the fallback option below).
-
Add UmbBackofficeMembershipProvider.dll as a reference in your project or place it in the \bin folder.
-
In web.config, make the following modifications:
- Add or modify the following line in the
<appSettings>
section:
<add key="owin:appStartup" value="BackofficeMembershipProviderCustomOwinStartup" />
- Add a LDAP connection string to your LDAP server in the
<connectionStrings>
section, like shown in the example code below. Specify a path to the domain root or a container/OU if you want to limit where the user accounts can be located.
<add connectionString="LDAP://mydomain.mycompany.com/DC=mydomain,DC=mycompany,DC=com" name="ADConnectionString" />
-
Add a membership provider named
BackofficeMembershipProvider
, like shown in the example code below. Be sure theconnectionStringName
matches the LDAP connection string you defined.attributeMapUsername
specifies the username format -sAMAccountName
for just the username, oruserPrincipalName
to use username@mydomain.mycompany.com. Be sure the usernames you configure in Umbraco use the same format. -
If you are upgrading from a pre-7.3.1 version of Umbraco that used an Active Directory provider for backoffice users, you must change
UsersMembershipProvider
toUmbraco.Web.Security.Providers.UsersMembershipProvider
. If you have a new installation, this is the default provider already.
- Add or modify the following line in the
<membership defaultProvider="UmbracoMembershipProvider">
<providers>
<add
name="BackofficeMembershipProvider"
type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=4.0.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="ADConnectionString"
attributeMapUsername="sAMAccountName"
connectionUsername="testdomain\administrator"
connectionPassword="password"/>
<!-- Existing providers appear below -->
<add name="UmbracoMembershipProvider"
type="Umbraco.Web.Security.Providers.MembersMembershipProvider, Umbraco"
minRequiredNonalphanumericCharacters="0" minRequiredPasswordLength="10"
useLegacyEncoding="false" enablePasswordRetrieval="false" enablePasswordReset="false"
requiresQuestionAndAnswer="false" defaultMemberTypeAlias="Member"
passwordFormat="Hashed" allowManuallyChangingPassword="false" />
<add name="UsersMembershipProvider"
type="Umbraco.Web.Security.Providers.UsersMembershipProvider, Umbraco" />
</providers>
</membership>
- In config\UmbracoSettings.config:
- If you are using the default
Umbraco.Web.Security.Providers.UsersMembershipProvider
class forUsersMembershipProvider
, you don't need to do anything.
- If you are using the default
This version of UmbBackOfficeMembershipProvider can automatically create Umbraco backoffice user accounts for authenticated users. If you want to enable this functionality, follow these instructions:
- Insert the following
<appSettings>
keys in web.config:<add key="BackOfficeMembershipProvider:CreateAccounts" value="true" />
- set totrue
to enable automatic account creation<add key="BackOfficeMembershipProvider:AccountRoles" value="editor" />
- comma-separated list of groups user should be added to; defaults to editor if key is not present<add key="BackOfficeMembershipProvider:AccountCulture" value="en-US" />
- culture/language to use in creating new account; defaults to value ofumbracoDefaultUILanguage
if key is not present<add key="BackOfficeMembershipProvider:AccountEmailDomain" value="mydomain.com" />
- specifies domain name to be used in setting username@accountemaildomain e-mail address for newly created accounts; ignored if username is already a valid e-mail address, hostname of website is used otherwise if key is not present
By default, if an attempt login does not authenticate successfully against Active Directory, it fails. If you wish to try logins that fail Active Directory authentication against Umbraco's local user database before failing them entirely, you can enable the fallback option.
6. Insert the following <appSettings>
key in web.config:
<add key="BackOfficeMembershipProvider:FallbackToDefaultChecker" value="true" />
- set totrue
to enable fallback to autehntication against Umbraco's local user database