Skip to content

Commit 815444d

Browse files
authored
Merge pull request #292730 from MicrosoftDocs/main
1/7/2025 PM Publish
2 parents 6e59cae + ddce18b commit 815444d

File tree

167 files changed

+770
-538
lines changed

Some content is hidden

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

167 files changed

+770
-538
lines changed

.openpublishing.redirection.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4492,6 +4492,11 @@
44924492
"redirect_url": "/azure/virtual-network/tutorial-create-route-table",
44934493
"redirect_document_id": false
44944494
},
4495+
{
4496+
"source_path_from_root": "/articles/logic-apps/business-continuity-disaster-recovery-guidance.md",
4497+
"redirect_url": "/azure/logic-apps/multi-region-disaster-recovery",
4498+
"redirect_document_id": true
4499+
},
44954500
{
44964501
"source_path_from_root": "/articles/virtual-network/tutorial-connect-virtual-networks-portal.md",
44974502
"redirect_url": "/azure/virtual-network/tutorial-connect-virtual-networks",

articles/api-management/api-management-error-handling-policies.md

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,9 @@
22
title: Error handling in Azure API Management policies | Microsoft Docs
33
description: Learn how to respond to error conditions that may occur during the processing of requests in Azure API Management.
44
author: dlepow
5-
manager: erikre
6-
ms.assetid: 3c777964-02b2-4f55-8731-8c3bd3c0ae27
75
ms.service: azure-api-management
86
ms.topic: article
9-
ms.date: 01/10/2020
7+
ms.date: 01/06/2025
108
ms.author: danlep
119
---
1210

@@ -77,9 +75,9 @@ When an error occurs and control jumps to the `on-error` policy section, the err
7775
| `Source` | string | Names the element where the error occurred. Could be either policy or a built-in pipeline step name. | Yes |
7876
| `Reason` | string | Machine-friendly error code, which could be used in error handling. | No |
7977
| `Message` | string | Human-readable error description. | Yes |
80-
| `Scope` | string | Name of the scope where the error occurred and could be one of "global", "product", "api", or "operation" | No |
78+
| `Scope` | string | Name of the [scope](api-management-howto-policies.md#scopes) where the error occurred. | No |
8179
| `Section` | string | Section name where error occurred. Possible values: "inbound", "backend", "outbound", or "on-error". | No |
82-
| `Path` | string | Specifies nested policy, for example "choose[3]/when[2]". | No |
80+
| `Path` | string | Specifies nested policy hierarchy, for example "choose[3]\\when[2]". Multiple instances of a nested policy are indexed from 1. | No |
8381
| `PolicyId` | string | Value of the `id` attribute, if specified by the customer, on the policy where error occurred | No |
8482

8583
> [!TIP]
@@ -175,11 +173,4 @@ and sending an unauthorized request will result in the following response:
175173

176174
![Unauthorized error response](media/api-management-error-handling-policies/error-response.png)
177175

178-
## Next steps
179-
180-
For more information working with policies, see:
181-
182-
- [Policies in API Management](api-management-howto-policies.md)
183-
- [Transform APIs](transform-api.md)
184-
- [Policy Reference](./api-management-policies.md) for a full list of policy statements and their settings
185-
- [Policy samples](./policy-reference.md)
176+
[!INCLUDE [api-management-policy-ref-next-steps](../../includes/api-management-policy-ref-next-steps.md)]

articles/api-management/api-management-howto-aad-b2c.md

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
---
2-
title: Authorize developer accounts by using Azure Active Directory B2C
2+
title: Authorize access to API Management developer portal by using Azure Active Directory B2C
33
titleSuffix: Azure API Management
44
description: Learn how to authorize users of the developer portal in Azure API Management by using Azure Active Directory B2C
55
services: api-management
66
author: dlepow
77

88
ms.service: azure-api-management
99
ms.topic: how-to
10-
ms.date: 06/28/2023
10+
ms.date: 01/07/2025
1111
ms.author: danlep
1212
ms.custom: engagement-fy23
1313
---
@@ -31,18 +31,21 @@ For an overview of options to secure the developer portal, see [Secure access to
3131

3232
* An Azure Active Directory B2C tenant in which to create an application. For more information, see [Azure Active Directory B2C overview](../active-directory-b2c/overview.md).
3333
* An API Management instance. If you don't already have one, [create an Azure API Management instance](get-started-create-service-instance.md).
34+
* If you created your instance in a v2 tier, enable the developer portal. For more information, see [Tutorial: Access and customize the developer portal](api-management-howto-developer-portal-customize.md).
35+
3436

3537
## Configure sign up and sign in user flow
3638

37-
In this section, you'll create a user flow in your Azure Active Directory B2C tenant containing both sign up and sign in policies. For detailed steps, see [Create user flows and custom policies in Azure Active Directory B2C](../active-directory-b2c/tutorial-create-user-flows.md?pivots=b2c-us).
39+
In this section, you'll configure a user flow in your Azure Active Directory B2C tenant that enables users to sign up or sign in to the developer portal. Users are led down the right path depending on the context. For detailed steps, see [Create user flows and custom policies in Azure Active Directory B2C](../active-directory-b2c/tutorial-create-user-flows.md?pivots=b2c-us).
3840

3941
1. In the [Azure portal](https://portal.azure.com), access your Azure Active Directory B2C tenant.
4042
1. Under **Policies**, select **User flows** > **+ New user flow**.
4143
1. On the **Create a user flow** page, select the **Sign up and sign in** user flow. Select the **Recommended** version and then select **Create**.
4244
1. On the **Create** page, provide the following information:
4345
1. Enter a unique name for the user flow.
4446
1. In **Identity providers**, select **Email signup**.
45-
1. In **User attributes and token claims**, select the following attributes and claims that are needed for the API Management developer portal.
47+
1. Optionally enable a **Multifactor authentication** method or **Conditional access** policies.
48+
1. In **User attributes and token claims**, select the following attributes and claims that you want to collect and send from the user during sign-up. Select **Show more** to view all attributes and claims.
4649
* **Collect attributes**: Given Name, Surname
4750
* **Return claims**: Given Name, Surname, Email Addresses, User’s ObjectID
4851

@@ -89,7 +92,7 @@ In this section, you'll create a user flow in your Azure Active Directory B2C te
8992
1. After you've specified the desired configuration, select **Add**.
9093
1. Republish the developer portal for the Azure AD B2C configuration to take effect. In the left menu, under **Developer portal**, select **Portal overview** > **Publish**.
9194

92-
After the changes are saved, developers will be able to create new accounts and sign in to the developer portal by using Azure Active Directory B2C.
95+
After the changes are saved, developers will be able to sign up for new accounts and sign in to the developer portal by using Azure Active Directory B2C.
9396

9497
## Migrate to MSAL
9598

@@ -130,7 +133,7 @@ Although a new account is automatically created whenever a new user signs in wit
130133

131134
The **Sign-up form: OAuth** widget represents a form used for signing up with OAuth.
132135

133-
## Next steps
136+
## Related content
134137

135138
* [Azure Active Directory B2C overview]
136139
* [Azure Active Directory B2C: Extensible policy framework]

articles/api-management/api-management-howto-aad.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ For an overview of options to secure the developer portal, see [Secure access to
3434

3535
- [Import and publish](import-and-publish.md) an API in the Azure API Management instance.
3636

37+
- If you created your instance in a v2 tier, enable the developer portal. For more information, see [Tutorial: Access and customize the developer portal](api-management-howto-developer-portal-customize.md).
38+
3739
[!INCLUDE [azure-cli-prepare-your-environment-no-header.md](~/reusable-content/azure-cli/azure-cli-prepare-your-environment-no-header.md)]
3840

3941
[!INCLUDE [api-management-navigate-to-instance.md](../../includes/api-management-navigate-to-instance.md)]

articles/api-management/api-management-howto-oauth2.md

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
---
2-
title: Authorize test console of API Management developer portal using OAuth 2.0
2+
title: Authorize test console of API Management developer portal - OAuth 2.0
33
titleSuffix: Azure API Management
4-
description: Set up OAuth 2.0 user authorization for the test console in the Azure API Management developer portal. This example uses Microsoft Entra ID as an OAuth 2.0 provider.
4+
description: Set up OAuth 2.0 user authorization for the test console in Azure API Management developer portal. This example uses Microsoft Entra ID as OAuth 2.0 provider.
55
services: api-management
66
author: dlepow
77

88
ms.service: azure-api-management
9-
ms.topic: article
10-
ms.date: 04/01/2024
9+
ms.topic: how-to
10+
ms.date: 01/06/2025
1111
ms.author: danlep
1212
ms.custom: engagement-fy23
1313
---
@@ -22,6 +22,9 @@ Configuring OAuth 2.0 user authorization in the test console of the developer po
2222

2323
## Prerequisites
2424

25+
- An API Management instance.
26+
- An OAuth 2.0 provider.
27+
2528
This article shows you how to configure your API Management service instance to use OAuth 2.0 authorization in the developer portal's test console, but it doesn't show you how to configure an OAuth 2.0 provider.
2629

2730
If you haven't yet created an API Management service instance, see [Create an API Management service instance][Create an API Management service instance].
@@ -55,7 +58,7 @@ This configuration supports the following OAuth flow:
5558

5659
1. A developer (user of the developer portal) makes an API call with the authorization header.
5760

58-
1. The token gets validated by using the `validate-jwt` policy in API Management by Microsoft Entra ID.
61+
1. The token gets validated with the OAuth 2.0 provider by using the `validate-jwt` policy. For the Microsoft Entra ID provider, API Management also provides the `validate-azure-ad-token` policy.
5962

6063
1. Based on the validation result, the developer will receive the response in the developer portal.
6164

@@ -81,7 +84,7 @@ Consider how the grant type generates a token, the token's [scope](https://oauth
8184

8285
When configuring OAuth 2.0 user authorization in the test console of the developer portal:
8386

84-
* **Limit the token's scope to the minimum** needed for developers to test the APIs. Limit the scope to the test console, or to the affected APIs. The steps to configure token scope depend on your OAuth 2.0 provider.
87+
* **Limit the token's scope to the minimum** needed for developers to test the APIs. Limit the scope to the test console, or to the affected APIs. The steps to configure token scope depend on your OAuth 2.0 provider. An example is shown later in this article using Microsoft Entra ID.
8588

8689
Depending on your scenarios, you may configure more or less restrictive token scopes for other client applications that you create to access backend APIs.
8790
* **Take extra care if you enable the Client Credentials flow**. The test console in the developer portal, when working with the Client Credentials flow, doesn't ask for credentials. An access token could be inadvertently exposed to developers or anonymous users of the developer console.
@@ -172,11 +175,11 @@ Now that you've registered two applications to represent the API and the test co
172175

173176
1. In the [Azure portal](https://portal.azure.com), search for and select **App registrations**.
174177

175-
1. Choose your client app. Then in the side menu, select **API permissions**.
178+
1. Choose your client-app. Then in the side menu, select **API permissions**.
176179

177-
1. Select **+ Add a Permission**.
180+
1. Select **+ Add a permission**.
178181

179-
1. Under **Select an API**, select **My APIs**, and then find and select your backend-app.
182+
1. Under **Select an API**, select **My APIs**, and then find and select your backend-app (the app registration for your backend API).
180183

181184
1. Select **Delegated Permissions**, then select the appropriate permissions to your backend-app.
182185

@@ -287,7 +290,7 @@ After saving the OAuth 2.0 server configuration, configure an API or APIs to use
287290

288291
In the configuration so far, API Management doesn't validate the access token. It only passes the token in the authorization header to the backend API.
289292

290-
To pre-authorize requests, configure a [validate-jwt](validate-jwt-policy.md) policy to validate the access token of each incoming request. If a request doesn't have a valid token, API Management blocks it.
293+
To pre-authorize requests, configure a [validate-jwt](validate-jwt-policy.md) policy to validate the access token of each incoming request. If a request doesn't have a valid token, API Management blocks it. When you use the Microsoft Entra ID provider, you can also use the [validate-azure-ad-token](validate-azure-ad-token-policy.md) policy.
291294

292295
[!INCLUDE [api-management-configure-validate-jwt](../../includes/api-management-configure-validate-jwt.md)]
293296

-26.1 KB
Loading
-23.1 KB
Loading

articles/api-management/rate-limit-by-key-policy.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ To understand the difference between rate limits and quotas, [see Rate limits an
4444
| ------------------- | ----------------------------------------------------------------------------------------------------- | -------- | ------- |
4545
| calls | The maximum total number of calls allowed for the key value during the time interval specified in the `renewal-period`. Policy expressions are allowed. | Yes | N/A |
4646
| counter-key | The key to use for the rate limit policy. For each key value, a single counter is used for all scopes at which the policy is configured. Policy expressions are allowed. | Yes | N/A |
47-
| increment-condition | The Boolean expression specifying if the request should be counted towards the rate (`true`). Policy expressions are allowed. | No | N/A |
48-
| increment-count | The number by which the counter is increased per request. Policy expressions are allowed. | No | 1 |
49-
| renewal-period | The length in seconds of the sliding window during which the number of allowed requests should not exceed the value specified in `calls`. Maximum allowed value: 300 seconds. Policy expressions are allowed. | Yes | N/A |
47+
| increment-condition | The Boolean expression specifying if the request should be counted towards the rate (`true`). Policy expressions are allowed but will postpone evaluation and counter increment actions to end of outbound pipeline. | No | N/A |
48+
| increment-count | The number by which the counter is increased per request. Policy expressions are allowed but will postpone evaluation and counter increment to end of outbound pipeline. | No | 1 |
49+
| renewal-period | The length in seconds of the sliding window during which the number of allowed requests should not exceed the value specified in `calls`. Maximum allowed value: 300 seconds. Policy expressions are allowed. | Yes | N/A |
5050
| retry-after-header-name | The name of a custom response header whose value is the recommended retry interval in seconds after the specified call rate is exceeded for the key value. Policy expressions aren't allowed. | No | `Retry-After` |
5151
| retry-after-variable-name | The name of a policy expression variable that stores the recommended retry interval in seconds after the specified call rate is exceeded for the key value. Policy expressions aren't allowed. | No | N/A |
5252
| remaining-calls-header-name | The name of a response header whose value after each policy execution is the number of remaining calls allowed for the key value in the time interval specified in the `renewal-period`. Policy expressions aren't allowed. | No | N/A |
@@ -63,6 +63,7 @@ To understand the difference between rate limits and quotas, [see Rate limits an
6363

6464
* [!INCLUDE [api-management-rate-limit-key-scope](../../includes/api-management-rate-limit-key-scope.md)]
6565
* [!INCLUDE [api-management-self-hosted-gateway-rate-limit](../../includes/api-management-self-hosted-gateway-rate-limit.md)] [Learn more](how-to-self-hosted-gateway-on-kubernetes-in-production.md#request-throttling)
66+
* When `increment-condition` or `increment-count` are defined using expressions, evaluation and increment of rate limit counter are postponed to end of outbound pipeline to allow for policy expressions based on the reponse. Limit exceeded condition is not evaluated at the same time in this case and will be evaluated on next incoming call. This leads to cases where `429 Too Many Requests` status code is returned 1 call later than usual.
6667

6768

6869
## Example

0 commit comments

Comments
 (0)