Skip to content

Commit cd7c53d

Browse files
authored
Merge pull request #188049 from MicrosoftDocs/main
Merge Main to Live, 4 AM
2 parents a7389c0 + 1b80e27 commit cd7c53d

File tree

380 files changed

+1463
-1592
lines changed

Some content is hidden

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

380 files changed

+1463
-1592
lines changed

.openpublishing.redirection.active-directory.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -837,12 +837,12 @@
837837
},
838838
{
839839
"source_path_from_root": "/articles/active-directory/active-directory-conditional-access.md",
840-
"redirect_url": "/azure/active-directory/active-directory-conditional-access-azure-portal",
840+
"redirect_url": "/azure/active-directory/conditional-access/overview",
841841
"redirect_document_id": false
842842
},
843843
{
844844
"source_path_from_root": "/articles/active-directory/active-directory-conditional-access-azuread-connected-apps.md",
845-
"redirect_url": "/azure/active-directory/active-directory-conditional-access-azure-portal-get-started",
845+
"redirect_url": "/azure/active-directory/concept-conditional-access-cloud-apps",
846846
"redirect_document_id": false
847847
},
848848
{
@@ -1972,7 +1972,7 @@
19721972
},
19731973
{
19741974
"source_path_from_root": "/articles/active-directory/active-directory-conditional-access-azure-portal-get-started.md",
1975-
"redirect_url": "/azure/active-directory/conditional-access/app-based-mfa",
1975+
"redirect_url": "/azure/active-directory/conditional-access/howto-conditional-access-policy-azure-management",
19761976
"redirect_document_id": true
19771977
},
19781978
{
@@ -2067,7 +2067,7 @@
20672067
},
20682068
{
20692069
"source_path_from_root": "/articles/active-directory/active-directory-conditional-access-device-policies.md",
2070-
"redirect_url": "/azure/active-directory/conditional-access/overview",
2070+
"redirect_url": "/azure/active-directory/conditional-access/concept-condition-filters-for-devices",
20712071
"redirect_document_id": false
20722072
},
20732073
{
@@ -2077,7 +2077,7 @@
20772077
},
20782078
{
20792079
"source_path_from_root": "/articles/active-directory/conditional-access/howto-conditional-access-adoption-kit.md",
2080-
"redirect_url": "/azure/active-directory/conditional-access/overview",
2080+
"redirect_url": "/azure/active-directory/conditional-access/plan-conditional-access",
20812081
"redirect_document_id": false
20822082
},
20832083
{

.openpublishing.redirection.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44949,6 +44949,11 @@
4494944949
"redirect_url": "/learn/modules/translate-text-with-translator-service?toc=/azure/cognitive-services/translator/toc.json&bc=/azure/cognitive-services/translator/breadcrumb/toc.json",
4495044950
"redirect_document_id": false
4495144951
},
44952+
{
44953+
"source_path": "articles/machine-learning/classic/deploy-with-resource-manager-template.md",
44954+
"redirect_url": "/previous-versions/azure/machine-learning/classic/deploy-with-resource-manager-template",
44955+
"redirect_document_id": false
44956+
},
4495244957
{
4495344958
"source_path_from_root": "/articles/governance/policy/how-to/guest-configuration-create-group-policy.md",
4495444959
"redirect_url": "/azure/governance/policy/how-to/guest-configuration-create",

articles/active-directory-b2c/faq.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,16 @@ sections:
220220
answer: |
221221
No, Azure AD B2C is a pay-as-you-go Azure service and is not part of Enterprise Mobility Suite.
222222
223+
- question: |
224+
Can I purchase Azure AD Premium P1 and Azure AD Premium P2 licensing for my Azure AD B2C tenant?
225+
answer: |
226+
No, Azure AD B2C tenants don't use Azure AD Premium P1 or Azure AD Premium P2 licensing. Azure AD B2C uses [Azure AD B2C Premium P1 or P2](billing.md#change-your-azure-ad-pricing-tier) licenses, which are different from Azure AD Premium P1 or P2 licenses for a Standard Azure AD tenant. Azure AD B2C tenants natively support some features that are similar to Azure AD Premium features, as explained in [Supported Azure AD features](supported-azure-ad-features.md).
227+
228+
- question: |
229+
Can I use group-based assignment for Azure AD Enterprise Applications in my Azure AD B2C tenant?
230+
answer: |
231+
No, Azure AD B2C tenants do not support [group-based assignment to Azure AD Enterprise Applications](../active-directory/manage-apps/assign-user-or-group-access-portal.md).
232+
223233
- question: |
224234
What Azure AD B2C features are unavailable in Microsoft Azure Government?
225235
answer: |

articles/active-directory/app-proxy/application-proxy-secure-api-access.md

Lines changed: 61 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ ms.custom: has-adal-ref
1515
---
1616
# Secure access to on-premises APIs with Azure Active Directory Application Proxy
1717

18-
You may have business logic APIs running on-premises, or hosted on virtual machines in the cloud. Your native Android, iOS, Mac, or Windows apps need to interact with the API endpoints to use data or provide user interaction. Azure AD Application Proxy and the [Microsoft Authentication Library (MSAL)](../azuread-dev/active-directory-authentication-libraries.md) let your native apps securely access your on-premises APIs. Azure Active Directory Application Proxy is a faster and more secure solution than opening firewall ports and controlling authentication and authorization at the app layer.
18+
You may have business logic APIs running on-premises, or hosted on virtual machines in the cloud. Your native Android, iOS, Mac, or Windows apps need to interact with the API endpoints to use data or provide user interaction. Azure AD Application Proxy and the [Microsoft Authentication Library (MSAL)](../develop/reference-v2-libraries.md) let your native apps securely access your on-premises APIs. Azure Active Directory Application Proxy is a faster and more secure solution than opening firewall ports and controlling authentication and authorization at the app layer.
1919

2020
This article walks you through setting up an Azure AD Application Proxy solution for hosting a web API service that native apps can access.
2121

@@ -29,9 +29,9 @@ The following diagram shows how you can use Azure AD Application Proxy to secure
2929

3030
![Azure AD Application Proxy API access](./media/application-proxy-secure-api-access/overview-publish-api-app-proxy.png)
3131

32-
The Azure AD Application Proxy forms the backbone of the solution, working as a public endpoint for API access, and providing authentication and authorization. You can access your APIs from a vast array of platforms by using the [Microsoft Authentication Library (MSAL)](../azuread-dev/active-directory-authentication-libraries.md) libraries.
32+
The Azure AD Application Proxy forms the backbone of the solution, working as a public endpoint for API access, and providing authentication and authorization. You can access your APIs from a vast array of platforms by using the [Microsoft Authentication Library (MSAL)](../develop/reference-v2-libraries.md) libraries.
3333

34-
Since Azure AD Application Proxy authentication and authorization are built on top of Azure AD, you can use Azure AD Conditional Access to ensure only trusted devices can access APIs published through Application Proxy. Use Azure AD Join or Azure AD Hybrid Joined for desktops, and Intune Managed for devices. You can also take advantage of Azure Active Directory Premium features like Azure AD Multi-Factor Authentication, and the machine learning-backed security of [Azure Identity Protection](../identity-protection/overview-identity-protection.md).
34+
Since Azure AD Application Proxy authentication and authorization are built on top of Azure AD, you can use Azure AD Conditional Access to ensure only trusted devices can access APIs published through Application Proxy. Use Azure AD Join or Azure AD Hybrid Joined for desktops, and Intune Managed for devices. You can also take advantage of Azure Active Directory Premium features like Azure AD Multi-Factor Authentication, and the machine learning-backed security of [Azure Identity Protection](../identity-protection/overview-identity-protection.md).
3535

3636
## Prerequisites
3737

@@ -52,7 +52,7 @@ To publish the SecretAPI web API through Application Proxy:
5252

5353
1. At the top of the **Enterprise applications - All applications** page, select **New application**.
5454

55-
1. On the **Add an application** page, select **On-premises applications**. The **Add your own on-premises application** page appears.
55+
1. On the **Browse Azure AD Gallery** page, locate section **On-premises applications** and select **Add an on-premises application**. The **Add your own on-premises application** page appears.
5656

5757
1. If you don't have an Application Proxy Connector installed, you'll be prompted to install it. Select **Download Application Proxy Connector** to download and install the connector.
5858

@@ -91,7 +91,7 @@ You've published your web API through Azure AD Application Proxy. Now, add users
9191
1. Back on the **Add Assignment** page, select **Assign**.
9292

9393
> [!NOTE]
94-
> APIs that use integrated Windows authentication might require [additional steps](./application-proxy-configure-single-sign-on-with-kcd.md).
94+
> APIs that use integrated Windows authentication might require [additional steps](./application-proxy-configure-single-sign-on-with-kcd.md).
9595
9696
## Register the native app and grant access to the API
9797

@@ -105,9 +105,9 @@ To register the AppProxyNativeAppSample native app:
105105

106106
1. Under **Name**, enter *AppProxyNativeAppSample*.
107107

108-
1. Under **Supported account types**, select **Accounts in any organizational directory**.
108+
1. Under **Supported account types**, select **Accounts in this organizational directory only (Contoso only - Single tenant)**.
109109

110-
1. Under **Redirect URL**, drop down and select **Public client (mobile & desktop)**, and then enter *https://login.microsoftonline.com/common/oauth2/nativeclient*.
110+
1. Under **Redirect URL**, drop down and select **Public client/native (mobile & desktop)**, and then enter *https://login.microsoftonline.com/common/oauth2/nativeclient *.
111111

112112
1. Select **Register**, and wait for the app to be successfully registered.
113113

@@ -125,58 +125,72 @@ You've now registered the AppProxyNativeAppSample app in Azure Active Directory.
125125

126126
1. On the next **Request API permissions** page, select the check box next to **user_impersonation**, and then select **Add permissions**.
127127

128-
![Select an API](./media/application-proxy-secure-api-access/10-secretapi-added.png)
128+
![Select an A P I.](./media/application-proxy-secure-api-access/10-secretapi-added.png)
129129

130130
1. Back on the **API permissions** page, you can select **Grant admin consent for Contoso** to prevent other users from having to individually consent to the app.
131131

132132
## Configure the native app code
133133

134-
The last step is to configure the native app. The following snippet from the *Form1.cs* file in the NativeClient sample app causes the MSAL library to acquire the token for requesting the API call, and attach it as bearer to the app header.
135-
136-
```csharp
137-
// Acquire Access Token from AAD for Proxy Application
138-
IPublicClientApplication clientApp = PublicClientApplicationBuilder
139-
.Create(<App ID of the Native app>)
140-
.WithDefaultRedirectUri() // Will automatically use the default Uri for native app
141-
.WithAuthority("https://login.microsoftonline.com/{<Tenant ID>}")
142-
.Build();
143-
144-
AuthenticationResult authResult = null;
145-
var accounts = await clientApp.GetAccountsAsync();
146-
IAccount account = accounts.FirstOrDefault();
147-
148-
IEnumerable<string> scopes = new string[] {"<Scope>"};
149-
150-
try
151-
{
152-
authResult = await clientApp.AcquireTokenSilent(scopes, account).ExecuteAsync();
153-
}
154-
catch (MsalUiRequiredException ex)
155-
{
156-
authResult = await clientApp.AcquireTokenInteractive(scopes).ExecuteAsync();
157-
}
158-
159-
if (authResult != null)
160-
{
161-
// Use the Access Token to access the Proxy Application
162-
163-
HttpClient httpClient = new HttpClient();
164-
HttpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authResult.AccessToken);
165-
HttpResponseMessage response = await httpClient.GetAsync("<Proxy App Url>");
166-
}
167-
```
134+
The last step is to configure the native app. The code snippet that's used in the following steps is based on [Add the Microsoft Authentication Library to your code (.NET C# sample)](application-proxy-configure-native-client-application.md#step-4-add-the-microsoft-authentication-library-to-your-code-net-c-sample). The code is customized for this example. The code must be added to the *Form1.cs* file in the NativeClient sample app where it will cause the [MSAL library](../develop/reference-v2-libraries.md) to acquire the token for requesting the API call and attach it as bearer to the header in the request.
135+
136+
> [!NOTE]
137+
> The sample app uses [Azure Active Directory Authentication Library (ADAL)](../azuread-dev/active-directory-authentication-libraries.md). Read how to [add MSAL to your project](../develop/tutorial-v2-windows-desktop.md#add-msal-to-your-project). Remember to [add the reference to MSAL](../develop/tutorial-v2-windows-desktop.md#add-the-code-to-initialize-msal) to the class and remove the ADAL reference.
138+
139+
To configure the native app code:
140+
141+
1. In *Form1.cs*, add the namespace `using Microsoft.Identity.Client;` to the code.
142+
1. Remove the namespace `using Microsoft.IdentityModel.Clients.ActiveDirectory;` from the code.
143+
1. Remove lines 26 and 30 because they are no longer needed.
144+
1. Replace the contents of the `GetTodoList()` method with the following code snippet:
145+
146+
```csharp
147+
// Acquire Access Token from Azure AD for Proxy Application
148+
var clientApp = PublicClientApplicationBuilder
149+
.Create(clientId)
150+
.WithDefaultRedirectUri() // Will automatically use the default URI for native app
151+
.WithAuthority(authority)
152+
.Build();
153+
var accounts = await clientApp.GetAccountsAsync();
154+
var account = accounts.FirstOrDefault();
155+
156+
var scopes = new string[] { todoListResourceId + "/user_impersonation" };
157+
158+
AuthenticationResult authResult;
159+
try
160+
{
161+
authResult = await clientApp.AcquireTokenSilent(scopes, account).ExecuteAsync();
162+
}
163+
catch (MsalUiRequiredException ex)
164+
{
165+
authResult = await clientApp.AcquireTokenInteractive(scopes).ExecuteAsync();
166+
}
167+
168+
if (authResult != null)
169+
{
170+
// Use the Access Token to access the Proxy Application
171+
var httpClient = new HttpClient();
172+
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authResult.AccessToken);
173+
// Call the To Do list service
174+
var response = await httpClient.GetAsync(todoListBaseAddress + "/api/values/4");
175+
var responseString = await response.Content.ReadAsStringAsync();
176+
MessageBox.Show(responseString);
177+
}
178+
```
168179

169180
To configure the native app to connect to Azure Active Directory and call the API App Proxy, update the placeholder values in the *App.config* file of the NativeClient sample app with values from Azure AD:
170181

171-
- Paste the **Directory (tenant) ID** in the `<add key="ida:Tenant" value="" />` field. You can find and copy this value (a GUID) from the **Overview** page of either of your apps.
182+
1. Paste the **Directory (tenant) ID** in the `<add key="ida:Tenant" value="" />` field. You can find and copy this value (a GUID) from the **Overview** page of either of your apps.
172183

173-
- Paste the AppProxyNativeAppSample **Application (client) ID** in the `<add key="ida:ClientId" value="" />` field. You can find and copy this value (a GUID) from the AppProxyNativeAppSample's **Overview** page, in the left navigation under **Manage**.
184+
1. Paste the AppProxyNativeAppSample **Application (client) ID** in the `<add key="ida:ClientId" value="" />` field. You can find and copy this value (a GUID) from the AppProxyNativeAppSample's **Overview** page, in the left navigation under **Manage**.
174185

175-
- Paste the AppProxyNativeAppSample **Redirect URI** in the `<add key="ida:RedirectUri" value="" />` field. You can find and copy this value (a URI) from the AppProxyNativeAppSample's **Authentication** page, in the left navigation under **Manage**.
186+
1. *This step is optional as MSAL uses the method PublicClientApplicationBuilder.WithDefaultRedirectUri() to insert the recommended reply URI.* Paste the AppProxyNativeAppSample **Redirect URI** in the `<add key="ida:RedirectUri" value="" />` field. You can find and copy this value (a URI) from the AppProxyNativeAppSample's **Authentication** page, in the left navigation under **Manage**.
176187

177-
- Paste the SecretAPI **Application ID URI** in the `<add key="todo:TodoListResourceId" value="" />` field. You can find and copy this value (a URI) from the SecretAPI's **Expose an API** page, in the left navigation under **Manage**.
188+
1. Paste the SecretAPI **Application ID URI** in the `<add key="todo:TodoListResourceId" value="" />` field. This is the same value as `todo:TodoListBaseAddress` below. You can find and copy this value (a URI) from the SecretAPI's **Expose an API** page, in the left navigation under **Manage**.
178189

179-
- Paste the SecretAPI **Home Page URL** in the `<add key="todo:TodoListBaseAddress" value="" />` field. You can find and copy this value (a URL) from the SecretAPI's **Branding** page, in the left navigation under **Manage**.
190+
1. Paste the SecretAPI **Home Page URL** in the `<add key="todo:TodoListBaseAddress" value="" />` field. You can find and copy this value (a URL) from the SecretAPI **Branding & properties** page, in the left navigation under **Manage**.
191+
192+
> [!NOTE]
193+
> If the solution doesn't build and reports the error *invalid Resx file*, in Solution Explorer, expand **Properties**, right-click *Resources.resx*, and then select **View Code**. Comment lines 121 to 123.
180194
181195
After you configure the parameters, build and run the native app. When you select the **Sign In** button, the app lets you sign in, and then displays a success screen to confirm that it successfully connected to the SecretAPI.
182196

-5.88 KB
Loading

articles/active-directory/authentication/concept-authentication-phone-options.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,9 @@ With phone call verification during SSPR or Azure AD Multi-Factor Authentication
5959
If you have problems with phone authentication for Azure AD, review the following troubleshooting steps:
6060

6161
* “You've hit our limit on verification calls” or “You’ve hit our limit on text verification codes” error messages during sign-in
62-
* Microsoft may limit repeated authentication attempts that are performed by the same user in a short period of time. This limitation does not apply to the Microsoft Authenticator or verification code. If you have hit these limits, you can use the Authenticator App, verification code or try to sign in again in a few minutes.
62+
* Microsoft may limit repeated authentication attempts that are performed by the same user or organization in a short period of time. This limitation does not apply to the Microsoft Authenticator or verification code. If you have hit these limits, you can use the Authenticator App, verification code or try to sign in again in a few minutes.
6363
* "Sorry, we're having trouble verifying your account" error message during sign-in
64-
* Microsoft may limit or block voice or SMS authentication attempts that are performed by the same user, phone number, or organization due to high number of failed voice or SMS authentication attempts. If you are experiencing this error, you can try another method, such as Authenticator App or verification code, or reach out to your admin for support.
64+
* Microsoft may limit or block voice or SMS authentication attempts that are performed by the same user, phone number, or organization due to high number of voice or SMS authentication attempts. If you are experiencing this error, you can try another method, such as Authenticator App or verification code, or reach out to your admin for support.
6565
* Blocked caller ID on a single device.
6666
* Review any blocked numbers configured on the device.
6767
* Wrong phone number or incorrect country/region code, or confusion between personal phone number versus work phone number.

articles/active-directory/authentication/howto-sspr-windows.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ The following limitations apply to using SSPR from the Windows sign-in screen:
4848
- The combination of the following specific three settings can cause this feature to not work.
4949
- Interactive logon: Do not require CTRL+ALT+DEL = Disabled
5050
- *DisableLockScreenAppNotifications* = 1 or Enabled
51-
- Windows SKU isn't Home or Professional edition
51+
- Windows SKU is Home edition
5252

5353
> [!NOTE]
5454
> These limitations also apply to Windows Hello for Business PIN reset from the device lock screen.

0 commit comments

Comments
 (0)