Skip to content

Commit be1252b

Browse files
committed
Another article
1 parent e3f2dcb commit be1252b

File tree

1 file changed

+43
-56
lines changed

1 file changed

+43
-56
lines changed

azure-stack/operator/azure-stack-integrate-identity.md

Lines changed: 43 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: Integrate AD FS identity with your Azure Stack Hub datacenter
33
description: Learn how to integrate Azure Stack Hub AD FS identity provider with your datacenter AD FS.
44
author: sethmanheim
55
ms.topic: how-to
6-
ms.date: 05/15/2023
6+
ms.date: 08/12/2025
77
ms.author: sethm
88
ms.reviewer: thoroet
99
ms.lastreviewed: 05/10/2019
@@ -48,25 +48,25 @@ Requirements:
4848

4949
## Setting up Graph integration
5050

51-
Graph only supports integration with a single Active Directory forest. If multiple forests exist, only the forest specified in the configuration will be used to fetch users and groups.
51+
Graph only supports integration with a single Active Directory forest. If multiple forests exist, only the forest specified in the configuration is used to fetch users and groups.
5252

5353
The following information is required as inputs for the automation parameters:
5454

5555
|Parameter|Deployment Worksheet Parameter|Description|Example|
5656
|---------|---------|---------|---------|
57-
|`CustomADGlobalCatalog`|AD FS Forest FQDN|FQDN of the target Active Directory forest that you want to integrate with|Contoso.com|
58-
|`CustomADAdminCredentials`| |A user with LDAP Read permission|graphservice|
57+
|`CustomADGlobalCatalog`|AD FS Forest FQDN|FQDN of the target Active Directory forest that you want to integrate with.|Contoso.com|
58+
|`CustomADAdminCredentials`| |A user with LDAP **Read** permission.|graphservice|
5959

60-
### Configure Active Directory Sites
60+
### Configure Active Directory sites
6161

6262
For Active Directory deployments having multiple sites, configure the closest Active Directory Site to your Azure Stack Hub deployment. The configuration avoids having the Azure Stack Hub Graph service resolve queries using a Global Catalog Server from a remote site.
6363

