HomeNewsletterCommunityMVP FeedToolsArchiveBlogToday's NewsAboutServicesQuick Links Subscribe free
← Back to Blog
Windows Hello for Business WHfBCloud Kerberos TrustEntra KerberosHybrid IdentityIntunePowerShell

Windows Hello for Business Cloud Kerberos Trust: The Complete Deployment Guide

IA
Imran Awan
28 July 2026

You have three ways to make Windows Hello for Business (WHfB) work with your on-premises Active Directory (AD). Two of them cost you a public key infrastructure (PKI), a federation server, or both. The third one — cloud Kerberos trust — needs neither, deploys in an afternoon, and is the model Microsoft now recommends for almost everyone. If you are still running key trust or certificate trust "because that is how we set it up in 2019," this guide is your migration brief.

This is a hands-on deployment walkthrough for endpoint engineers running hybrid or cloud-only Microsoft Entra environments. We will explain what cloud Kerberos trust actually does under the hood — the partial ticket-granting ticket (TGT) exchange that makes it work — then deploy it end to end with Intune, a Configuration Service Provider (CSP) custom policy, and Group Policy, and verify every step with commands you can run right now.

The problem: three ways to trust, two of them hurt

Here is the thing WHfB has to solve. When a user signs in with a PIN or their face, Windows authenticates them to Microsoft Entra ID with an asymmetric key pair — no password crosses the wire. That is great for cloud resources. But your file servers, print servers, and line-of-business apps still speak Kerberos, and Kerberos wants a ticket from an on-premises domain controller (DC). So the question every WHfB deployment must answer is: how does a passwordless sign-in turn into a Kerberos ticket the DC will accept?

The "trust type" is the answer to that question. There are three:

Note: Cloud Kerberos trust supports both Microsoft Entra joined and Microsoft Entra hybrid joined devices. It does not work on standalone AD DS-joined (on-premises only, never-registered-with-Entra) devices — those have no Primary Refresh Token (PRT) to carry the ticket.

Why it happens: how cloud Kerberos trust actually works (the partial TGT)

Let us trace what happens the moment a user unlocks with their PIN. This is the mechanism the whole model hangs on, and if you understand these five steps you will diagnose 90% of cloud-trust problems on sight.

When you enable Microsoft Entra Kerberos in a domain, a special computer object called AzureADKerberos is created under OU=Domain Controllers. It looks like a read-only domain controller (RODC) in Active Directory Users and Computers, but it is not tied to any physical server. Its only job is to hold the encryption key that lets Microsoft Entra ID mint Kerberos tickets your real DCs will honour. A disabled user account, CN=krbtgt_AzureAD,CN=Users,<domain-DN>, holds that TGT encryption key.

With that in place, sign-in looks like this:

  1. The user signs in to Windows with their Windows Hello gesture and authenticates to Microsoft Entra ID.
  2. Entra ID checks its directory for a Kerberos Server key matching the user's on-premises AD domain, then generates a partial TGT for that domain. The partial TGT contains the user's security identifier (SID) only — no group memberships, no authorization data.
  3. The partial TGT is returned to the client alongside the user's Primary Refresh Token (PRT).
  4. The client contacts a real on-premises DC and trades the partial TGT for a fully formed TGT — the DC fills in all the group SIDs and authorization data.
  5. The client now holds a PRT (for cloud) and a full AD TGT (for on-prem). Single sign-on works everywhere.

The elegant part: authorization never leaves your DCs. Entra ID vouches for who the user is; your Active Directory still decides what they can touch. That is why service tickets and group-based access control keep working exactly as before.

Gotcha: Step 4 needs a writable DC with line of sight. On a Microsoft Entra hybrid joined device, the very first Hello sign-in must reach a DC to complete the exchange. No DC connectivity on first use = sign-in fails. After that first success, cached sign-in works offline. Plan your first-boot and VPN-before-logon story around this.

How to verify: the prerequisites, before you touch policy

Do not enable the policy and hope. Confirm each prerequisite first; every one of them maps to a real failure mode.

RequirementWhy it mattersHow to verify
DCs on Windows Server 2016+ with the Feb 2020 patches (KB4534307 / KB4534321)Older/unpatched DCs cannot service the partial-TGT exchangenltest /dsgetdc:contoso /keylist /kdc
AES256_HMAC_SHA1 enabled for KerberosThe Entra Kerberos key is AES256; RC4-only DCs reject itReview the Network security: Configure encryption types allowed for Kerberos policy
Entra Connect syncing onPremisesSamAccountName, onPremisesDomainName, onPremisesSecurityIdentifierEntra ID cannot build a TGT for a user it cannot map back to ADCheck the user object in Entra; these map to accountName, domainFQDN, objectSID in Connect
Device is Entra joined or Entra hybrid joinedNo PRT on a workgroup/AD-only device = no partial TGTdsregcmd /statusAzureAdJoined : YES
TPM 2.0 present (strongly recommended)Protects the WHfB private key in hardwareGet-TpmTpmPresent : True

