The NPS extension for Microsoft Entra multifactor authentication sits between your VPN or RADIUS client and Microsoft Entra ID, so a failure can come from RADIUS, from Active Directory, from the extension or from the cloud. This quick reference lists the Network Policy Server events and reason codes, the messages the extension logs, and the certificate, connectivity and VPN symptoms Microsoft documents, each with the usual cause and the first check.
Codes in this quick reference
Event ID 6272: Network Policy Server granted access to a user (healthy result)Event Viewer (Network Policy Server)Event ID 6273: Network Policy Server denied access to a userEvent Viewer (Network Policy Server)Event ID 6273 reason code 16: credentials mismatch (bad password, locked or missing account)Event Viewer (Network Policy Server)Event ID 6273 reason code 21: an NPS extension DLL rejected the request (MFA failed or denied)Event Viewer (Network Policy Server)Event ID 6273 reason code 48: the request matched no network policyEvent Viewer (Network Policy Server)Event ID 6273 reason code 65: the account's dial-in permission denies accessEvent Viewer (Network Policy Server)Event ID 6273 reason code 66: authentication method not enabled on the matching network policyEvent Viewer (Network Policy Server)Event ID 6274: Network Policy Server discarded the request (often a duplicate RADIUS retry)Event Viewer (Network Policy Server)
+ 20 more codes in the tables below.
How to read these codes#
The flow explains most errors: the VPN or NAS server sends a RADIUS request to NPS, NPS checks the password against Active Directory, and only if that succeeds does the extension ask Microsoft Entra MFA for the second factor. So decide first which stage failed.
- NPS events: Event Viewer › Custom Views › Server Roles › Network Policy and Access Services. Most failures are event 6273 or 6274; the Reason Code in the event text tells you why. These events only appear when NPS auditing is on:
auditpol /get /subcategory:"Network Policy Server"should report Success and Failure (enable withauditpol /set /subcategory:"Network Policy Server" /success:enable /failure:enable). - Extension logs: Event Viewer › Applications and Services Logs › Microsoft › AzureMfa, with separate AuthN and AuthZ logs (Microsoft's docs refer to the AuthZOptCh channel). The extension's entries carry an upper-case error code; admins on Microsoft Q&A report text such as
ErrorCode:: ESTS_TOKEN_ERROR Msg:: Unable to get Azure AD access token.plus a link to Microsoft's troubleshooting page. - Isolate the extension: back up
HKLM\SYSTEM\CurrentControlSet\Services\Authsrv\Parameters, delete theAuthorizationDLLsandExtensionDLLsvalues, restart NPS and test again. If NPS now succeeds, the problem is in the MFA layer; restore the key afterward. - Identity: the extension looks the user up in Entra ID by the on-premises UPN, or by the attribute in
LDAP_ALTERNATE_LOGINID_ATTRIBUTEunderHKLM\SOFTWARE\Microsoft\AzureMfa.
NPS events and reason codes#
| Event / code | Meaning | Usual cause | First check |
|---|---|---|---|
6272 | NPS granted access. | Healthy: AD and MFA both passed. | Your baseline when testing. |
6273 reason 16 | Credentials mismatch. | Wrong password, locked account, or the user doesn't exist on the DC queried. MFA never ran. | Account state in AD; lockout source via the logon failure reference. |
6273 reason 21 | An NPS extension DLL rejected the request. | AD passed but the MFA extension failed or the user denied the prompt. | AzureMfa AuthN/AuthZ logs at the same timestamp. |
6273 reason 48 | No network policy matched. | Policy conditions (groups, NAS type, time) exclude the request. | Network policy conditions and order. |
6273 reason 65 | Dial-in permission denies access. | The user's Dial-in tab is set to deny. | Set it to control access through NPS network policy. |
6273 reason 66 | Authentication method not allowed. | The VPN uses PAP, MS-CHAPv2 or EAP but the policy doesn't enable it. | Network policy constraints. |
6274 | NPS discarded the request. | Usually the VPN resent the request while the user was still answering MFA. | Expected in small numbers; raise the VPN RADIUS timeout to at least 60 seconds. |
13 | RADIUS message from an invalid client IP. | The VPN or NAS isn't in RADIUS Clients. | Add the client with the right IP address. |
18 | Message authenticator attribute isn't valid. | Shared secret differs between client and NPS. | Set a new shared secret on both sides. |
Tip: Discarded duplicates are by design. The extension also ignores repeats for up to 10 seconds after a successful response, so a few 6274 events next to a 6272 aren't a fault. Microsoft suggests 90 or 120 seconds of VPN timeout if they flood the log.
Extension log messages and connectivity#
| Message | Meaning | Usual cause | First check |
|---|---|---|---|
ESTS_TOKEN_ERROR (security token error) | The extension couldn't get an access token. | Client certificate missing or unassociated, login.microsoftonline.com unreachable, or (as admins report) TLS certificate validation failures. | Restart NPS, then check the certificate and its tenant association (below). |
| HTTP connect errors, every authentication fails | MFA service endpoints unreachable. | Firewall or proxy. | adnotifications.windowsazure.com and strongauthenticationservice.auth.microsoft.com on TCP 443. |
| User not found in the HTTP log | Entra ID has no matching user. | User not synced, or a UPN mismatch. | Entra Connect running; user present in both directories; alternate login ID. |
IP_WHITE_LIST_WARNING::IP Whitelist is being ignored as the source IP is missing in the RADIUS request NasIpAddress attribute. | The IP exception list can't be applied. | The VPN doesn't send the NAS-IP-Address attribute. | RADIUS attributes on the VPN. |
| AuthZOptCh error at service start | IP_WHITELIST value doesn't exist. | The installer doesn't create it. | Ignore, or create the value empty. |
| Errors for non-RADIUS requests | The extension logs an error for any request that isn't RADIUS. | NPS server shared with other services. | A dedicated NPS server for MFA. |
| Azure Government or 21Vianet tenant fails | Default endpoints point to the global cloud. | AZURE_MFA_HOSTNAME, AZURE_MFA_RESOURCE_HOSTNAME and STS_URL not set. | Set the cloud's values, restart NPS. |
The server needs TCP 443 to login.microsoftonline.com, credentials.azure.com, strongauthenticationservice.auth.microsoft.com and adnotifications.windowsazure.com. RADIUS itself uses UDP 1812/1645 (authentication) and 1813/1646 (accounting) between the VPN and NPS. The NPS server must authenticate the request itself; it can't proxy RADIUS to another server.
Certificate and setup errors#
| Error | Meaning | Usual cause | First check |
|---|---|---|---|
Service principal was not found (setup script) | The tenant lacks the Azure Multi-Factor Auth Client service principal. | Never created in this tenant. | Create it with New-MgServicePrincipal (below), rerun the script. |
| Service principal disabled | Setup script can't use the service principal. | Enabled for users to sign-in? is No. | Entra ID › Enterprise apps › Azure Multi-factor Auth Client › Properties. |
| Client certificate expired | Tokens can't be requested. | Script certificates last two years. | Rerun AzureMfaNpsExtnConfigSetup.ps1 with the same tenant ID on each server. |
| Expired certificate left in the store | Extension fails to start despite a valid certificate. | Old certificate not removed after renewal. | Delete expired certificates from the computer store. |
| Certificate not associated with the tenant | Entra ID doesn't trust this server. | Script failed halfway, or the certificate was replaced manually. | Compare thumbprints with the service principal's key credentials. |
| Own certificate ignored | Extension can't use it. | No Client Authentication purpose, no READ for NETWORK SERVICE, or (version 1.2.2677.2 and earlier) a subject other than CN=<TenantID>,OU=Microsoft NPS Extension. | From version 1.2.2893.1, set CLIENT_CERT_IDENTIFIER to the thumbprint. |
| Setup script can't download modules | Microsoft Graph PowerShell install fails. | TLS 1.2 off in the session, or setup URLs blocked. | Run [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 first. |
# Create the missing service principal (documented app ID), then rerun the setup script
Connect-MgGraph -Scopes 'Application.ReadWrite.All'
New-MgServicePrincipal -AppId 981f26a1-7f43-403b-a875-f8b09b8cd720 -DisplayName "Azure Multi-Factor Auth Client"
cd "C:\Program Files\Microsoft\AzureMfa\Config"
.\AzureMfaNpsExtnConfigSetup.ps1The script signs in to Entra ID (Microsoft documents a Global Administrator for this), asks for the tenant ID, creates the certificate, grants NETWORK SERVICE access to its key and restarts NPS. Give each NPS server its own certificate so you can renew them one at a time.
User and VPN symptoms#
| Symptom | Meaning | Usual cause | First check |
|---|---|---|---|
| MFA fails for some users only | They aren't enrolled for MFA. | REQUIRE_USER_MATCH not set (same as TRUE) fails unenrolled users. | Register them; FALSE only during onboarding, never in production. |
| Can't sign in, password expired | The extension doesn't support password change. | Expired AD password. | Change it elsewhere first, for example through SSPR with writeback. |
| Asked for a code instead of Approve/Deny | TOTP is used because NPS can't do number matching. | Extension 1.2.2216.1 or later with a TOTP method registered. | Expected; users without TOTP still get Approve/Deny. |
| No SMS or code option on the VPN | Method not available over this protocol. | MS-CHAPv2 and EAP support only phone call and app notification; PAP supports all methods. | The VPN's RADIUS protocol and input field. |
| Code sign-in works, wrong VPN access | Network policy RADIUS attributes aren't returned. | Code-based (OTP) methods. | Microsoft's CrpUsernameStuffing script. |
| SSPR-only users get MFA prompts | MFA is enforced when StrongAuthenticationMethods is set. | SSPR registration populated it. | Expected; use combined registration. |
| Custom phone call greeting not played | Default EN-US call used. | Custom phone call settings aren't supported. | None; by design. |
| Extension won't work at all | Unsupported license. | Consumption-based MFA licenses. | Entra ID P1/P2 or EMS licenses. |
For cloud sign-in MFA errors (AADSTS50076, AADSTS50079 and friends) see fixing MFA and authentication-strength sign-in errors.
How to verify a fix#
- Endpoints. From the NPS server every line should show
True:PowerShell'login.microsoftonline.com','credentials.azure.com','strongauthenticationservice.auth.microsoft.com','adnotifications.windowsazure.com' | ForEach-Object { Test-NetConnection -ComputerName $_ -Port 443 | Select-Object ComputerName, TcpTestSucceeded } - Certificate. Check expiry locally, then compare the thumbprint with what Entra ID holds:
PowerShell
Get-ChildItem Cert:\LocalMachine\My | Where-Object Subject -like '*Microsoft NPS Extension*' | Select-Object Subject, NotAfter, Thumbprint Connect-MgGraph -Scopes 'Application.Read.All' (Get-MgServicePrincipal -Filter "appid eq '981f26a1-7f43-403b-a875-f8b09b8cd720'" -Property "KeyCredentials").KeyCredentials | Format-List KeyId, DisplayName, StartDateTime, EndDateTime - Test sign-in with an account registered for MFA. Good: an Event 6272 for that user, no new errors in the AzureMfa logs, and no 6273 reason code 21.
- Health check. Microsoft also publishes an NPS extension health check script that runs basic checks; use it before opening a support case.
Watch out: To upgrade the extension without a reboot, uninstall the old version, run the new installer and restart the Network Policy Server service (Restart-Service IAS). Do one server at a time behind your load balancer.
References#
- Integrate your existing NPS infrastructure with Microsoft Entra multifactor authentication (Microsoft Learn): requirements, certificates and the troubleshooting FAQ.
- Advanced configuration options for the NPS extension (Microsoft Learn): alternate login ID and IP exceptions.
- Network Policy Server troubleshooting guidance (Microsoft Learn): auditing, events 13, 18 and 6273.

