Skip to content

Commit 590a5d4

Browse files
authored
Merge pull request #83909 from iainfoulds/azureadds-phs-updates
[AzureADDS] Adding password hash sync process to Azure AD DS
2 parents b3d2fb2 + 2864c57 commit 590a5d4

File tree

1 file changed

+33
-3
lines changed

1 file changed

+33
-3
lines changed

articles/active-directory/hybrid/how-to-connect-password-hash-synchronization.md

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,6 @@ The following section describes, in-depth, how password hash synchronization wor
5858
>[!Note]
5959
>The original MD4 hash is not transmitted to Azure AD. Instead, the SHA256 hash of the original MD4 hash is transmitted. As a result, if the hash stored in Azure AD is obtained, it cannot be used in an on-premises pass-the-hash attack.
6060
61-
### How password hash synchronization works with Azure Active Directory Domain Services
62-
You can also use the password hash synchronization feature to synchronize your on-premises passwords to [Azure Active Directory Domain Services](../../active-directory-domain-services/overview.md). In this scenario, the Azure Active Directory Domain Services instance authenticates your users in the cloud with all the methods available in your on-premises Active Directory instance. The experience of this scenario is similar to using the Active Directory Migration Tool (ADMT) in an on-premises environment.
63-
6461
### Security considerations
6562
When synchronizing passwords, the plain-text version of your password is not exposed to the password hash synchronization feature, to Azure AD, or any of the associated services.
6663

@@ -100,6 +97,39 @@ The synchronization of a password has no impact on the Azure user who is signed
10097
- Generally, password hash synchronization is simpler to implement than a federation service. It doesn't require any additional servers, and eliminates dependence on a highly available federation service to authenticate users.
10198
- Password hash synchronization can also be enabled in addition to federation. It may be used as a fallback if your federation service experiences an outage.
10299

100+
## Password hash sync process for Azure AD Domain Services
101+
102+
If you use Azure AD Domain Services to provide legacy authentication for applications and services that need to use Keberos, LDAP, or NTLM, some additional processes are part of the password hash synchronization flow. Azure AD Connect uses the additional following process to synchronize password hashes to Azure AD for use in Azure AD Domain Services:
103+
104+
> [!IMPORTANT]
105+
> Azure AD Connect only synchronizes legacy password hashes when you enable Azure AD DS for your Azure AD tenant. The following steps aren't used if you only use Azure AD Connect to synchronize an on-premises AD DS environment with Azure AD.
106+
>
107+
> If your legacy applications don't use NTLM authentication or LDAP simple binds, we recommend that you disable NTLM password hash synchronization for Azure AD DS. For more information, see [Disable weak cipher suites and NTLM credential hash synchronization](../../active-directory-domain-services/secure-your-domain.md).
108+
109+
1. Azure AD Connect retrieves the public key for the tenant's instance of Azure AD Domain Services.
110+
1. When a user changes their password, the on-premises domain controller stores the result of the password change (hashes) in two attributes:
111+
* *unicodePwd* for the NTLM password hash.
112+
* *supplementalCredentials* for the Kerberos password hash.
113+
1. Azure AD Connect detects password changes through the directory replication channel (attribute changes needing to replicate to other domain controllers).
114+
1. For each user whose password has changed, Azure AD Connect performs the following steps:
115+
* Generates a random AES 256-bit symmetric key.
116+
* Generates a random initialization vector needed for the first round of encryption.
117+
* Extracts Kerberos password hashes from the *supplementalCredentials* attributes.
118+
* Checks the Azure AD Domain Services security configuration *SyncNtlmPasswords* setting.
119+
* If this setting is disabled, generates a random, high-entropy NTLM hash (different from the user's password). This hash is then combined with the exacted Kerberos password hashes from the *supplementalCrendetials* attribute into one data structure.
120+
* If enabled, combines the value of the *unicodePwd* attribute with the extracted Kerberos password hashes from the *supplementalCredentials* attribute into one data structure.
121+
* Encrypts the single data structure using the AES symmetric key.
122+
* Encrypts the AES symmetric key using the tenant's Azure AD Domain Services public key.
123+
1. Azure AD Connect transmits the encrypted AES symmetric key, the encrypted data structure containing the password hashes, and the initialization vector to Azure AD.
124+
1. Azure AD stores the encrypted AES symmetric key, the encrypted data structure, and the initialization vector for the user.
125+
1. Azure AD pushes the encrypted AES symmetric key, the encrypted data structure, and the initialization vector using an internal synchronization mechanism over an encrypted HTTP session to Azure AD Domain Services.
126+
1. Azure AD Domain Services retrieves the private key for the tenant's instance from Azure Key vault.
127+
1. For each encrypted set of data (representing a single user's password change), Azure AD Domain Services then performs the following steps:
128+
* Uses its private key to decrypt the AES symmetric key.
129+
* Uses the AES symmetric key with the initialization vector to decrypt the encrypted data structure that contains the password hashes.
130+
* Writes the Kerberos password hashes it receives to the Azure AD Domain Services domain controller. The hashes are saved into the user object's *supplementalCredentials* attribute that is encrypted to the Azure AD Domain Services domain controller's public key.
131+
* Azure AD Domain Services writes the NTLM password hash it received to the Azure AD Domain Services domain controller. The hash is saved into the user object's *unicodePwd* attribute that is encrypted to the Azure AD Domain Services domain controller's public key.
132+
103133
## Enable password hash synchronization
104134

105135
>[!IMPORTANT]

0 commit comments

Comments
 (0)