Here is what a healthy DC key-list check looks like. You are confirming at least one DC advertises the Entra Kerberos capability:

Command Prompt (Administrator)
C:\> nltest /dsgetdc:contoso /keylist /kdc DC: \\DC01.contoso.com Address: \\10.20.0.10 Dom Guid: 8f1c... # good — a DC answered Dom Name: contoso.com Forest Name: contoso.com Dc Site Name: Default-First-Site-Name The command completed successfully # the /keylist switch is Win10 2004+ only
Tip: If you have already enabled passwordless FIDO2 security-key sign-in to on-premises resources, you are done with this whole first stage — Microsoft Entra Kerberos is already deployed and you can jump straight to the policy settings. Cloud Kerberos trust reuses the exact same Entra Kerberos plumbing.

The fix: deploy cloud Kerberos trust step by step

Step 1 — Deploy Microsoft Entra Kerberos

You run this once per AD domain that contains Entra users, from the Entra Connect server (or any server that can reach a writable DC and has the Microsoft.Online.PasswordSynchronization.Rpc.dll dependency). First install the module:

Windows PowerShell (Administrator)
# Ensure TLS 1.2 so the PowerShell Gallery will answer [Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12 # The official module for Entra Kerberos / FIDO2 on-prem management Install-Module -Name AzureADHybridAuthenticationManagement -AllowClobber

Now create the Entra Kerberos server object. You need an AD account that is Domain Admin for the domain and Enterprise Admin for the forest, plus an Entra account with the Hybrid Identity Administrator role. This example prompts for both:

Windows PowerShell (Administrator)
$domain = $env:USERDNSDOMAIN # Entra Hybrid Identity Administrator $cloudCred = Get-Credential -Message 'Entra Hybrid Identity Administrator' # AD Domain Admin + Enterprise Admin $domainCred = Get-Credential -Message 'AD Domain Admin / Enterprise Admin' # Create the AzureADKerberos object in AD and publish it to Entra ID Set-AzureADKerberosServer -Domain $domain -CloudCredential $cloudCred -DomainCredential $domainCred
Note: If your admin sign-in enforces multifactor authentication, FIDO2, or smart cards, drop -CloudCredential and use -UserPrincipalName administrator@contoso.onmicrosoft.com instead — that triggers an interactive modern-auth prompt. On a domain-joined box running as a Domain Admin you can also omit -DomainCredential and your current Windows token is used.

Verify it landed. The one field that matters most: KeyVersion on the on-prem object must equal CloudKeyVersion on the Entra object. If they diverge, the ticket exchange will fail with encryption errors.

Windows PowerShell (Administrator)
Get-AzureADKerberosServer -Domain $domain -UserPrincipalName $upn -DomainCredential (Get-Credential) Id : 192272 DomainDnsName : contoso.com ComputerAccount : CN=AzureADKerberos,OU=Domain Controllers,DC=contoso,DC=com UserAccount : CN=krbtgt_AzureAD,CN=Users,DC=contoso,DC=com KeyVersion : 192272 # must equal CloudKeyVersion below CloudId : 192272 CloudKeyVersion : 192272 # match = healthy
Watch out: The default Password Replication Policy on the AzureADKerberos object deliberately blocks members of privileged built-in groups (Domain Admins, Enterprise Admins, etc.) from getting a partial TGT. This is a security control against an Entra-to-AD escalation path — do not relax it to "fix" admin sign-in. Give admins a separate, unprivileged day-to-day account instead.

Step 2 — Configure the Windows Hello for Business policy

Cloud Kerberos trust needs two settings on: Use Windows Hello for Business and Use cloud trust for on-premises authentication. A third — Use a hardware security device — is optional but strongly recommended so the key lives in the TPM.

Option A — Intune Settings Catalog (recommended)

Create a Settings Catalog policy and add the Windows Hello for Business category settings. In the Intune admin center:

DevicesConfigurationCreateSettings catalogWindows Hello for Business
Intune Admin Center — Settings catalog
Use Windows Hello For Businesstrue
Use Cloud Trust For On Prem AuthEnabled
Require Security Devicetrue

If your tenant-wide WHfB enrolment policy (under Devices › Enrollment › Windows Hello for Business) is already enabled to your liking, you only strictly need the Use Cloud Trust For On Prem Auth toggle here — otherwise configure all three.

Option B — Custom CSP policy (PassportForWork)

If you would rather push raw CSP, create a custom policy with these three OMA-URIs. Replace {TenantId} with your directory (tenant) GUID:

