Skip to content

Commit 1c257ad

Browse files
authored
Merge pull request #295063 from MicrosoftDocs/main
2/20/2025 PM Publish
2 parents 44f92f5 + d3ec254 commit 1c257ad

File tree

709 files changed

+1782
-1437
lines changed

Some content is hidden

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

709 files changed

+1782
-1437
lines changed
8.46 KB
Loading

articles/api-management/validate-client-certificate-policy.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ For more information about custom CA certificates and certificate authorities, s
6464

6565
| Element | Description | Required |
6666
| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
67-
| identities | Add this element to specify one or more `identity` elements with defined claims on the client certificate. | No |
67+
| identities | Add this element to specify up to 10 `identity` subelements with defined claims on the client certificate. | No |
6868

6969
## identity attributes
7070

@@ -73,7 +73,7 @@ For more information about custom CA certificates and certificate authorities, s
7373
| thumbprint | Certificate thumbprint. | No | N/A |
7474
| serial-number | Certificate serial number. | No | N/A |
7575
| common-name | Certificate common name (part of Subject string). | No | N/A |
76-
| subject | Subject string. Must follow format of Distinguished Name, which consists of comma-separated name attributes, for example, *"CN=MyName, OU=MyOrgUnit, C=US..."*.| No | N/A |
76+
| subject | Subject string. Must follow format of Distinguished Name, which consists of comma-separated name attributes, for example, *"CN=MyName, OU=MyOrgUnit, C=US..."*.| No | N/A |
7777
| dns-name | Value of dnsName entry inside Subject Alternative Name claim. | No | N/A |
7878
| issuer-subject | Issuer's subject. Must follow format of Distinguished Name, which consists of comma-separated name attributes, for example, *"CN=MyName, OU=MyOrgUnit, C=US..."*. | No | N/A |
7979
| issuer-thumbprint | Issuer thumbprint. | No | N/A |

articles/api-management/visual-studio-code-tutorial.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ ms.service: azure-api-management
55
author: dlepow
66
ms.author: danlep
77
ms.topic: tutorial
8-
ms.date: 11/19/2024
8+
ms.date: 02/20/2025
99
ms.custom: devdivchpfy22
1010
---
1111

@@ -113,7 +113,7 @@ You need a subscription key for your API Management instance to test the importe
113113
1. In the Explorer pane, expand the **Operations** node under the *petstore* API that you imported.
114114
1. Select an operation such as *[GET] Find pet by ID*, and then right-click the operation and select **Test Operation**.
115115
1. In the editor window, substitute `5` for the `petId` parameter in the request URL.
116-
1. In the editor window, next to **Ocp-Apim-Subscription-Key**, replace `{{SubscriptionKey}}` with the subscription key that you copied.
116+
1. In the editor window, next to **Ocp-Apim-Subscription-Key**, paste the subscription key that you copied.
117117
1. Select **Send request**.
118118

119119
:::image type="content" source="media/visual-studio-code-tutorial/test-api.png" alt-text="Screenshot of sending API request from Visual Studio Code.":::

articles/api-management/websocket-api.md

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ ms.service: azure-api-management
55
author: dlepow
66
ms.author: danlep
77
ms.topic: how-to
8-
ms.date: 10/27/2022
8+
ms.date: 02/18/2025
99
ms.custom: template-how-to
1010
---
1111

@@ -17,7 +17,7 @@ With API Management’s WebSocket API solution, API publishers can quickly add a
1717

1818
[!INCLUDE [api-management-workspace-availability](../../includes/api-management-workspace-availability.md)]
1919

20-
You can secure WebSocket APIs by applying existing access control policies, like [JWT validation](validate-jwt-policy.md). You can also test WebSocket APIs using the API test consoles in both Azure portal and developer portal. Building on existing observability capabilities, API Management provides metrics and logs for monitoring and troubleshooting WebSocket APIs.
20+
WebSocket APIs can be secured by applying API Management's [access control policies](api-management-policies.md#authentication-and-authorization) to the initial handshake operation. You can also test WebSocket APIs using the API test consoles in both Azure portal and developer portal. Building on existing observability capabilities, API Management provides metrics and logs for monitoring and troubleshooting WebSocket APIs.
2121

2222
In this article, you will:
2323
> [!div class="checklist"]
@@ -39,25 +39,25 @@ API Management supports WebSocket passthrough.
3939

4040
:::image type="content" source="./media/websocket-api/websocket-api-passthrough.png" alt-text="Visual illustration of WebSocket passthrough flow":::
4141

42-
During the WebSocket passthrough the client application establishes a WebSocket connection with the API Management Gateway, which then establishes a connection with the corresponding backend services. API Management then proxies WebSocket client-server messages.
42+
During the WebSocket passthrough, the client application establishes a WebSocket connection with the API Management gateway, which then establishes a connection with the corresponding backend services. API Management then proxies WebSocket client-server messages.
4343

44-
1. The client application sends a WebSocket handshake request to APIM gateway, invoking onHandshake operation.
45-
1. APIM gateway sends WebSocket handshake request to the corresponding backend service.
44+
1. The client application sends a WebSocket handshake request to the gateway, invoking the onHandshake operation
45+
1. The API Management gateway applies configured policies and sends WebSocket handshake requests to the corresponding backend service.
4646
1. The backend service upgrades a connection to WebSocket.
47-
1. APIM gateway upgrades the corresponding connection to WebSocket.
48-
1. Once the connection pair is established, APIM will broker messages back and forth between the client application and backend service.
49-
1. The client application sends message to APIM gateway.
50-
1. APIM gateway forwards the message to the backend service.
51-
1. The backend service sends a message to APIM gateway.
52-
1. APIM gateway forwards the message to the client application.
53-
1. When either side disconnects, APIM terminates the corresponding connection.
47+
1. The gateway upgrades the corresponding connection to WebSocket.
48+
1. After the connection pair is established, API Management brokers messages back and forth between the client application and backend service.
49+
1. The client application sends a message to the gateway.
50+
1. The gateway forwards the message to the backend service.
51+
1. The backend service sends a message to the gateway.
52+
1. The gateway forwards the message to the client application.
53+
1. When either side disconnects, API Management terminates the corresponding connection.
5454

