Skip to content

Commit cb683a9

Browse files
committed
Added documentation for Membership Providers configuration
Added documentation for Membership Providers configuration This will be useful to link to from the release notes of the next DNN version considering this PR dnnsoftware/Dnn.Platform#6638
1 parent 82a5d3b commit cb683a9

File tree

2 files changed

+129
-0
lines changed
  • content/features

2 files changed

+129
-0
lines changed
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
---
2+
uid: security-membership-providers
3+
locale: en
4+
title: Membership Providers
5+
dnneditions: DNN Platform
6+
dnnversion: 10.01.00
7+
---
8+
9+
# Membership Providers
10+
11+
DNN Platform uses a provider-based membership system that allows for flexible user account management mechanisms. This extensible architecture enables DNN to support various membership providers while maintaining a consistent interface for developers and administrators.
12+
13+
## Default Membership Provider
14+
15+
DNN Platform uses **AspNetSqlMembershipProvider** as its default membership provider. This is a built-in membership provider that uses SQL Server for storing user account information and credentials.
16+
17+
### Key Features of AspNetSqlMembershipProvider
18+
19+
- **SQL Server integration**: User accounts and credentials are stored in SQL Server database tables
20+
- **Password management**: Handles password hashing, validation, and security
21+
- **User validation**: Provides methods for validating user credentials during login
22+
- **Account management**: Supports user creation, deletion, and profile management
23+
24+
## Password Storage Formats
25+
26+
The ASP.NET Membership Provider supports multiple password storage formats through its configuration. Understanding these formats is crucial for security planning and migration strategies when working with DNN Platform.
27+
28+
### Supported Password Formats
29+
30+
#### Hashed (Recommended)
31+
- **Security Level**: Highest
32+
- **Default Since**: DNN 7.1.0
33+
- **Hashing Algorithm**:
34+
- SHA1 (DNN 7.1.0 - 10.1.x)
35+
- SHA256 (DNN 10.2.0+) - Enhanced security with stronger hashing
36+
- **Description**: Passwords are irreversibly hashed using cryptographic algorithms. This is the most secure option as original passwords cannot be recovered even if the database is compromised.
37+
- **Recovery**: Password reset required - original passwords cannot be retrieved (see [Force Password Reset](#force-password-reset))
38+
39+
#### Encrypted
40+
- **Security Level**: Medium
41+
- **Default**: DNN versions prior to 7.1.0
42+
- **Description**: Passwords are encrypted using reversible encryption. While more secure than plain text, this method is less secure than hashing.
43+
- **Recovery**: Passwords can be decrypted and recovered if needed
44+
45+
#### Clear (Plain Text) - NOT RECOMMENDED
46+
- **Security Level**: None
47+
- **Description**: Passwords are stored in plain text format without any protection
48+
- **Security Risk**: Extremely dangerous - passwords are visible to anyone with database access
49+
- **Use Case**: Should never be used in production environments
50+
51+
### Version History and Defaults
52+
53+
| DNN Version | Default Format | Hashing Algorithm |
54+
|-------------|----------------|-------------------|
55+
| Pre-7.1.0 | Encrypted | N/A |
56+
| 7.1.0+ | Hashed | SHA1 |
57+
| 10.2.0+ | Hashed | SHA256 |
58+
59+
### Security Recommendations
60+
61+
1. **Always use Hashed format** in production environments
62+
2. **Upgrade to SHA256** when using DNN 10.2.0 or later for enhanced security
63+
3. **Never use Clear (plain text)** format except for development/testing purposes
64+
4. **Plan migration strategy** when upgrading from older DNN versions with encrypted passwords
65+
5. **Implement strong password policies** regardless of storage format
66+
67+
### Configuration
68+
69+
Password format is configured in the `web.config` file under the membership provider settings:
70+
71+
```xml
72+
<membership>
73+
<providers>
74+
<add name="AspNetSqlMembershipProvider"
75+
passwordFormat="Hashed"
76+
hashAlgorithmType="SHA256" />
77+
</providers>
78+
</membership>
79+
```
80+
81+
### Microsoft Documentation
82+
83+
For detailed information about ASP.NET Membership Providers, refer to the official Microsoft documentation:
84+
85+
- [Introduction to Membership](https://docs.microsoft.com/en-us/previous-versions/aspnet/yh26yfzy(v=vs.100))
86+
- [Understanding ASP.NET Membership](https://docs.microsoft.com/en-us/previous-versions/aspnet/tw292whz(v=vs.100))
87+
- [ASP.NET Membership Provider Toolkit](https://docs.microsoft.com/en-us/previous-versions/aspnet/6e9y4s5t(v=vs.100))
88+
89+
### Custom Providers
90+
Developers can create custom membership providers by implementing the `MembershipProvider` abstract class and configuring them in the DNN provider configuration.
91+
92+
## Configuration
93+
94+
Membership providers are configured in the `web.config` file under the `system.web/membership` section. The default AspNetSqlMembershipProvider is configured automatically during DNN installation.
95+
96+
## Force Password Reset
97+
98+
There are scenarios where administrators need to force all users to reset their passwords, such as:
99+
100+
- After upgrading password storage formats (e.g., from Encrypted to Hashed)
101+
- Following a security incident or suspected breach
102+
- Implementing new password policies
103+
104+
### Migration from "encrypted" to "hashed"
105+
To change the password format in DNN from encrypted to hashed, you must edit the web.config file and change the passwordFormat attribute to `Hashed` within the <add name="AspNetSqlMembershipProvider" ... /> section, and simultaneously set `enablePasswordRetrieval` to `false`. After this change, existing users' encrypted passwords will be converted to hashed passwords when they update their password.
106+
107+
To force all users to reset their passwords, you can execute the following SQL query against your DNN database:
108+
109+
> ⚠️ **Important**: Always backup your database before executing any direct SQL modifications. Also, the default method to reset a password involves sending a verification link by email. Make sure emails work correctly and that your own superuser acccount has a proper email where you can receive that link.
110+
111+
```sql
112+
-- Force password reset for all users
113+
UPDATE Users
114+
SET UpdatePassword = 1
115+
```
116+
117+
### Changing only the hashing algorithm
118+
119+
> ⚠️ **Warning**: Because hashed passwords cannot be decrypted, this change will prevent any logins with the existing passwords (including super-users), which may be confusing for users. To help avoid confusion you may want to notify all your users about having to reset their passwords for better security. They will have to click on "Reset Password" to migrate to the new format. They will be able to enter their username and receive a special link by email to reset their password using a token.
120+
121+
> 💡You can check the `LastPasswordChangedDate` in the `aspnet_Membership` table to see which users did change their passwords or not after the date of that change. You may use that information to later delete users that may no longer be activivally engaged. Additionally you can wipe the `Password` field if you want to make sure no passwords with the old algorithm are kept (before notifying users about the change).
122+
123+
> 💡**Is it critical to migrate from Encrypted to Hashed?**
124+
Encrypted passwords use a 2-way encryption. This means that if any hacker gets a hold on the web.config file and the database, they will **easily** be able to decrypt ALL passwords. Hashed uses a one-way encryption method which means that passwords can't be reversed. Should a hacker obtain the database and web.config file, they can't reverse any password directly, they would have to invest quite a large amount of computing resources to reverse a single password (especially since DNN also uses a per-user password salt). We strongly encourage to migrate any site that uses "Encrypted" to "Hashed" as it quickly improves security tremendously.
125+
126+
> 💡**Is it critical to migrate from SHA1 to SHA256?**
127+
SHA-1 has known collision weaknesses and is discouraged by most cryptographic compliance standards. Collisions aren’t a practical concern in per-user salted password storage, but some auditors or clients will flag any use of SHA-1 regardless of context. Moving to SHA-256 aligns better with PCI-DSS, NIST, ISO, and similar standards.
128+
Migrating from SHA-1 to SHA-256 in ASP.NET Membership improves cryptographic hygiene and helps with compliance, but offers only modest real-world password security benefits while introducing migration overhead. It is a technical enhancement, though not as impactful as upgrading from "encrypted" to "hashed".

content/features/toc.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
## [Themes](xref:themes)
1616
# [Security/Privacy](xref:security-privacy)
1717
## [Security](xref:platform-overview-security)
18+
### [Membership Providers](xref:security-membership-providers)
1819
### [JWT](xref:jwt)
1920
## [Privacy](xref:privacy)
2021
### [Communication Settings](xref:privacy-communication-settings)

0 commit comments

Comments
 (0)