Hi everyone,
We are facing an issue with Windows RRAS/PPTP clients authenticating against FreeRADIUS with privacyIDEA using MS-CHAPv2, where Windows NPS (Network Policy Server) acts as the RADIUS client / proxy.
Environment
-
VPN Server: Windows Server Routing and Remote Access (RRAS) - PPTP
-
RADIUS Client / Proxy: Windows NPS (pointing to upstream FreeRADIUS)
-
RADIUS Backend: FreeRADIUS 3.x with privacyIDEA plugin (
rlm_privacyidea) -
Client: Native Windows 10/11 VPN Client (PPTP)
-
Auth Protocol: MS-CHAPv2 (backed by privacyIDEA)
The Problem
-
A user connects via native Windows PPTP and enters incorrect credentials on the first try.
-
Windows displays a secondary credential prompt within the same session dialog.
-
The user enters the correct credentials this time, but authentication fails again (
Access-Reject). -
The user must manually cancel the prompt and initiate a brand new PPTP connection attempt for valid credentials to be accepted.
Observations
Windows RRAS/NPS and the native client reuse the initial MS-CHAPv2 challenge context during the retry prompt, but the upstream FreeRADIUS / privacyIDEA state is already consumed or invalid for that specific session attempt.
Attempting to enforce MaxDenials = 1 on the client registry breaks the initial logon dialog entirely because Windows attempts an unauthenticated/cached probe first.
Questions
-
How should we configure FreeRADIUS /
rlm_privacyidea(or NPS proxy settings) to ensureMS-CHAP-Erroris returned withR=0(Retry Not Allowed) instead ofR=1, forcing RRAS/Windows to terminate the PPP session immediately on the first bad attempt? -
Is there a recommended
unlangsnippet inPost-Auth-Type REJECT(or a specific NPS Remote RADIUS Server group setting) to rewrite this attribute cleanly through the NPS proxy?