Skip to content

Commit 1e68614

Browse files
authored
Merge pull request #300602 from jasminemehndir/release-asr-pv2-pup
Dirty PR
2 parents 7caf844 + fdb3f00 commit 1e68614

File tree

291 files changed

+2645
-1380
lines changed

Some content is hidden

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

291 files changed

+2645
-1380
lines changed

articles/active-directory-b2c/authorization-code-flow.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ A successful token response looks like this:
233233
| access_token |The signed JWT that you requested. |
234234
| scope |The scopes that the token is valid for. You also can use the scopes to cache tokens for later use. |
235235
| expires_in |The length of time that the token is valid (in seconds). |
236-
| refresh_token |An OAuth 2.0 refresh token. The app can use this token to acquire additional tokens after the current token expires. Refresh tokens are long-lived, and can be used to retain access to resources for extended periods of time. For more information, see the [Azure AD B2C token reference](tokens-overview.md). |
236+
| refresh_token |An OAuth 2.0 refresh token. The app can use this token to acquire additional tokens after the current token expires. Refresh tokens are long-lived and can be used to retain access to resources for extended periods of time. For more information, see the [Azure AD B2C token reference](tokens-overview.md). |
237237

238238
Error responses look like this:
239239

articles/active-directory-b2c/custom-policies-series-call-rest-api.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ to:
216216
```xml
217217
<ValidationTechnicalProfile ReferenceId="ValidateAccessCodeViaHttp"/>
218218
```
219-
At this point, the Technical Profile with `Id` *CheckAccessCodeViaClaimsTransformationChecker* isn't needed, and can be removed.
219+
At this point, the Technical Profile with `Id` *CheckAccessCodeViaClaimsTransformationChecker* isn't needed and can be removed.
220220

221221

222222
## Step 3 - Upload custom policy file

articles/api-management/api-management-howto-mutual-certificates.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ After the certificate is uploaded, it shows in the **Certificates** window. If y
6969
> This change is effective immediately, and calls to operations of that API will use the certificate to authenticate on the backend server.
7070
7171
> [!TIP]
72-
> When a certificate is specified for gateway authentication for the backend service of an API, it becomes part of the policy for that API, and can be viewed in the policy editor.
72+
> When a certificate is specified for gateway authentication for the backend service of an API, it becomes part of the policy for that API and can be viewed in the policy editor.
7373
7474
## Disable certificate chain validation for self-signed certificates
7575

articles/api-management/api-management-key-concepts-experiment.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ Operations in API Management are highly configurable, with control over URL mapp
135135

136136
### Products
137137

138-
Products are how APIs are surfaced to developers. Products in API Management have one or more APIs, and can be *open* or *protected*. Protected products require a subscription key, while open products can be consumed freely.
138+
Products are how APIs are surfaced to developers. Products in API Management have one or more APIs and can be *open* or *protected*. Protected products require a subscription key, while open products can be consumed freely.
139139

140140
When a product is ready for use by developers, it can be published. Once published, it can be viewed or subscribed to by developers. Subscription approval is configured at the product level and can either require an administrator's approval or be automatic.
141141

articles/api-management/api-management-key-concepts.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ Operations in API Management are highly configurable, with control over URL mapp
163163

164164
### Products
165165

166-
Products are how APIs are surfaced to API consumers such as app developers. Products in API Management have one or more APIs, and can be *open* or *protected*. Protected products require a subscription key, while open products can be consumed freely.
166+
Products are how APIs are surfaced to API consumers such as app developers. Products in API Management have one or more APIs and can be *open* or *protected*. Protected products require a subscription key, while open products can be consumed freely.
167167

168168
When a product is ready for use by consumers, it can be published. Once published, it can be viewed or subscribed to by users through the developer portal. Subscription approval is configured at the product level and can either require an administrator's approval or be automatic.
169169

articles/api-management/backends.md

Lines changed: 74 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ services: api-management
55
author: dlepow
66
ms.service: azure-api-management
77
ms.topic: concept-article
8-
ms.date: 04/01/2025
8+
ms.date: 05/20/2025
99
ms.author: danlep
1010
ms.custom:
1111
- build-2024
@@ -239,16 +239,63 @@ Use a backend pool for scenarios such as the following:
239239

240240
API Management supports the following load balancing options for backend pools:
241241

