MFA Options for Community Users
1. Platform-Enforced MFA (Recommended)
- Available in Winter '22 and later
- Applies to all users including Community users
- Setup: Setup → Identity → MFA Settings
2. Permission Set-Enforced MFA
Setup → Users → Permission Sets
- Assign MFA permission sets to Community user profiles
- Requires "Multi-Factor Authentication for User Interface Logins" permission
Implementation Methods
Method 1: Salesforce Authenticator (Recommended)
Enable in Setup:
Setup → Identity → MFA Settings
Check "Require MFA for all direct UI logins"
Select "Salesforce Authenticator" as method
Community Configuration:
Experience Workspace → Administration → Login & Registration
Enable "Multi-Factor Authentication"
Method 2: Custom MFA Implementation
For more control, you can build custom MFA:
// Custom MFA verification class public class CommunityMFAHandler { @AuraEnabled public static Boolean verifyMFACode(String communityUserId, String code) { // Implement your MFA verification logic // Integrate with Twilio, Authy, Google Authenticator, etc. return true; } @AuraEnabled public static void sendMFACode(String communityUserId) { // Send MFA code via SMS, email, or authenticator app } }
Important Limitations & Considerations
1. Licensing Limitations
- Customer Community/Customer Community Plus: MFA supported
- Partner Community: MFA supported
- External identities using Site.login(): Limited MFA support
2. Authentication Methods
- ✅ Salesforce Authenticator (Recommended)
- ✅ Time-based One-Time Password (TOTP)
- ✅ WebAuthn (Security keys/biometrics)
- ❌ SMS/SMS Text Message - Not available for Community users
3. Implementation Steps
Step 1: Enable MFA in Org
Setup → Identity → MFA Settings - Require MFA for all direct UI logins: ON - Select permitted methods
Step 2: Configure Community
Experience Workspace → Administration → Login & Registration - Multi-Factor Authentication: ON - Configure registration and login flows
Step 3: Assign Permission Sets
Setup → Users → Permission Sets - Create/assign MFA permission set - Include "Multi-Factor Authentication for UI Logins"
Best Practices
1. User Communication
- Inform users about MFA requirements
- Provide setup instructions
- Offer support for MFA issues
2. Graceful Rollout
- Phase 1: Optional MFA
- Phase 2: MFA for high-risk users
- Phase 3: Mandatory MFA for all
3. Backup Options
- Provide backup codes
- Alternative verification methods
- Admin override procedures
Custom Implementation Example
// Custom MFA component controller public with sharing class CommunityMFAController { @AuraEnabled public static Boolean validateUserMFA(String username, String mfaCode) { try { // Verify MFA code against stored secret // Update user MFA status return true; } catch (Exception e) { throw new AuraHandledException(e.getMessage()); } } @AuraEnabled public static void setupMFA(String userId) { // Generate MFA secret // Send setup instructions to user } }
Troubleshooting Common Issues
1. MFA Not Enforcing
- Check permission set assignments
- Verify MFA settings in org
- Confirm community configuration
2. User Access Issues
- Ensure proper community profiles
- Check user licensing
- Verify MFA method compatibility
3. Mobile App Access
- Salesforce Mobile supports MFA
- Community mobile templates work with MFA
- Test on multiple devices
Important Notes
- API Users: MFA doesn't affect API integrations using session IDs
- Guest Users: MFA doesn't apply to guest user access
- Performance: MFA adds minimal overhead to login process
- User Experience: Plan for MFA setup during user registration
MFA for Community users is fully supported and recommended for enhanced security!
How "Login As" Works with MFA
Standard Behavior:
- "Login As" bypasses MFA for the target user
- The admin/user performing "Login As" must have MFA enabled
- The experience user being logged into does not need MFA during this process
Requirements & Setup
1. Admin/User Performing "Login As"
- Must have MFA enabled on their account
- Must complete MFA during their own login
- Requires "Manage Users" and "Login As" permissions
2. Permission Requirements
Setup → Users → Permission Sets
Required permissions:
- "Log in as Any User" or "Log in as Experience Cloud User"
- "Manage Users"
- MFA enabled for the admin user
Step-by-Step Process
1. Admin Login:
- Admin logs in with MFA
- Completes MFA verification
2. Navigate to Experience User:
Setup → Users → Users
- Find the experience user
- Click "Log in As" dropdown
3. Login Process:
- No MFA required for the experience user during "Login As"
- Direct access to community as that user
Important Limitations
1. MFA Bypass Considerations
- ✅ "Login As" bypasses MFA for target user
- ✅ Useful for troubleshooting user issues
- ⚠️ Security consideration: This creates an MFA bypass path
2. License Restrictions
- Available for users with "Login As" permission
- Limited by your Salesforce edition
- Experience Cloud site must be active
3. Session Limitations
- "Login As" sessions have time limits
- Typically expires after several hours
- Admin can return to their own session via header
Configuration Steps
Step 1: Enable MFA for Admins
Setup → Identity → MFA Settings - Require MFA for all direct UI logins: ON
Step 2: Assign "Login As" Permissions
<!-- Permission Set XML --> <userPermissions> <enabled>true</enabled> <name>LoginAsAnyUser</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageUsers</name> </userPermissions>
Step 3: Test the Flow
- Admin with MFA logs in
- Navigates to target experience user
- Clicks "Login As Experience User"
- Should access community without MFA prompt
Security Considerations
1. Audit Trail
- "Login As" activities are logged
- View in Setup → Monitoring → Login History
- Shows both admin and impersonated user
2. Best Practices
- Use "Login As" sparingly for troubleshooting
- Implement strict permission controls
- Monitor "Login As" usage regularly
- Educate admins about security implications
3. Alternative Approaches
For regular testing, consider:
- Test Community Users with known credentials
- Separate testing environments without MFA
- Automated testing with API users
Troubleshooting Common Issues
Issue: "Login As" Button Missing
Solution:
- Check "Login As" permissions
- Verify user has community access
- Confirm experience site is active
Issue: MFA Still Required During "Login As"
Solution:
- This shouldn't happen with proper configuration
- Check MFA settings for the community
- Verify the admin user has MFA enabled
Issue: Access Denied Errors
Solution:
- Check target user's community membership
- Verify community profile assignments
- Confirm experience site is published
Example Permission Set Setup
// Create permission set for "Login As" capability PermissionSet ps = new PermissionSet(); ps.Name = 'ExperienceCloudLoginAs'; ps.Label = 'Experience Cloud Login As Access'; insert ps; // Assign permissions SetupEntityAccess sea = new SetupEntityAccess(); sea.ParentId = ps.Id; sea.SetupEntityId = [SELECT Id FROM PermissionSet WHERE Name = 'LoginAsAnyUser' LIMIT 1].Id; insert sea;
Key Points Summary
- ✅ "Login As Experience User" works with MFA enabled
- ✅ MFA bypassed for target experience user during "Login As"
- ✅ Admin performing "Login As" must have MFA
- ⚠️ Security audit trails maintained
- ⚠️ Use judiciously due to MFA bypass capability