Intune — Custom OMA-URI
./Device/Vendor/MSFT/PassportForWork/{TenantId}/Policies/UsePassportForWork bool = True ./Device/Vendor/MSFT/PassportForWork/{TenantId}/Policies/UseCloudTrustForOnPremAuth bool = True ./Device/Vendor/MSFT/PassportForWork/{TenantId}/Policies/RequireSecurityDevice bool = True

Option C — Group Policy

For AD-managed devices, first copy the current Passport.admx and Passport.adml from a modern Windows client into your Central Store — older definitions do not contain the cloud-trust setting. Then set:

Group Policy pathSettingValue
Computer (or User) Configuration \ Administrative Templates \ Windows Components \ Windows Hello for BusinessUse Windows Hello for BusinessEnabled
Computer Configuration \ Administrative Templates \ Windows Components \ Windows Hello for BusinessUse cloud Kerberos trust for on-premises authenticationEnabled
Computer Configuration \ Administrative Templates \ Windows Components \ Windows Hello for BusinessUse a hardware security deviceEnabled
Gotcha: The cloud-trust setting is computer-scope only — there is no user-node equivalent. And if you configure WHfB through both Group Policy and Intune, Group Policy wins and the Intune settings are silently ignored. Pick one channel per device and stick to it.
Watch out: If the Use certificate for on-premises authentication policy is enabled anywhere in scope, certificate trust takes precedence and cloud Kerberos trust never activates — with no obvious error. Set that certificate policy to Not configured on every device you want on cloud trust.

Step 3 — Enrol

Provisioning starts automatically at the next sign-in once prerequisite checks pass. On a hybrid-joined device, cloud Kerberos trust adds one extra check: does the user have a partial TGT? This proves Entra Kerberos is set up for their domain. The user is walked through biometrics (optional), a multifactor prompt, and PIN creation, then Windows registers the WHfB public key — from the TPM if present. On Entra hybrid joined devices, Entra Connect then syncs that key back into AD.

Proof it worked

Two commands settle it. First, dsregcmd /status — look in the SSO State block for the partial-TGT check and confirm the join state:

Command Prompt
C:\> dsregcmd /status +----------------------------------------------------------------------+ | Device State | +----------------------------------------------------------------------+ AzureAdJoined : YES # good DomainJoined : YES # hybrid = both YES +----------------------------------------------------------------------+ | SSO State | +----------------------------------------------------------------------+ AzureAdPrt : YES # PRT present OnPremTgt : YES # full AD TGT obtained via cloud trust CloudTgt : YES

Then klist — you should see a Kerberos TGT for your realm, proving the partial-to-full exchange completed against a real DC:

Command Prompt
C:\> klist Current LogonId is 0:0x3e7a1 Cached Tickets: (2) #0> Client: jdoe @ CONTOSO.COM Server: krbtgt/CONTOSO.COM @ CONTOSO.COM # full TGT — success KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96

Now open a share on a file server (\\fileserver\finance). No credential prompt = single sign-on is working end to end. That is cloud Kerberos trust doing its job with zero PKI behind it.

Migrating from an older trust model

Already on key trust? It is easy: set up Entra Kerberos, enable cloud trust, then sign out and back in (hybrid users must do that first sign-in with line of sight to a DC). Both models can even coexist during rollout — if the partial-TGT check fails, the device quietly falls back to the key-trust path.

Certificate trust is harder — there is no direct migration path. You must delete the Windows Hello container first: disable the certificate-trust policy, enable cloud trust, run certutil.exe -deletehellocontainer in the user context, then sign out and back in to re-provision. We cover the NDES decommission in detail in the certificate-trust migration guide.

Tip: Roll out with a security group filter, not a blanket assignment. Scope the WHfB policy to a pilot group of 20–50 devices, confirm OnPremTgt : YES and clean file-share SSO, then widen the ring. A phased rollout means one misconfigured DC hits 30 people, not 30,000.

References

PowerShell Scripts — Cloud Kerberos Trust Readiness

Script for this post is in Daily-Tasks.

Test-CloudKerberosTrustReadiness.ps1 — read-only: checks join state, PRT, TGT, TPM and cloud-trust policy, returns a PASS/WARN/FAIL verdict
View all scripts on GitHub
Share this post
LinkedIn X / Twitter Reddit Bluesky

More from EndpointWeekly

Windows Hello for Business
Windows Hello PIN Reset Done Right: Destructive vs…
The default WHfB PIN reset throws away the credential and re-enrols - which can lock out…
Windows Hello for Business
Windows Hello Signs In Fine but File Shares Prompt: Fixing…
The user signs in with their PIN and cloud apps work, but a file share throws a…
Windows Hello for Business
How to Cleanly Disable or Remove Windows Hello for Business…
WHfB is enabled by default on every Entra joined device - Autopilot turned it on, not…