Skip to content

Commit cb46661

Browse files
authored
Merge branch 'main' into Release_Archive_main_2025-10-31-16-03-48
2 parents f2882a0 + c0550ec commit cb46661

450 files changed

Lines changed: 6889 additions & 3606 deletions

File tree

Some content is hidden

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

.openpublishing.redirection.json

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,46 @@
1515
"redirect_url": "/azure/backup/secure-by-default",
1616
"redirect_document_id": false
1717
},
18+
{
19+
"source_path": "articles/migrate/concepts-azure-spring-apps-assessment-calculation.md",
20+
"redirect_url": "/azure/migrate",
21+
"redirect_document_id": false,
22+
"monikers": [
23+
"migrate"
24+
]
25+
},
26+
{
27+
"source_path": "articles/migrate/how-to-create-azure-spring-apps-assessment.md",
28+
"redirect_url": "/azure/migrate",
29+
"redirect_document_id": false,
30+
"monikers": [
31+
"migrate"
32+
]
33+
},
34+
{
35+
"source_path": "articles/migrate/troubleshoot-spring-boot-discovery.md",
36+
"redirect_url": "/azure/migrate",
37+
"redirect_document_id": false,
38+
"monikers": [
39+
"migrate"
40+
]
41+
},
42+
{
43+
"source_path": "articles/migrate/tutorial-assess-spring-boot.md",
44+
"redirect_url": "/azure/migrate",
45+
"redirect_document_id": false,
46+
"monikers": [
47+
"migrate"
48+
]
49+
},
50+
{
51+
"source_path": "articles/migrate/tutorial-discover-spring-boot.md",
52+
"redirect_url": "/azure/migrate",
53+
"redirect_document_id": false,
54+
"monikers": [
55+
"migrate"
56+
]
57+
},
1858
{
1959
"source_path": "articles/azure-functions/functions-proxies.md",
2060
"redirect_url": "/previous-versions/azure/azure-functions/functions-proxies",

articles/active-directory-b2c/phone-based-mfa.md

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ author: kengaderdus
77
manager: CelesteDG
88
ms.service: azure-active-directory
99
ms.topic: how-to
10-
ms.date: 10/23/2024
10+
ms.date: 11/05/2025
1111
ms.author: kengaderdus
1212
ms.subservice: b2c
1313
ms.custom: sfi-image-nochange
@@ -93,7 +93,7 @@ Take the following actions to help mitigate fraudulent sign-ups.
9393
- [Configure a Conditional Access policy](conditional-access-user-flow.md) to block sign-ins based on location (applies to sign-in flows only, not sign-up flows).
9494
- To prevent automated attacks on your consumer-facing apps, [enable CAPTCHA](add-captcha.md). Azure AD B2C’s CAPTCHA supports both audio and visual CAPTCHA challenges, and applies to both sign-up and sign-in flows for your local accounts.
9595

96-
- Remove country codes that aren't relevant to your organization from the drop-down menu where the user verifies their phone number (this change will apply to future sign-ups):
96+
- Remove country/region codes that aren't relevant to your organization from the drop-down menu where the user verifies their phone number (this change will apply to future sign-ups):
9797

9898
1. Sign in to the [Azure portal](https://portal.azure.com) as the [External ID User Flow Administrator](/entra/identity/role-based-access-control/permissions-reference#external-id-user-flow-administrator) of your Azure AD B2C tenant.
9999
1. If you have access to multiple tenants, select the **Settings** icon in the top menu to switch to your Azure AD B2C tenant from the **Directories + subscriptions** menu.
@@ -104,9 +104,9 @@ Take the following actions to help mitigate fraudulent sign-ups.
104104

105105
1. Open the JSON file that was downloaded in the previous step. In the file, search for `DEFAULT`, and replace the line with `"Value": "{\"DEFAULT\":\"Country/Region\",\"US\":\"United States\"}"`. Be sure to set `Overrides` to `true`.
106106

107-
To implement SMS blocking effectively, make sure the Overrides setting is enabled (set to true) only for your organization’s primary or default language. Do not enable Overrides for any secondary or non-primary languages, as this can cause unexpected SMS blocking. Since the countryList in the JSON file acts as an allow list, be sure to include all countries that should be permitted to send SMS in this list for the primary language configuration when Overrides is true.
107+
To implement SMS blocking effectively, make sure the Overrides setting is enabled (set to true) only for your organization’s primary or default language. Do not enable Overrides for any secondary or non-primary languages, as this can cause unexpected SMS blocking. Since the countryList in the JSON file acts as an allow list, be sure to include all countries/regions that should be permitted to send SMS in this list for the primary language configuration when Overrides is true.
108108
> [!NOTE]
109-
> You can customize the list of allowed country codes in the `countryList` element (see the [Phone factor authentication page example](localization-string-ids.md#phone-factor-authentication-page-example)).
109+
> You can customize the list of allowed country/region codes in the `countryList` element (see the [Phone factor authentication page example](localization-string-ids.md#phone-factor-authentication-page-example)).
110110
111111
1. Save the JSON file. In the language details panel, under **Upload new overrides**, select the modified JSON file to upload it.
112112
1. Close the panel and select **Run user flow**. For this example, confirm that **United States** is the only country code available in the dropdown:
@@ -115,11 +115,32 @@ Take the following actions to help mitigate fraudulent sign-ups.
115115

116116
## Mitigate fraudulent sign-ups for custom policy
117117

118-
To help prevent fraudulent sign-ups, remove any country codes that do not apply to your organization by following these steps:
118+
To help prevent fraudulent sign-ups, remove any country/region codes that do not apply to your organization by following these steps:
119119

120-
1. Locate the policy file that defines the `RelyingParty`. For example, in the [Starter Pack](https://github.com/Azure-Samples/active-directory-b2c-custom-policy-starterpack), this is usually the SignUpOrSignin.xml file.
120+
1. Locate the policy file that defines the `RelyingParty`. For example, in the [Starter Pack](https://github.com/Azure-Samples/active-directory-b2c-custom-policy-starterpack), this is usually the SignUpOrSignin.xml file. See the following snippet.
121121

122-
1. In the `BuildingBlocks` section of this policy file, add the following code. Make sure to include only the country codes relevant to your organization:
122+
```xml
123+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
124+
<TrustFrameworkPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
125+
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
126+
xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06" PolicySchemaVersion="0.3.0.0" TenantId="yourtenant.onmicrosoft.com" PolicyId="B2C_1A_signup_signin" PublicPolicyUri="http://yourtenant.onmicrosoft.com/B2C_1A_signup_signin">
127+
128+
<BasePolicy>
129+
<TenantId>yourtenant.onmicrosoft.com</TenantId>
130+
<PolicyId>B2C_1A_TrustFrameworkExtensions</PolicyId>
131+
</BasePolicy>
132+
133+
<BuildingBlocks>
134+
<!-- Add the XML code outlined in Step 2 if this section. -->
135+
</BuildingBlocks>
136+
137+
<RelyingParty>
138+
...
139+
</RelyingParty>
140+
</TrustFrameworkPolicy>
141+
```
142+
143+
1. In the `BuildingBlocks` section of this policy file, add the following code. Make sure to include only the country/region codes relevant to your organization:
123144

124145
```xml
125146
<BuildingBlocks>
@@ -155,10 +176,13 @@ To help prevent fraudulent sign-ups, remove any country codes that do not apply
155176
</BuildingBlocks>
156177
```
157178

158-
The countryList acts as an allow list. Only the countries you specify in this list (for example, Japan, Bulgaria, and the United States) are permitted to use MFA. All other countries are blocked.
179+
The countryList acts as an allow list. Only the countries/regions you specify in this list (for example, Japan, Bulgaria, and the United States) are permitted to use MFA. All other countries/regions are blocked.
180+
181+
> [!IMPORTANT]
182+
> This code must be added to the relying party policy to ensure the country/region code restrictions are properly enforced on the server side.
159183

160184
## Related content
161185

162186
- Learn about [Identity Protection and Conditional Access for Azure AD B2C](conditional-access-identity-protection-overview.md)
163187

164-
- Apply [Conditional Access to user flows in Azure Active Directory B2C](conditional-access-user-flow.md)
188+
- Apply [Conditional Access to user flows in Azure Active Directory B2C](conditional-access-user-flow.md)

articles/app-service/app-service-hybrid-connections.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ In addition to there being an App Service plan SKU requirement, there's an extra
138138

139139
The Hybrid Connections feature requires a relay agent in the network that hosts your Hybrid Connection endpoint. That relay agent is called the Hybrid Connection Manager (HCM). To download the Hybrid Connection Manager, follow the instructions for your client.
140140

141-
This tool runs on both Windows and Linux. On Windows, the Hybrid Connection Manager requires Windows Server 2012 and later. The Hybrid Connection Manager runs as a service and connects outbound to Azure Relay on port 443.
141+
This tool runs on both Windows and Linux. The Hybrid Connection Manager runs as a service and connects outbound to Azure Relay on port 443. On Windows, the current version requires Windows Server 2012 or later, but only supports the CLI interface on Windows Server 2012 (the GUI requires Windows Server 2016 or later). A legacy version that supports the GUI on Windows Server 2012 is available but not recommended - see the note in the troubleshooting section for details.
142142

143143
> [!NOTE]
144144
> As of October 20, 2025, [Azure Service Bus no longer supports TLS 1.0 and TLS 1.1][ServiceBus]. The minimum TLS version is now 1.2 for all Service Bus deployments. Hybrid Connections use Service Bus for connectivity. App Service Hybrid Connection Manager version 0.7.7 and later supports TLS 1.2. If you are on a previous version, **you must update to the new version of the Hybrid Connection Manager as soon as possible to prevent service disruption.**
Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
---
2+
title: Secure OpenAPI tool calls from Azure AI Foundry Agent Service
3+
description: Configure Microsoft Entra authentication to secure Azure AI Foundry tool calls with managed identity, step by step.
4+
ms.topic: how-to
5+
ms.date: 10/28/2025
6+
author: cephalin
7+
ms.author: cephalin
8+
ms.service: azure-app-service
9+
ms.collection: ce-skilling-ai-copilot
10+
---
11+
12+
# Secure OpenAPI endpoints for Azure AI Foundry Agent Service
13+
14+
This article shows you how to secure your App Service OpenAPI endpoints when they're called by Azure AI Foundry Agent Service. When you add your App Service app as an OpenAPI tool in Azure AI Foundry, you can configure it to call your APIs anonymously without authentication, which is easier for development and testing. However, for production environments, you should use Microsoft Entra authentication with managed identity. This guide walks you through configuring managed identity authentication to enable secure, token-based communication between Azure AI Foundry and your app.
15+
16+
## Prerequisites
17+
18+
- An App Service app with OpenAPI endpoints. If you need to add OpenAPI functionality to your app, see one of the following tutorials:
19+
- [Add an App Service app as a tool in Azure AI Foundry Agent Service (.NET)](tutorial-ai-integrate-azure-ai-agent-dotnet.md)
20+
- [Add an App Service app as a tool in Azure AI Foundry Agent Service (Java)](tutorial-ai-integrate-azure-ai-agent-java.md)
21+
- [Add an App Service app as a tool in Azure AI Foundry Agent Service (Python)](tutorial-ai-integrate-azure-ai-agent-python.md)
22+
- [Add an App Service app as a tool in Azure AI Foundry Agent Service (Node.js)](tutorial-ai-integrate-azure-ai-agent-node.md)
23+
24+
- An Azure AI Foundry project where you'll add your app as an OpenAPI tool.
25+
26+
## Find your Azure AI Foundry project's managed identity IDs
27+
28+
You need both the object ID and the application ID of your Azure AI Foundry project's managed identity to configure App Service authentication. A system-assigned managed identity is automatically created for your Azure AI Foundry project when you create it. This identity is what Azure AI Foundry Agent Service uses to authenticate with your app.
29+
30+
1. In the [Azure AI Foundry portal](https://ai.azure.com), navigate to your project and select **Overview**.
31+
32+
1. In the **Project details** section on the right, select the link next to **Resource group** to open the resource group in the Azure portal.
33+
34+
1. In the resource group, find and select your AI Foundry project resource.
35+
36+
1. In the project resource's left menu, select **Resource Management** > **Identity**.
37+
38+
1. Under **System assigned**, copy the value of **Object (principal) ID** for later.
39+
40+
1. In the Azure portal, search for and select **Microsoft Entra ID**.
41+
42+
1. In the search box, search for the object ID you copied and select it in the search results.
43+
44+
1. On the **Overview** page, copy the value of **Application ID**.
45+
46+
Note the **Object ID** is the same as the one shown in the system-assigned managed identity. You need both the application ID and the object ID for configuring App Service authentication.
47+
48+
## Configure Microsoft Entra authentication for your app
49+
50+
1. In the Azure portal, navigate to your App Service app.
51+
52+
1. On your app's left menu, select **Settings** > **Authentication**, and then select **Add identity provider**.
53+
54+
1. On the **Add an identity provider** page, select **Microsoft** as the **Identity provider** to create a new app registration.
55+
56+
1. Under **Additional checks**, for **Client application requirement**, select **Allow requests from specific client applications**.
57+
58+
1. Select the pencil widget and add the **application ID** that you copied in [Find your Azure AI Foundry project's managed identity IDs](#find-your-azure-ai-foundry-projects-managed-identity-ids).
59+
60+
1. For **Identity requirement**, select **Allow requests from specific identities**.
61+
62+
1. Select the pencil widget and add the **object ID** that you copied in [Find your Azure AI Foundry project's managed identity IDs](#find-your-azure-ai-foundry-projects-managed-identity-ids).
63+
64+
1. For **Tenant requirement** accept the default value. If not, be sure to select the tenant where your Azure AI Foundry project (or rather its identity) is created.
65+
66+
1. For **Unauthenticated requests**, select **HTTP 401 Unauthorized: recommended for APIs**.
67+
68+
1. Select **Add** to create the identity provider.
69+
70+
:::image type="content" source="media/configure-authentication-ai-foundry-openapi-tool/entra-auth-configuration.png" alt-text="Screenshot showing the configuration of a new Microsoft authentication provider in the App Service.":::
71+
72+
## Update the app registration Application ID URI
73+
74+
After enabling authentication, you need to update the app registration's Application ID URI to match your App Service app's URL.
75+
76+
1. After the Microsoft provider configuration completes, select it in the **Identity provider** column to open the app registration page.
77+
78+
1. In the left menu, select **Manage** > **Expose an API**.
79+
80+
1. Next to **Application ID URI**, select **Edit**.
81+
82+
1. Change the value to your App Service app's URL in the following format: `https://<suffix>.azurewebsites.net`.
83+
84+
You can find the app's hostname on the **Overview** page in **Default domain**.
85+
86+
1. Select **Save**.
87+
88+
> [!WARNING]
89+
> If you delete your App Service app, you must also delete the app registration and clean up any authentication resources that reference the Application ID URI. Failing to do so creates a security vulnerability: if someone else creates an app with the same URL, they could potentially gain unauthorized access to resources that trust the orphaned app registration. Always remove app registrations and their associated permissions when decommissioning an app.
90+
91+
## Configure the OpenAPI tool in Azure AI Foundry
92+
93+
> [!NOTE]
94+
> This section assumes you already completed one of the tutorials in the [Prerequisites](#prerequisites) section, where you added your app as an OpenAPI tool in Azure AI Foundry using anonymous authentication. You now update the tool to use managed identity authentication.
95+
96+
1. Back in the [Azure AI Foundry portal](https://ai.azure.com), select your agent.
97+
98+
1. Find the OpenAPI tool and select it to edit.
99+
100+
1. In the **Define the schema for this tool** page:
101+
102+
1. Paste your OpenAPI schema. For more information, see [How to use OpenAPI with Azure AI Foundry Agent Service](/azure/ai-services/agents/how-to/tools/openapi-spec).
103+
104+
1. For **Authentication method**, select **Managed Identity**.
105+
106+
1. For **Audience**, enter your App Service app's URL. This URL must match the **Application ID URI** that you configured earlier.
107+
108+
> [!TIP]
109+
> Azure AI Foundry Agent Service uses the system-assigned managed identity to authenticate with your app. Because you added the identity's client ID as an allowed client application and an allowed identity in your app's authentication provider configuration, the agent service is authorized to call your app's APIs.
110+
111+
1. Review and save the tool.
112+
113+
## Test the agent
114+
115+
1. In the Azure AI Foundry portal, select your agent and select **Try in playground**.
116+
117+
1. Chat with the agent to test your OpenAPI endpoints. For example:
118+
119+
- Show me all the tasks.
120+
- Create a task called "Buy groceries."
121+
- Update that task to "Buy groceries and cook dinner."
122+
123+
If the authentication is configured correctly, the agent successfully calls your app's APIs through the OpenAPI tool.
124+
125+
## Related content
126+
127+
- [Configure your App Service or Azure Functions app to use Microsoft Entra sign-in](configure-authentication-provider-aad.md)
128+
- [Integrate AI into your Azure App Service applications](overview-ai-integration.md)
129+
- [What is Azure AI Foundry Agent Service?](/azure/ai-services/agents/overview)

0 commit comments

Comments
 (0)