Skip to content

Commit b3e7c6d

Browse files
author
gitName
committed
Merge branch 'main' of https://github.com/MicrosoftDocs/azure-docs-pr into wscon
2 parents 875613f + e93721d commit b3e7c6d

File tree

255 files changed

+1512
-2240
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

255 files changed

+1512
-2240
lines changed

.openpublishing.redirection.json

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,45 @@
11
{
22
"redirections": [
3+
{
4+
"source_path": "articles/defender-for-iot/organizations/legacy-central-management/legacy-air-gapped-deploy.md",
5+
"redirect_url": "/previous-versions/azure/defender-for-iot/organizations/legacy-central-management/legacy-air-gapped-deploy",
6+
"redirect_document_id": false
7+
},
8+
{
9+
"source_path": "articles/defender-for-iot/organizations/legacy-central-management/prepare-management-appliance.md",
10+
"redirect_url": "/previous-versions/azure/defender-for-iot/organizations/legacy-central-management/prepare-management-appliance",
11+
"redirect_document_id": false
12+
},
13+
{
14+
"source_path": "articles/defender-for-iot/organizations/legacy-central-management/install-software-on-premises-management-console.md",
15+
"redirect_url": "/previous-versions/azure/defender-for-iot/organizations/legacy-central-management/install-software-on-premises-management-console",
16+
"redirect_document_id": false
17+
},
18+
{
19+
"source_path": "articles/defender-for-iot/organizations/legacy-central-management/activate-deploy-management.md",
20+
"redirect_url": "/previous-versions/azure/defender-for-iot/organizations/legacy-central-management/activate-deploy-management",
21+
"redirect_document_id": false
22+
},
23+
{
24+
"source_path": "articles/defender-for-iot/organizations/legacy-central-management/connect-sensors-to-management.md",
25+
"redirect_url": "/previous-versions/azure/defender-for-iot/organizations/legacy-central-management/connect-sensors-to-management",
26+
"redirect_document_id": false
27+
},
28+
{
29+
"source_path": "articles/defender-for-iot/organizations/legacy-central-management/sites-and-zones-on-premises.md",
30+
"redirect_url": "/previous-versions/azure/defender-for-iot/organizations/legacy-central-management/sites-and-zones-on-premises",
31+
"redirect_document_id": false
32+
},
33+
{
34+
"source_path": "articles/defender-for-iot/organizations/legacy-central-management/how-to-investigate-all-enterprise-sensor-detections-in-a-device-inventory.md",
35+
"redirect_url": "/previous-versions/azure/defender-for-iot/organizations/legacy-central-management/how-to-investigate-all-enterprise-sensor-detections-in-a-device-inventory",
36+
"redirect_document_id": false
37+
},
38+
{
39+
"source_path": "articles/defender-for-iot/organizations/legacy-central-management/how-to-work-with-alerts-on-premises-management-console.md",
40+
"redirect_url": "/previous-versions/azure/defender-for-iot/organizations/legacy-central-management/how-to-work-with-alerts-on-premises-management-console",
41+
"redirect_document_id": false
42+
},
343
{
444
"source_path": "articles/cdn/akamai-retirement-faq.md",
545
"redirect_url": "/previous-versions/azure/cdn/akamai-retirement-faq",

articles/active-directory-b2c/custom-policies-series-collect-user-input.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -508,6 +508,6 @@ After the policy finishes execution, you're redirected to `https://jwt.ms`, and
508508

509509
Next, learn:
510510

511-
- About [types of Technical Profiles](technicalprofiles.md#types-of-technical-profiles) in Azure AD B2C's custom policies.
511+
- About the [types of Technical Profiles](technicalprofiles.md#types-of-technical-profiles) in Azure AD B2C's custom policies.
512512

513-
- How to [Validate user inputs by using custom policy](custom-policies-series-validate-user-input.md).
513+
- How to [Validate user inputs by using custom policy](custom-policies-series-validate-user-input.md).

articles/app-service/app-service-web-configure-tls-mutual-auth.md

Lines changed: 38 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ ms.custom: devx-track-csharp, devx-track-extended-java, devx-track-js, devx-trac
1212
---
1313
# Configure TLS mutual authentication for Azure App Service
1414

15-
You can restrict access to your Azure App Service app by enabling different types of authentication for it. One way to do it is to request a client certificate when the client request is over TLS/SSL and validate the certificate. This mechanism is called TLS mutual authentication or client certificate authentication. This article shows how to set up your app to use client certificate authentication.
15+
You can restrict access to your Azure App Service app by enabling different types of authentication for it. One way to do it is to request a client certificate when the client request is over TLS/SSL and validate the certificate. This mechanism is called Transport Layer Security (TLS) mutual authentication or client certificate authentication. This article shows how to set up your app to use client certificate authentication.
1616

1717
> [!NOTE]
1818
> Your app code is responsible for validating the client certificate. App Service doesn't do anything with this client certificate other than forwarding it to your app.
@@ -22,27 +22,28 @@ You can restrict access to your Azure App Service app by enabling different type
2222
[!INCLUDE [Prepare your web app](../../includes/app-service-ssl-prepare-app.md)]
2323

2424
## Enable client certificates
25-
26-
To set up your app to require client certificates:
27-
28-
1. From the left navigation of your app's management page, select **Configuration** > **General Settings**.
29-
30-
1. Select **Client certificate mode** of choice. Select **Save** at the top of the page.
25+
When you enable client certificate for your app, you should select your choice of client certificate mode. Each mode defines how your app handles incoming client certificates:
3126

3227
|Client certificate modes|Description|
3328
|-|-|
3429
|Required|All requests require a client certificate.|
35-
|Optional|Requests may or may not use a client certificate. Clients will be prompted for a certificate by default. For example, browser clients will show a prompt to select a certificate for authentication.|
36-
|Optional Interactive User|Requests may or may not use a client certificate. Clients will not be prompted for a certificate by default. For example, browser clients will not show a prompt to select a certificate for authentication.|
30+
|Optional|Requests may or may not use a client certificate and clients are prompted for a certificate by default. For example, browser clients will show a prompt to select a certificate for authentication.|
31+
|Optional Interactive User|Requests may or may not use a client certificate and clients are not prompted for a certificate by default. For example, browser clients won't show a prompt to select a certificate for authentication.|
32+
33+
### [Azure portal](#tab/azureportal)
34+
To set up your app to require client certificates in Azure portal:
35+
1. Navigate to your app's management page.
36+
1. From the left navigation of your app's management page, select **Configuration** > **General Settings**.
37+
1. Select **Client certificate mode** of choice. Select **Save** at the top of the page.
3738

3839
### [Azure CLI](#tab/azurecli)
39-
To do the same with Azure CLI, run the following command in the [Cloud Shell](https://shell.azure.com):
40+
With Azure CLI, run the following command in the [Cloud Shell](https://shell.azure.com):
4041

4142
```azurecli-interactive
4243
az webapp update --set clientCertEnabled=true --name <app-name> --resource-group <group-name>
4344
```
44-
### [Bicep](#tab/bicep)
4545

46+
### [Bicep](#tab/bicep)
4647
For Bicep, modify the properties `clientCertEnabled`, `clientCertMode`, and `clientCertExclusionPaths`. A sample Bicep snippet is provided for you:
4748

4849
```bicep
@@ -63,7 +64,6 @@ resource appService 'Microsoft.Web/sites@2020-06-01' = {
6364
```
6465

6566
### [ARM template](#tab/arm)
66-
6767
For ARM templates, modify the properties `clientCertEnabled`, `clientCertMode`, and `clientCertExclusionPaths`. A sample ARM template snippet is provided for you:
6868

6969
```ARM
@@ -93,6 +93,9 @@ For ARM templates, modify the properties `clientCertEnabled`, `clientCertMode`,
9393

9494
When you enable mutual auth for your application, all paths under the root of your app require a client certificate for access. To remove this requirement for certain paths, define exclusion paths as part of your application configuration.
9595

96+
> [!NOTE]
97+
> Using any client certificate exclusion path triggers TLS renegotiation for incoming requests to the app.
98+
9699
1. From the left navigation of your app's management page, select **Configuration** > **General Settings**.
97100

98101
1. Next to **Certificate exclusion paths**, select the edit icon.
@@ -105,6 +108,29 @@ In the following screenshot, any path for your app that starts with `/public` do
105108

106109
![Certificate Exclusion Paths][exclusion-paths]
107110

111+
## Client certificate and TLS renegotiation
112+
App Service requires TLS renegotiation to read a request before knowing whether to prompt for a client certificate. Any of the following settings triggers TLS renegotiation:
113+
1. Using "Optional Interactive User" client certificate mode.
114+
1. Using [client certificate exclusion path](#exclude-paths-from-requiring-authentication).
115+
116+
> [!NOTE]
117+
> TLS 1.3 and HTTP 2.0 don't support TLS renegotiation. These protocols will not work if your app is configured with client certificate settings that use TLS renegotiation.
118+
119+
To disable TLS renegotiation and to have the app negotiate client certificates during TLS handshake, you must configure your app with *all* these settings:
120+
1. Set client certificate mode to "Required" or "Optional"
121+
2. Remove all client certificate exclusion paths
122+
123+
### Uploading large files with TLS renegotiation
124+
Client certificate configurations that use TLS renegotiation cannot support incoming requests with large files greater than 100 kb due to buffer size limitations. In this scenario, any POST or PUT requests over 100 kb will fail with a 403 error. This limit isn't configurable and can't be increased.
125+
126+
To address the 100 kb limit, consider these alternative solutions:
127+
128+
1. Disable TLS renegotiation. Update your app's client certificate configurations with _all_ these settings:
129+
- Set client certificate mode to either "Required" or "Optional"
130+
- Remove all client certificate exclusion paths
131+
1. Send a HEAD request before the PUT/POST request. The HEAD request handles the client certificate.
132+
1. Add the header `Expect: 100-Continue` to your request. This causes the client to wait until the server responds with a `100 Continue` before sending the request body, which bypasses the buffers.
133+
108134
## Access client certificate
109135

110136
In App Service, TLS termination of the request happens at the frontend load balancer. When App Service forwards the request to your app code with [client certificates enabled](#enable-client-certificates), it injects an `X-ARR-ClientCert` request header with the client certificate. App Service doesn't do anything with this client certificate other than forwarding it to your app. Your app code is responsible for validating the client certificate.

articles/app-service/deploy-azure-pipelines.md

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -290,51 +290,6 @@ If you want to deploy to multiple web apps, add stages to your release pipeline.
290290

291291
---
292292

293-
## Example: Make variable substitutions
294-
295-
For most language stacks, [app settings](./configure-common.md?toc=%2fazure%2fapp-service%2fcontainers%2ftoc.json#configure-app-settings) and [connection strings](./configure-common.md?toc=%2fazure%2fapp-service%2fcontainers%2ftoc.json#configure-connection-strings) can be set as environment variables at runtime.
296-
297-
But there are other reasons you would want to make variable substitutions to your *Web.config*. In this example, your Web.config file contains a connection string named `connectionString`. You can change its value before deploying to each web app. You can do this either by applying a Web.config transformation or by substituting variables in your Web.config file.
298-
299-
# [YAML](#tab/yaml/)
300-
301-
The following snippet shows an example of variable substitution by using the Azure App Service Deploy (`AzureRmWebAppDeployment`) task:
302-
303-
```yaml
304-
jobs:
305-
- job: test
306-
variables:
307-
connectionString: <test-stage connection string>
308-
steps:
309-
- task: AzureRmWebAppDeployment@4
310-
inputs:
311-
azureSubscription: '<Test stage Azure service connection>'
312-
WebAppName: '<name of test stage web app>'
313-
enableXmlVariableSubstitution: true
314-
315-
- job: prod
316-
dependsOn: test
317-
variables:
318-
connectionString: <prod-stage connection string>
319-
steps:
320-
- task: AzureRmWebAppDeployment@4
321-
inputs:
322-
azureSubscription: '<Prod stage Azure service connection>'
323-
WebAppName: '<name of prod stage web app>'
324-
enableXmlVariableSubstitution: true
325-
```
326-
327-
# [Classic](#tab/classic/)
328-
329-
To change `connectionString` by using variable substitution:
330-
331-
1. Create a release pipeline with two stages.
332-
1. Link the artifact of the release to the build that produces the web package.
333-
1. Define `connectionString` as a variable in each of the stages. Set the appropriate value.
334-
1. Select the **XML variable substitution** option under **File Transforms and Variable Substitution Options** for the **Azure App Service Deploy** task.
335-
336-
---
337-
338293
## Example: Deploy conditionally
339294

340295
# [YAML](#tab/yaml/)
@@ -428,7 +383,6 @@ The Azure Web App task (`AzureWebApp`) is the simplest way to deploy to an Azure
428383

429384
The [Azure App Service Deploy task (`AzureRmWebAppDeployment`)](/azure/devops/pipelines/tasks/deploy/azure-rm-web-app-deployment) can handle more custom scenarios, such as:
430385

431-
- [Modify configuration settings](#example-make-variable-substitutions) inside web packages and XML parameters files.
432386
- [Deploy with Web Deploy](#example-deploy-using-web-deploy), if you're used to the IIS deployment process.
433387
- [Deploy to virtual applications](#example-deploy-to-a-virtual-application).
434388
- Deploy to other app types, like Container apps, Function apps, WebJobs, or API and Mobile apps.

articles/azure-cache-for-redis/.openpublishing.redirection.redis-cache.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,11 +254,16 @@
254254
"source_path_from_root": "/articles/redis-cache/scripts/delete-cache.md",
255255
"redirect_url": "/azure/azure-cache-for-redis/scripts/create-manage-cache",
256256
"redirect_document_id": false
257-
},
257+
},
258258
{
259259
"source_path_from_root": "/articles/redis-cache/scripts/show-cache.md",
260260
"redirect_url": "/azure/azure-cache-for-redis/scripts/create-manage-cache",
261261
"redirect_document_id": false
262+
},
263+
{
264+
"source_path_from_root": "/articles/azure-cache-for-redis/managed-redis/managed-redis-configure-role-based-access-control.md",
265+
"redirect_url": "/azure/azure-cache-for-redis/managed-redis/managed-redis-entra-for-authentication",
266+
"redirect_document_id": false
262267
}
263268
]
264269
}

articles/azure-cache-for-redis/TOC.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,6 @@
136136
items:
137137
- name: Microsoft Entra ID for authentication
138138
href: managed-redis/managed-redis-entra-for-authentication.md
139-
- name: Role-based access control
140-
href: managed-redis/managed-redis-configure-role-based-access-control.md
141139

142140
- name: Security and networking
143141
items:

0 commit comments

Comments
 (0)