5555
> [!NOTE]
5656
> The client-side and backend-side connections consist of one-to-one mapping.
5757
5858
## onHandshake operation
5959

60-
Per the [WebSocket protocol](https://tools.ietf.org/html/rfc6455), when a client application tries to establish a WebSocket connection with a backend service, it will first send an [opening handshake request](https://tools.ietf.org/html/rfc6455#page-6). Each WebSocket API in API Management has an onHandshake operation. onHandshake is an immutable, unremovable, automatically created system operation. The onHandshake operation enables API publishers to intercept these handshake requests and apply API Management policies to them.
60+
Per the [WebSocket protocol](https://tools.ietf.org/html/rfc6455), when a client application tries to establish a WebSocket connection with a backend service, it first sends an [opening handshake request](https://tools.ietf.org/html/rfc6455#page-6). Each WebSocket API in API Management has an onHandshake operation. onHandshake is an immutable, unremovable, automatically created system operation. The onHandshake operation enables API publishers to intercept these handshake requests and apply API Management policies to them.
6161

6262
:::image type="content" source="./media/websocket-api/onhandshake-screen.png" alt-text="onHandshake screen example":::
6363

@@ -72,11 +72,11 @@ Per the [WebSocket protocol](https://tools.ietf.org/html/rfc6455), when a client
7272

7373
| Field | Description |
7474
|----------------|-------|
75-
| Display name | The name by which your WebSocket API will be displayed. |
75+
| Display name | The name by which your WebSocket API is displayed. |
7676
| Name | Raw name of the WebSocket API. Automatically populates as you type the display name. |
7777
| WebSocket URL | The base URL with your websocket name. For example: *ws://example.com/your-socket-name* |
7878
| URL scheme | Accept the default |
79-
| API URL suffix| Add a URL suffix to identify this specific API in this API Management instance. It has to be unique in this APIM instance. |
79+
| API URL suffix| Add a URL suffix to identify this specific API in this API Management instance. It has to be unique in this API Management instance. |
8080
| Products | Associate your WebSocket API with a product to publish it. |
8181
| Gateways | Associate your WebSocket API with existing gateways. |
8282

@@ -108,15 +108,15 @@ Use standard API Management and Azure Monitor features to [monitor](api-manageme
108108
* View API metrics in Azure Monitor
109109
* Optionally enable diagnostic settings to collect and view API Management gateway logs, which include WebSocket API operations
110110

111-
For example, the following screenshot shows recent WebSocket API responses with code `101` from the **ApiManagementGatewayLogs** table. These results indicate the successful switch of the requests from TCP to the WebSocket protocol.
111+
For example, the following screenshot shows recent WebSocket API responses with code `101` from the **ApiManagementGatewayLogs** table. These results indicate the successful switch of the requests from TCP to the WebSocket protocol.
112112

113113
:::image type="content" source="./media/websocket-api/query-gateway-logs.png" alt-text="Query logs for WebSocket API requests":::
114114

115115
## Limitations
116116

117-
Below are the current restrictions of WebSocket support in API Management:
117+
The following are the current restrictions of WebSocket support in API Management:
118118

119-
* WebSocket APIs are not supported yet in the Consumption tier.
119+
* WebSocket APIs aren't supported yet in the Consumption tier.
120120
* WebSocket APIs support the following valid buffer types for messages: Close, BinaryFragment, BinaryMessage, UTF8Fragment, and UTF8Message.
121121
* Currently, the [set-header](set-header-policy.md) policy doesn't support changing certain well-known headers, including `Host` headers, in onHandshake requests.
122122
* During the TLS handshake with a WebSocket backend, API Management validates that the server certificate is trusted and that its subject name matches the hostname. With HTTP APIs, API Management validates that the certificate is trusted but doesn’t validate that hostname and subject match.
@@ -125,7 +125,7 @@ For WebSocket connection limits, see [API Management limits](../azure-resource-m
125125

126126
### Unsupported policies
127127

128-
The following policies are not supported by and cannot be applied to the onHandshake operation:
128+
The following policies aren't supported by and can't be applied to the onHandshake operation:
129129
* Mock response
130130
* Get from cache
131131
* Store to cache
@@ -143,10 +143,10 @@ The following policies are not supported by and cannot be applied to the onHands
143143
* Validate status code
144144

145145
> [!NOTE]
146-
> If you applied the policies at higher scopes (i.e., global or product) and they were inherited by a WebSocket API through the policy, they will be skipped at runtime.
146+
> If you applied the policies at higher scopes (for example, global or product) and they're inherited by a WebSocket API through the policy, they are skipped at runtime.
147147
148148
[!INCLUDE [api-management-define-api-topics.md](../../includes/api-management-define-api-topics.md)]
149149

150-
## Next steps
150+
## Related content
151151
> [!div class="nextstepaction"]
152152
> [Transform and protect a published API](transform-api.md)

0 commit comments

Comments
 (0)