Managing external identities to enable secure access for partners, customers, and other non-employees
Posting it here too, cause there seem to be multiple threads about this.
We have spent several days troubleshooting the exact same issue and wanted to share our findings, because this does not appear to be a simple configuration problem.
Our setup:
Windows Server 2025 (on‑premises, not Azure VM)
- Server successfully onboarded to Azure Arc
- AADLoginForWindows extension installed and healthy
- Server state:
-
AzureAdJoined = YES -
DomainJoined = NO
-
- Users:
- Cloud‑only Entra ID users (not synced from AD)
- Correct Azure RBAC assigned at the Arc machine scope:
- Virtual Machine User Login
- Client:
- Windows 11, fresh install
- Workplace‑joined to the same Entra tenant
- RDP using “Use a web account to sign in”
RDP login opens Microsoft Entra sign‑in
- Credentials are accepted
- Login immediately loops back to the sign‑in prompt
- No interactive error is shown to the user
Repeated entries in the server log like:
DoGetToken Diagnostic Event
Result: 0xC0000022
Endpoint Uri: https://pas.windows.net/CheckMyAccess
On-prem tgt error: On-prem configuration is missing
Important: this happens even for cloud‑only users, with no local AD involvement.
Things we have tested:
- ✅ Network connectivity to Entra endpoints is fine
- ✅
CheckMyAccessis called, so the server does reach Entra - ✅ No Conditional Access policies
- ✅ Security Defaults disabled
- ✅ No per-user MFA enforcement
- ✅ No security-info registration prompt when logging into Office.com
- ✅ Azure AD Connect put into staging mode (sync fully paused)
- ✅ Tested with fresh users and fresh clients
- ✅ No firewall / proxy interference
Despite all of the above, the login loop continues.
The RDP login fails after Entra authentication but before a Windows logon token is issued. At that point Windows falls back into an internal “hybrid / on‑prem” code path, which results in the misleading:
On-prem tgt error: On-prem configuration is missing
Even though the documentation states this is supported, we were not able to make it work in a fully clean configuration.