64-
Add the Azure Stack Hub [Public VIP network](azure-stack-network.md#public-vip-network) subnet to the Active Directory Site closest to Azure Stack Hub. For example, let's say your Active Directory has two sites: Seattle and Redmond. If Azure Stack Hub is deployed at the Seattle site, you would add the Azure Stack Hub Public VIP network subnet to the Active Directory site for Seattle.
64+
Add the Azure Stack Hub [Public VIP network](azure-stack-network.md#public-vip-network) subnet to the Active Directory Site closest to Azure Stack Hub. For example, your Active Directory has two sites: Seattle and Redmond. If Azure Stack Hub is deployed at the Seattle site, you add the Azure Stack Hub Public VIP network subnet to the Active Directory site for Seattle.
6565

66-
For more information on Active Directory Sites, see [Designing the site topology](/windows-server/identity/ad-ds/plan/designing-the-site-topology).
66+
For more information about Active Directory sites, see [Designing the site topology](/windows-server/identity/ad-ds/plan/designing-the-site-topology).
6767

6868
> [!NOTE]
69-
> If your Active Directory consist of a single site, you can skip this step. If you have a catch-all subnet configured, validate that the Azure Stack Hub Public VIP network subnet isn't part of it.
69+
> If your Active Directory consists of a single site, you can skip this step. If you have a catch-all subnet configured, validate that the Azure Stack Hub public VIP network subnet isn't part of it.
7070
7171
### Create user account in the existing Active Directory (optional)
7272

@@ -76,22 +76,20 @@ Optionally, you can create an account for the Graph service in the existing Acti
7676
- **Username**: graphservice
7777
- **Password**: Use a strong password and configure the password to never expire.
7878

79-
No special permissions or membership is required.
79+
No special permissions or membership are required.
8080

8181
#### Trigger automation to configure graph
8282

8383
For this procedure, use a computer in your datacenter network that can communicate with the privileged endpoint in Azure Stack Hub.
8484

85-
1. Open an elevated Windows PowerShell session (run as administrator), and connect to the IP address of the privileged endpoint. Use the credentials for **CloudAdmin** to authenticate.
85+
1. Open an elevated Windows PowerShell session (run as administrator), and connect to the IP address of the privileged endpoint. Use the **CloudAdmin** credentials to authenticate.
8686

8787
```powershell
8888
$creds = Get-Credential
8989
$pep = New-PSSession -ComputerName <IP Address of ERCS> -ConfigurationName PrivilegedEndpoint -Credential $creds -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
9090
```
9191

92-
2. Now that you have a session with the privileged endpoint, run the following command:
93-
94-
**Run the below script for Azure Stack Hub build 2008 and newer** <br>
92+
1. Now that you have a session with the privileged endpoint, run the following command:
9593

9694
```powershell
9795
$i = @(
@@ -103,24 +101,14 @@ For this procedure, use a computer in your datacenter network that can communica
103101
})
104102
105103
Invoke-Command -Session $pep -ScriptBlock {Register-DirectoryService -customCatalog $using:i}
106-
107-
108104
```
109105

110-
**Run the below script for Azure Stack Hub build prior to 2008** <br>
111-
112-
```powershell
113-
Invoke-Command -Session $pep -ScriptBlock {Register-DirectoryService -CustomADGlobalCatalog contoso.com}
114-
115-
116-
```
117-
118-
When prompted, specify the credential for the user account that you want to use for the Graph service (such as graphservice). The input for the Register-DirectoryService cmdlet must be the forest name / root domain in the forest rather than any other domain in the forest.
106+
When prompted, specify the credential for the user account that you want to use for the Graph service (such as graphservice). The input for the `Register-DirectoryService` cmdlet must be the forest name/root domain in the forest rather than any other domain in the forest.
119107

120108
> [!IMPORTANT]
121-
> Wait for the credentials pop-up (Get-Credential isn't supported in the privileged endpoint) and enter the Graph Service Account credentials.
109+
> Wait for the credentials pop-up (`Get-Credential` isn't supported in the privileged endpoint) and enter the Graph Service account credentials.
122110
123-
3. The **Register-DirectoryService** cmdlet has optional parameters that you can use in certain scenarios where the existing Active Directory validation fails. When this cmdlet is executed, it validates that the provided domain is the root domain, a global catalog server can be reached, and that the provided account is granted read access.
111+
1. The `Register-DirectoryService` cmdlet has optional parameters that you can use in certain scenarios where the existing Active Directory validation fails. When this cmdlet is executed, it validates that the provided domain is the root domain, a global catalog server can be reached, and that the provided account is granted read access.
124112

125113
|Parameter|Description|
126114
|---------|---------|
@@ -129,9 +117,9 @@ For this procedure, use a computer in your datacenter network that can communica
129117

130118
#### Graph protocols and ports
131119

132-
Graph service in Azure Stack Hub uses the following protocols and ports to communicate with a writeable Global Catalog Server (GC) and Key Distribution Center (KDC) that can process login requests in the target Active Directory forest.
120+
The Graph service in Azure Stack Hub uses the following protocols and ports to communicate with a writeable Global Catalog Server (GC) and Key Distribution Center (KDC) that can process login requests in the target Active Directory forest.
133121

134-
Graph service in Azure Stack Hub uses the following protocols and ports to communicate with the target Active Directory:
122+
The Graph service in Azure Stack Hub uses the following protocols and ports to communicate with the target Active Directory:
135123

136124
|Type|Port|Protocol|
137125
|---------|---------|---------|
@@ -140,15 +128,15 @@ Graph service in Azure Stack Hub uses the following protocols and ports to commu
140128
|LDAP GC|3268|TCP|
141129
|LDAP GC SSL|3269|TCP|
142130

143-
## Setting up AD FS integration by downloading federation metadata
131+
## Set up AD FS integration by downloading federation metadata
144132

145133
The following information is required as input for the automation parameters:
146134

147-
|Parameter|Deployment Worksheet Parameter|Description|Example|
135+
|Parameter|Deployment worksheet parameter|Description|Example|
148136
|---------|---------|---------|---------|
149-
|CustomAdfsName|AD FS Provider Name|Name of the claims provider.<br>It appears that way on the AD FS landing page.|Contoso|
150-
|CustomAD<br>FSFederationMetadataEndpointUri|AD FS Metadata URI|Federation metadata link.| https:\//ad01.contoso.com/federationmetadata/2007-06/federationmetadata.xml |
151-
|SigningCertificateRevocationCheck|NA|Optional Parameter to skip CRL checking.|None|
137+
|CustomAdfsName|AD FS provider name|Name of the claims provider.<br>It appears that way on the AD FS landing page.|Contoso|
138+
|CustomAD<br>FSFederationMetadataEndpointUri|AD FS metadata URI|Federation metadata link.| `https://ad01.contoso.com/federationmetadata/2007-06/federationmetadata.xml` |
139+
|SigningCertificateRevocationCheck|NA|Optional parameter to skip CRL checking.|None|
152140

153141
### Trigger automation to configure claims provider trust in Azure Stack Hub (by downloading federation metadata)
154142

@@ -161,19 +149,19 @@ For this procedure, use a computer that can communicate with the privileged endp
161149
Enter-PSSession -ComputerName <IP Address of ERCS> -ConfigurationName PrivilegedEndpoint -Credential $creds
162150
```
163151

164-
2. Now that you're connected to the privileged endpoint, run the following command using the parameters appropriate for your environment:
152+
1. Now that you're connected to the privileged endpoint, run the following command using the parameters appropriate for your environment:
165153

166154
```powershell
167155
Register-CustomAdfs -CustomAdfsName Contoso -CustomADFSFederationMetadataEndpointUri "https://ad01.contoso.com/federationmetadata/2007-06/federationmetadata.xml"
168156
```
169157

170-
3. Run the following command to update the owner of the default provider subscription using the parameters appropriate for your environment:
158+
1. Run the following command to update the owner of the default provider subscription using the parameters appropriate for your environment:
171159

172160
```powershell
173161
Set-ServiceAdminOwner -ServiceAdminOwnerUpn "[email protected]"
174162
```
175163

176-
## Setting up AD FS integration by providing federation metadata file
164+
## Set up AD FS integration by providing federation metadata file
177165

178166
Beginning with version 1807, use this method if the either of the following conditions are true:
179167

@@ -194,40 +182,40 @@ For the following procedure, you must use a computer that has network connectivi
194182
1. Open an elevated Windows PowerShell session, and run the following command using the parameters appropriate for your environment:
195183

196184
```powershell
197-
$url = "https://win-SQOOJN70SGL.contoso.com/FederationMetadata/2007-06/FederationMetadata.xml"
198-
$webclient = New-Object System.Net.WebClient
199-
$webclient.Encoding = [System.Text.Encoding]::UTF8
200-
$metadataAsString = $webclient.DownloadString($url)
201-
Set-Content -Path c:\metadata.xml -Encoding UTF8 -Value $metadataAsString
185+
$url = "https://win-SQOOJN70SGL.contoso.com/FederationMetadata/2007-06/FederationMetadata.xml"
186+
$webclient = New-Object System.Net.WebClient
187+
$webclient.Encoding = [System.Text.Encoding]::UTF8
188+
$metadataAsString = $webclient.DownloadString($url)
189+
Set-Content -Path c:\metadata.xml -Encoding UTF8 -Value $metadataAsString
202190
```
203191

204-
2. Copy the metadata file to a computer that can communicate with the privileged endpoint.
192+
1. Copy the metadata file to a computer that can communicate with the privileged endpoint.
205193

206194
### Trigger automation to configure claims provider trust in Azure Stack Hub (using federation metadata file)
207195

208196
For this procedure, use a computer that can communicate with the privileged endpoint in Azure Stack Hub and has access to the metadata file you created in a previous step.
209197

210-
1. Open an elevated Windows PowerShell session and connect to the privileged endpoint.
198+
1. Open an elevated Windows PowerShell session and connect to the privileged endpoint:
211199

212200
```powershell
213201
$federationMetadataFileContent = get-content c:\metadata.xml
214202
$creds=Get-Credential
215203
Enter-PSSession -ComputerName <IP Address of ERCS> -ConfigurationName PrivilegedEndpoint -Credential $creds
216204
```
217205

218-
2. Now that you're connected to the privileged endpoint, run the following command using the parameters appropriate for your environment:
206+
1. Now that you're connected to the privileged endpoint, run the following command using the appropriate parameters for your environment:
219207

220208
```powershell
221209
Register-CustomAdfs -CustomAdfsName Contoso -CustomADFSFederationMetadataFileContent $using:federationMetadataFileContent
222210
```
223211
224-
3. Run the following command to update the owner of the default provider subscription. Use the parameters appropriate for your environment.
212+
1. Run the following command to update the owner of the default provider subscription. Use the appropriate parameters for your environment:
225213
226214
```powershell
227215
Set-ServiceAdminOwner -ServiceAdminOwnerUpn "[email protected]"
228216
```
229217

230-
> [!Note]
218+
> [!NOTE]
231219
> When you rotate the certificate on the existing AD FS (account STS), you must set up the AD FS integration again. You must set up the integration even if the metadata endpoint is reachable or it was configured by providing the metadata file.
232220
233221
## Configure relying party on existing AD FS deployment (account STS)
@@ -271,7 +259,7 @@ If you decide to manually run the commands, follow these steps:
271259
=> issue(claim = c);
272260
```
273261

274-
2. Validate that Windows Forms-based authentication for extranet and intranet is enabled. You can check if its already enabled by running the following cmdlet:
262+
1. Validate that Windows Forms-based authentication for extranet and intranet is enabled. You can check if its already enabled by running the following cmdlet:
275263

276264
```powershell
277265
Get-AdfsAuthenticationProvider | where-object { $_.name -eq "FormsAuthentication" } | select Name, AllowedForPrimaryExtranet, AllowedForPrimaryIntranet
@@ -280,7 +268,7 @@ If you decide to manually run the commands, follow these steps:
280268
> [!Note]
281269
> The Windows Integrated Authentication (WIA) supported user agent strings may be outdated for your AD FS deployment and may require an update to support the latest clients. You can read more about updating the WIA supported user agent strings in the article [Configuring intranet forms-based authentication for devices that don't support WIA](/windows-server/identity/ad-fs/operations/configure-intranet-forms-based-authentication-for-devices-that-do-not-support-wia).<br><br>For steps to enable Form-based authentication policy, see [Configure Authentication Policies](/windows-server/identity/ad-fs/operations/configure-authentication-policies).
282270
283-
3. To add the relying party trust, run the following Windows PowerShell command on your AD FS instance or a farm member. Make sure to update the AD FS endpoint and point to the file created in Step 1.
271+
1. To add the relying party trust, run the following Windows PowerShell command on your AD FS instance or a farm member. Make sure to update the AD FS endpoint and point to the file created in Step 1.
284272

285273
> [!IMPORTANT]
286274
> For customers running Azure Stack Hub versions 2002 and later, TLS 1.2 is enforced on the Azure Stack Hub ADFS endpoint. As such, [TLS 1.2 must also be enabled](/mem/configmgr/core/plan-design/security/enable-tls-1-2-client) on the customer ADFS servers. Otherwise, the following error will occur when running `Add-ADFSRelyingPartyTrust` on the customer owned ADFS host/farm:
@@ -302,7 +290,7 @@ If you decide to manually run the commands, follow these steps:
302290
> [!IMPORTANT]
303291
> You must use the AD FS MMC snap-in to configure the Issuance Authorization Rules when using Windows Server 2012 or 2012 R2 AD FS.
304292
305-
4. When you use Internet Explorer or the Microsoft Edge browser to access Azure Stack Hub, you must ignore token bindings. Otherwise, the sign-in attempts fail. On your AD FS instance or a farm member, run the following command:
293+
1. When you use the Microsoft Edge browser to access Azure Stack Hub, you must ignore token bindings. Otherwise, the sign-in attempts fail. On your AD FS instance or a farm member, run the following command:
306294

307295
> [!note]
308296
> This step isn't applicable when using Windows Server 2012 or 2012 R2 AD FS. In that case, it's safe to skip this command and continue with the integration.
@@ -321,15 +309,14 @@ There are many scenarios that require the use of a service principal name (SPN)
321309
- Various apps.
322310
- You require a non-interactive sign-in.
323311

324-
> [!Important]
312+
> [!IMPORTANT]
325313
> AD FS only supports interactive sign-in sessions. If you require a non-interactive sign-in for an automated scenario, you must use a SPN.
326314
327315
For more information on creating an SPN, see [Create service principal for AD FS](./give-app-access-to-resources.md).
328316

329-
330317
## Troubleshooting
331318

332-
### Configuration Rollback
319+
### Configuration rollback
333320

334321
If an error occurs that leaves the environment in a state where you can no longer authenticate, a rollback option is available.
335322

@@ -340,7 +327,7 @@ If an error occurs that leaves the environment in a state where you can no longe
340327
Enter-PSSession -ComputerName <IP Address of ERCS> -ConfigurationName PrivilegedEndpoint -Credential $creds
341328
```
342329

343-
2. Then run the following cmdlet:
330+
1. Then run the following cmdlet:
344331

345332
```powershell
346333
Reset-DatacenterIntegrationConfiguration
@@ -357,16 +344,16 @@ If an error occurs that leaves the environment in a state where you can no longe
357344

358345
### Collecting additional logs
359346

360-
If any of the cmdlets fail, you can collect additional logs by using the `Get-Azurestacklogs` cmdlet.
347+
If any of the cmdlets fail, you can collect additional logs by using the `Get-AzureStackLog` cmdlet.
361348

362349
1. Open an elevated Windows PowerShell session and run the following commands:
363350

364351
```powershell
365352
$creds = Get-Credential
366-
Enter-pssession -ComputerName <IP Address of ERCS> -ConfigurationName PrivilegedEndpoint -Credential $creds
353+
Enter-PSSession -ComputerName <IP Address of ERCS> -ConfigurationName PrivilegedEndpoint -Credential $creds
367354
```
368355

369-
2. Then run the following cmdlet:
356+
1. Then run the following cmdlet:
370357

371358
```powershell
372359
Get-AzureStackLog -OutputPath \\myworkstation\AzureStackLogs -FilterByRole ECE

0 commit comments

Comments
 (0)