After successful pilot testing, expand phishing-resistant authentication to your entire organization. This requires careful planning and phased rollout to minimize disruption.
Phase 1: Expand to Department Groups
Update your Conditional Access policies to include larger user groups:
# Update existing policy to include more users
$policyId = "your-pilot-policy-id"
$policy = Get-MgIdentityConditionalAccessPolicy -ConditionalAccessPolicyId $policyId
# Add additional groups
$updatedConditions = $policy.Conditions
$updatedConditions.Users.IncludeGroups += @(
"department-it-group-id",
"department-finance-group-id",
"department-hr-group-id"
)
# Update the policy
Update-MgIdentityConditionalAccessPolicy -ConditionalAccessPolicyId $policyId -Conditions $updatedConditions
Phase 2: Bulk User Provisioning
Automate the provisioning process for large numbers of users:
# Bulk TAP creation for new user onboarding
$newUsers = Import-Csv "new_users.csv" # UserPrincipalName, Department, Manager
foreach ($user in $newUsers) {
try {
# Create user account
$userParams = @{
displayName = $user.DisplayName
userPrincipalName = $user.UserPrincipalName
mailNickname = $user.UserPrincipalName.Split('@')[0]
accountEnabled = $true
passwordProfile = @{
forceChangePasswordNextSignIn = $false
password = "TempPass123!" # Will be replaced by TAP
}
}
$newUser = New-MgUser -BodyParameter $userParams
# Create TAP for passwordless onboarding
$tapParams = @{
startDateTime = (Get-Date).ToString("yyyy-MM-ddTHH:mm:ss.fffZ")
lifetimeInMinutes = 1440 # 24 hours
isUsableOnce = $true
}
$tap = New-MgUserAuthenticationTemporaryAccessPassMethod -UserId $newUser.Id -BodyParameter $tapParams
# Send TAP to user via secure channel (email, SMS, etc.)
Send-WelcomeEmail -UserEmail $user.UserPrincipalName -TAP $tap.TemporaryAccessPass
Write-Host "✓ Created user and TAP for $($user.UserPrincipalName)" -ForegroundColor Green
}
catch {
Write-Warning "Failed to create user $($user.UserPrincipalName): $($_.Exception.Message)"
}
}
Phase 3: Legacy Authentication Cleanup
Gradually disable legacy authentication protocols:
- Navigate to Protection > Conditional Access > Policies
- Create a new policy: "Block Legacy Authentication"
- Target all users except service accounts
- Block access for legacy authentication clients
{
"displayName": "Block Legacy Authentication",
"state": "enabledForReportingButNotEnforced",
"conditions": {
"users": {
"includeUsers": ["All"],
"excludeUsers": ["service-account-1", "service-account-2"]
},
"applications": {
"includeApplications": ["All"]
},
"clientAppTypes": [
"exchangeActiveSync",
"other"
]
},
"grantControls": {
"operator": "OR",
"builtInControls": ["block"]
}
}
Phase 4: Communication and Training
Develop user communication materials:
- Email templates explaining the new authentication methods
- Video tutorials for registering passkeys and FIDO2 keys
- IT helpdesk scripts for common issues
- Manager talking points for team meetings
Pro tip: Create a dedicated SharePoint site or Teams channel for passwordless authentication resources. Include FAQs, video guides, and a feedback form.
Verification: Monitor adoption rates using the authentication methods report in Entra admin center. Aim for 90%+ adoption of phishing-resistant methods within 90 days. Track helpdesk tickets to identify training gaps.