You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: articles/app-service/app-service-web-configure-tls-mutual-auth.md
+8-8Lines changed: 8 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -35,7 +35,7 @@ When you enable client certificates for your app, you should select your choice
35
35
To set up your app to require client certificates in the Azure portal:
36
36
37
37
1. Go to your app management page.
38
-
1. On the resource menu, select **Configuration** > **General Settings**.
38
+
1. On the left menu, select **Configuration** > **General Settings**.
39
39
1. For **Client certificate mode**, select your choice.
40
40
1. Select **Save**.
41
41
@@ -102,15 +102,15 @@ When you enable mutual auth for your application, all paths under the root of yo
102
102
> [!NOTE]
103
103
> Using any client certificate exclusion path triggers TLS renegotiation for incoming requests to the app.
104
104
105
-
1. On the resource menu of your app's management pane, select **Configuration** > **General Settings**.
105
+
1. On the left menu of your app's management pane, select **Configuration** > **General Settings**.
106
106
107
107
1. Next to **Certificate exclusion paths**, select the edit icon.
108
108
109
-
1. Select **New path**, specify a path, or a list of paths separated by `,` or `;`, and select **OK**.
109
+
1. Select **New path**, specify a path or a list of paths separated by `,` or `;`, and then select **OK**.
110
110
111
111
1. Select **Save**.
112
112
113
-
In the following screenshot, any path for your app that starts with `/public` doesn't request a client certificate. Path matching is case-insensitive.
113
+
In the following screenshot, any path for your app that starts with `/public` doesn't request a client certificate. Path matching isn't case specific.
114
114
115
115
![Certificate Exclusion Paths][exclusion-paths]
116
116
@@ -141,13 +141,13 @@ To address the 100-KB limit, consider these alternative solutions:
141
141
1. Send a HEAD request before the PUT/POST request. The HEAD request handles the client certificate.
142
142
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.
143
143
144
-
## Access client certificate
144
+
## Access the client certificate
145
145
146
-
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.
146
+
In App Service, TLS termination of the request happens at the front-end 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 forward it to your app. Your app code is responsible for validating the client certificate.
147
147
148
148
For ASP.NET, the client certificate is available through the `HttpRequest.ClientCertificate` property.
149
149
150
-
For other application stacks (Node.js, PHP, etc.), the client cert is available in your app through a base64-encoded value in the `X-ARR-ClientCert` request header.
150
+
For other application stacks (Node.js, PHP), the client cert is available in your app through a base64-encoded value in the `X-ARR-ClientCert` request header.
151
151
152
152
## ASP.NET Core sample
153
153
@@ -387,7 +387,7 @@ export class AuthorizationHandler {
387
387
388
388
## Java sample
389
389
390
-
The following Java class encodes the certificate from `X-ARR-ClientCert` to an `X509Certificate` instance. `certificateIsValid()` validates that the certificate's thumbprint matches the one given in the constructor and that certificate isn't expired.
390
+
The following Java class encodes the certificate from `X-ARR-ClientCert` to an `X509Certificate` instance. `certificateIsValid()` validates that the certificate's thumbprint matches the one given in the constructor and that the certificate isn't expired.
Copy file name to clipboardExpand all lines: articles/app-service/configure-authentication-oauth-tokens.md
+5-4Lines changed: 5 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,15 +14,16 @@ This article shows you how to work with OAuth tokens when you use the built-in [
14
14
15
15
## Retrieve tokens in app code
16
16
17
-
From your server code, the provider-specific tokens are injected into the request header so that you can easily access them. The following table shows possible token header names:
17
+
From your server code, the provider-specific tokens are injected into the request header so that you can easily access them.
18
+
19
+
The following table lists possible token header names:
18
20
19
21
| Provider | Header names |
20
22
|-|-|
21
23
| Microsoft Entra |`X-MS-TOKEN-AAD-ID-TOKEN` <br/> `X-MS-TOKEN-AAD-ACCESS-TOKEN` <br/> `X-MS-TOKEN-AAD-EXPIRES-ON` <br/> `X-MS-TOKEN-AAD-REFRESH-TOKEN`|
| Google |`X-MS-TOKEN-GOOGLE-ID-TOKEN` <br/> `X-MS-TOKEN-GOOGLE-ACCESS-TOKEN` <br/> `X-MS-TOKEN-GOOGLE-EXPIRES-ON` <br/> `X-MS-TOKEN-GOOGLE-REFRESH-TOKEN`|
24
26
| X |`X-MS-TOKEN-TWITTER-ACCESS-TOKEN` <br/> `X-MS-TOKEN-TWITTER-ACCESS-TOKEN-SECRET`|
25
-
|||
26
27
27
28
> [!NOTE]
28
29
> Different language frameworks might present these headers to the app code in different formats, such as in lowercase or by using title case.
@@ -58,7 +59,7 @@ When your provider's access token (not the [session token](#extend-session-token
58
59
1. Select **Put**.
59
60
60
61
> [!NOTE]
61
-
> The scope that gives you a refresh token is [offline_access](../active-directory/develop/v2-permissions-and-consent.md#offline_access). See how it's used in [Tutorial: Authenticate and authorize users end-to-end in Azure App Service](tutorial-auth-aad.md). The other scopes are requested by default by App Service already. For information on these default scopes, see [OpenID Connect Scopes](../active-directory/develop/v2-permissions-and-consent.md#openid-connect-scopes).
62
+
> The scope that gives you a refresh token is [offline_access](../active-directory/develop/v2-permissions-and-consent.md#offline_access). See how it's used in [Tutorial: Authenticate and authorize users end-to-end in Azure App Service](tutorial-auth-aad.md). The other scopes are already requested by App Service by default. For information on these default scopes, see [OpenID Connect Scopes](../active-directory/develop/v2-permissions-and-consent.md#openid-connect-scopes).
62
63
63
64
After your provider is configured, you can [find the refresh token and the expiration time for the access token](#retrieve-tokens-in-app-code) in the token store.
> The grace period only applies to the App Service authenticated session, not the tokens from the identity providers. No grace period exists for expired provider tokens.
94
+
> The grace period only applies to the App Service authenticated session, not to the tokens from the identity providers. No grace period exists for expired provider tokens.
|`X-MS-CLIENT-PRINCIPAL`| A Base64-encoded JSON representation of available claims. For more information, see [Decode the client principal header](#decode-the-client-principal-header). |
23
+
|`X-MS-CLIENT-PRINCIPAL`| A base64-encoded JSON representation of available claims. For more information, see [Decode the client principal header](#decode-the-client-principal-header). |
24
24
|`X-MS-CLIENT-PRINCIPAL-ID`| An identifier for the caller, which the identity provider sets. |
25
25
|`X-MS-CLIENT-PRINCIPAL-NAME`| A human-readable name for the caller, set by the identity provider, such as an email address or a user principal name. |
26
26
|`X-MS-CLIENT-PRINCIPAL-IDP`| The name of the identity provider that App Service authentication uses. |
@@ -34,9 +34,9 @@ Code that is written in any language or framework can get the information that i
34
34
35
35
### Decode the client principal header
36
36
37
-
`X-MS-CLIENT-PRINCIPAL` contains the full set of available claims as Base64-encoded JSON. These claims go through a default claims-mapping process, so some might have different names than you would see if you processed the token directly.
37
+
`X-MS-CLIENT-PRINCIPAL` contains the full set of available claims as base64-encoded JSON. These claims go through a default claims-mapping process, so some might have different names than you would see if you processed the token directly.
38
38
39
-
Here's the decoded payload is structured:
39
+
Here's how the decoded payload is structured:
40
40
41
41
```json
42
42
{
@@ -127,7 +127,7 @@ public static class ClaimsPrincipalParser
127
127
128
128
### Framework-specific alternatives
129
129
130
-
For ASP.NET 4.6 apps, App Service populates [ClaimsPrincipal.Current](/dotnet/api/system.security.claims.claimsprincipal.current) with the authenticated user's claims, so you can follow the standard .NET code pattern, including the `[Authorize]` attribute. Similarly, for PHP apps, App Service populates the `_SERVER['REMOTE_USER']` variable. For Java apps, the claims are [accessible from the Tomcat servlet](configure-language-java-security.md#authenticate-users-easy-auth).
130
+
For ASP.NET 4.6 apps, App Service populates [ClaimsPrincipal.Current](/dotnet/api/system.security.claims.claimsprincipal.current) with the authenticated user's claims. You can follow the standard .NET code pattern, including the `[Authorize]` attribute. Similarly, for PHP apps, App Service populates the `_SERVER['REMOTE_USER']` variable. For Java apps, the claims are [accessible from the Tomcat servlet](configure-language-java-security.md#authenticate-users-easy-auth).
131
131
132
132
For [Azure Functions](../azure-functions/functions-overview.md), `ClaimsPrincipal.Current` isn't populated for .NET code, but you can still find the user claims in the request headers, or get the `ClaimsPrincipal` object from the request context or even through a binding parameter. For more information, see [Work with client identities in Azure Functions](../azure-functions/functions-bindings-http-webhook-trigger.md#working-with-client-identities).
# Deploy to Azure App Service by using Git locally
12
12
13
13
This article shows you how to deploy your app to [Azure App Service](overview.md) from a Git repository on your local computer.
14
14
15
15
> [!NOTE]
16
-
> This deployment method requires [SCM basic authentication](configure-basic-auth-disable.md), which is less secure than [other deployment methods](deploy-authentication-types.md). When local Git deployment doesn't work, you can't configure local Git deployment in the app Deployment Center.
16
+
> This deployment method requires [Source Control Manager (SCM) basic authentication](configure-basic-auth-disable.md), which is less secure than [other deployment methods](deploy-authentication-types.md). If local Git deployment doesn't work, you can't configure local Git deployment in the app Deployment Center.
17
17
18
18
## Prerequisites
19
19
@@ -37,7 +37,7 @@ Learn how to [configure deployment credentials for Azure App Service](deploy-con
37
37
38
38
## Create a Git-enabled app
39
39
40
-
If you already have an App Service app and you want to configure a local Git deployment for it, see [Configure an existing app](#configure-an-existing-app) instead.
40
+
If you already have an App Service app and you want to configure a local Git deployment for the app, see [Configure an existing app](#configure-an-existing-app) instead.
Copy file name to clipboardExpand all lines: articles/app-service/language-support-policy.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,7 +14,7 @@ This article describes the language runtime support policy for updating existing
14
14
15
15
## Updates to existing stacks
16
16
17
-
App Service updates existing stacks from each community after they become available. App Service updates major versions of stacks but can't guarantee any specific minor versions or patch versions. The platform controls minor and patch versions. For example, App Service updates Node 18 but doesn't guarantee a specific Node 18.x.x version. If you need a specific minor or patch version, you can use a [custom container](quickstart-custom-container.md).
17
+
App Service updates existing stacks after they become available from each community. App Service updates major versions of stacks but can't guarantee any specific minor versions or patch versions. The platform controls minor and patch versions. For example, App Service updates Node 18 but doesn't guarantee a specific Node 18.x.x version. If you need a specific minor or patch version, use a [custom container](quickstart-custom-container.md).
18
18
19
19
## Retirements
20
20
@@ -127,7 +127,7 @@ Microsoft and Adoptium builds of OpenJDK are provided and supported on App Servi
127
127
128
128
If you're [pinned](configure-language-java-deploy-run.md#choosing-a-java-runtime-version) to an earlier minor version of Java, your app might be using the deprecated [Azul Zulu for Azure](https://devblogs.microsoft.com/java/end-of-updates-support-and-availability-of-zulu-for-azure/) binaries that are provided through [Azul Systems](https://www.azul.com/). You can keep using these binaries for your app, but any security patches or improvements are available only in more recent versions of OpenJDK. In this scenario, we recommend that you periodically update your web apps to a more recent version of Java.
129
129
130
-
Major version updates are provided through new runtime options in Azure App Service. Update to these later versions of Java by configuring your App Service deployment. You are responsible for testing and ensuring the major update meets your needs.
130
+
Major version updates are provided through new runtime options in Azure App Service. Update to these later versions of Java by configuring your App Service deployment. You're responsible for testing and ensuring the major update meets your needs.
131
131
132
132
Supported JDKs are automatically patched on a quarterly basis in January, April, July, and October of each year. For more information, see [Java on Azure](/azure/developer/java/fundamentals/java-support-on-azure).
0 commit comments