242-
* **Round-robin**: By default, requests are distributed evenly across the backends in the pool.
243-
* **Weighted**: Weights are assigned to the backends in the pool, and requests are distributed across the backends based on the relative weight assigned to each backend. Use this option for scenarios such as conducting a blue-green deployment.
244-
* **Priority-based**: Backends are organized in priority groups, and requests are sent to the backends in order of the priority groups. Within a priority group, requests are distributed either evenly across the backends, or (if assigned) according to the relative weight assigned to each backend.
245-
242+
| Load balancing option | Description |
243+
|------------------|-------------|
244+
| **Round-robin** | Requests are distributed evenly across the backends in the pool by default. |
245+
| **Weighted** | Weights are assigned to the backends in the pool, and requests are distributed based on the relative weight of each backend. Useful for scenarios such as blue-green deployments. |
246+
| **Priority-based** | Backends are organized into priority groups. Requests are sent to higher priority groups first; within a group, requests are distributed evenly or according to assigned weights. |
247+
246248
> [!NOTE]
247249
> Backends in lower priority groups will only be used when all backends in higher priority groups are unavailable because circuit breaker rules are tripped.
248250
251+
### Session awareness
252+
253+
With any of the preceding load balancing options, optionally enable **session awareness** (session affinity) to ensure that all requests from a specific user during a session are directed to the same backend in the pool. API Management sets a session ID cookie to maintain session state. This option is useful, for example, in scenarios with backends such as AI chat assistants or other conversational agents to route requests from the same session to the same endpoint.
254+
255+
> [!NOTE]
256+
> Session awareness in load-balanced pools is being released first to the **AI Gateway Early** [update group](configure-service-update-settings.md).
257+
258+
#### Manage cookies for session awareness
259+
260+
When using session awareness, the client must handle cookies appropriately. The client needs to store the `Set-Cookie` header value and send it with subsequent requests to maintain session state.
261+
262+
You can use API Management policies to help set cookies for session awareness. For example, for the case of the Assistants API (a feature of [Azure OpenAI in Azure AI Foundry Models](/azure/ai-services/openai/concepts/models)), the client needs to keep the session ID, extract the thread ID from the body, and keep the pair and send the right cookie for each call. Moreover, the client needs to know when to send a cookie or when not to send a cookie header. These requirements can be handled appropriately by defining the following example policies:
263+
264+
265+
```xml
266+
<policies>
267+
  <inbound>
268+
    <base />
269+
    <set-backend-service backend-id="APIMBackend" />
270+
  </inbound>
271+
  <backend>
272+
    <base />
273+
  </backend>
274+
  <outbound>
275+
    <base />
276+
    <set-variable name="gwSetCookie" value="@{
277+
      var payload = context.Response.Body.As<JObject>();
278+
      var threadId = payload["id"];
279+
      var gwSetCookieHeaderValue = context.Request.Headers.GetValueOrDefault("SetCookie", string.Empty);
280+
      if(!string.IsNullOrEmpty(gwSetCookieHeaderValue))
281+
      {
282+
        gwSetCookieHeaderValue = gwSetCookieHeaderValue + $";Path=/threads/{threadId};";
283+
      }
284+
      return gwSetCookieHeaderValue;
285+
    }" />
286+
    <set-header name="Set-Cookie" exists-action="override">
287+
      <value>Cookie=gwSetCookieHeaderValue</value>
288+
    </set-header>
289+
  </outbound>
290+
  <on-error>
291+
    <base />
292+
  </on-error>
293+
</policies>
294+
```
295+
249296
### Example
250297

251-
Use the portal, API Management [REST API](/rest/api/apimanagement/backend), or a Bicep or ARM template to configure a backend pool. In the following example, the backend *myBackendPool* in the API Management instance *myAPIM* is configured with a backend pool. Example backends in the pool are named *backend-1* and *backend-2*. Both backends are in the highest priority group; within the group, *backend-1* has a greater weight than *backend-2* .
298+
Use the portal, API Management [REST API](/rest/api/apimanagement/backend), or a Bicep or ARM template to configure a backend pool. In the following example, the backend *myBackendPool* in the API Management instance *myAPIM* is configured with a backend pool. Example backends in the pool are named *backend-1* and *backend-2*. Both backends are in the highest priority group; within the group, *backend-1* has a greater weight than *backend-2*.
252299

253300

254301
#### [Portal](#tab/portal)
@@ -266,7 +313,9 @@ Use the portal, API Management [REST API](/rest/api/apimanagement/backend), or a
266313

267314
#### [Bicep](#tab/bicep)
268315

269-
Include a snippet similar to the following in your Bicep file for a load-balanced pool. Set the `type` property of the backend entity to `Pool` and specify the backends in the pool:
316+
Include a snippet similar to the following in your Bicep file for a load-balanced pool. Set the `type` property of the backend entity to `Pool` and specify the backends in the pool.
317+
318+
This example includes an optional `sessionAffinity` pool configuration for session awareness. It sets a cookie so that requests from a user session are routed to a specific backend in the pool.
270319

271320
```bicep
272321
resource symbolicname 'Microsoft.ApiManagement/service/backends@2023-09-01-preview' = {
@@ -286,14 +335,23 @@ resource symbolicname 'Microsoft.ApiManagement/service/backends@2023-09-01-previ
286335
priority: 1
287336
weight: 1
288337
}
289-
]
338+
],
339+
      "sessionAffinity": {
340+
        "sessionId": {
341+
          "source": "Cookie",
342+
          "name": "SessionId"
343+
        }
344+
      }
290345
}
291346
}
292347
}
293348
```
294349
#### [ARM](#tab/arm)
295350

296-
Include a JSON snippet similar to the following in your ARM template for a load-balanced pool. Set the `type` property of the backend resource to `Pool` and specify the backends in the pool:
351+
Include a JSON snippet similar to the following in your ARM template for a load-balanced pool. Set the `type` property of the backend resource to `Pool` and specify the backends in the pool.
352+
353+
This example includes an optional `sessionAffinity` pool configuration for session awareness. It sets a cookie so that requests from a user session are routed to a specific backend in the pool.
354+
297355

298356
```json
299357
{
@@ -315,7 +373,13 @@ Include a JSON snippet similar to the following in your ARM template for a load-
315373
"priority": "1",
316374
          "weight": "1"
317375
}
318-
]
376+
],
377+
      "sessionAffinity": {
378+
        "sessionId": {
379+
          "source": "Cookie",
380+
          "name": "SessionId"
381+
        }
382+
      }
319383
}
320384
}
321385
}

articles/api-management/breaking-changes/overview.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ author: dlepow
66

77
ms.service: azure-api-management
88
ms.topic: reference
9-
ms.date: 07/15/2024
9+
ms.date: 05/30/2025
1010
ms.author: danlep
1111
---
1212

@@ -30,7 +30,7 @@ The following table lists all the upcoming breaking changes and feature retireme
3030
| [Git repository retirement][git2025] | March 15, 2025 |
3131
| [Direct management API retirement][mgmtapi2025] | March 15, 2025 |
3232
| [Workspaces preview breaking changes, part 2][workspaces2025march] | March 31, 2025 |
33-
| [ADAL-based Microsoft Entra ID or Azure AD B2C identity provider retirement][msal2025] | September 30, 2025 |
33+
| [ADAL-based Microsoft Entra ID identity provider retirement][msal2025] | September 30, 2025 |
3434
| [CAPTCHA endpoint update][captcha2025] | September 30, 2025 |
3535
| [Built-in analytics dashboard retirement][analytics2027] | March 15, 2027 |
3636

articles/api-management/front-door-api-management.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ author: dlepow
77

88
ms.service: azure-api-management
99
ms.topic: how-to
10-
ms.date: 08/06/2024
10+
ms.date: 05/30/2025
1111
ms.author: danlep
1212
---
1313
# Configure Front Door Standard/Premium in front of Azure API Management

articles/api-management/mitigate-owasp-api-threats.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ description: Learn how to protect against common API-based vulnerabilities, as i
44
author: mikebudzynski
55
ms.service: azure-api-management
66
ms.topic: concept-article
7-
ms.date: 10/29/2024
7+
ms.date: 05/30/2025
88
ms.author: mibudz
99
---
1010

@@ -195,7 +195,7 @@ More information about this threat: [API8:2023 Security misconfiguration](https
195195
- Where possible, use credential manager or managed identity to authenticate against backend services.
196196
- When using the [developer portal](/azure/api-management/api-management-howto-developer-portal):
197197
- If you choose to [self-host](/azure/api-management/developer-portal-self-host) the developer portal, ensure there's a process in place to periodically update the self-hosted portal to the latest version. Updates for the default managed version are automatic.
198-
- Use [Microsoft Entra ID](/azure/api-management/api-management-howto-aad) or [Azure Active Directory B2C](/azure/api-management/api-management-howto-aad-b2c) for user sign-up and sign-in. Disable the default username and password authentication, which is less secure.
198+
- Use [Microsoft Entra ID](/azure/api-management/api-management-howto-aad) or [Microsoft Entra External ID](/entra/external-id/customers/overview-customers-ciam) for user sign-up and sign-in. Disable the default username and password authentication, which is less secure.
199199
- Assign [user groups](/azure/api-management/api-management-howto-create-groups#-associate-a-group-with-a-product) to products, to control the visibility of APIs in the portal.
200200
- Use [Azure Policy](/azure/api-management/security-controls-policy) to enforce API Management resource-level configuration and role-based access control (RBAC) permissions to control resource access. Grant minimum required privileges to every user.
201201
- Use a [DevOps process](/azure/api-management/devops-api-development-templates) and infrastructure-as-code approach outside of a development environment to ensure consistency of API Management content and configuration changes and to minimize human errors.

articles/app-service/tutorial-connect-msi-azure-database.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ Connectivity to the Azure Database for PostgreSQL in your code follows the `Defa
218218
219219
## 4. Set up your dev environment
220220
221-
This sample code uses `DefaultAzureCredential` to get a useable token for your Azure database from Microsoft Entra ID and then adds it to the database connection. While you can customize `DefaultAzureCredential`, it's already versatile by default. It gets a token from the signed-in Microsoft Entra user or from a managed identity, depending on whether you run it locally in your development environment or in App Service.
221+
This sample code uses `DefaultAzureCredential` to get a usable token for your Azure database from Microsoft Entra ID and then adds it to the database connection. While you can customize `DefaultAzureCredential`, it's already versatile by default. It gets a token from the signed-in Microsoft Entra user or from a managed identity, depending on whether you run it locally in your development environment or in App Service.
222222
223223
Without any further changes, your code is ready to be run in Azure. To debug your code locally, however, your develop environment needs a signed-in Microsoft Entra user. In this step, you configure your environment of choice by signing in with your Microsoft Entra user.
224224

0 commit comments

Comments
 (0)