Skip to content

Commit 5b636df

Browse files
authored
Merge pull request #234651 from MicrosoftDocs/main
Publish to live, Monday 4 AM PST, 4/17
2 parents ff58ad1 + a31778b commit 5b636df

File tree

69 files changed

+719
-546
lines changed

Some content is hidden

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

69 files changed

+719
-546
lines changed

articles/active-directory/develop/includes/web-api/quickstart-aspnet-core.md

Lines changed: 5 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ ms.service: active-directory
88
ms.subservice: develop
99
ms.topic: include
1010
ms.workload: identity
11-
ms.date: 12/09/2022
11+
ms.date: 04/16/2023
1212
ms.author: cwerner
1313
ms.reviewer: jmprieur
1414
ms.custom: devx-track-csharp, "scenarios:getting-started", "languages:aspnet-core", mode-api, engagement-fy23
@@ -48,10 +48,6 @@ First, register the web API in your Azure AD tenant and add a scope by following
4848

4949
[Download the ASP.NET Core solution](https://github.com/Azure-Samples/active-directory-dotnet-native-aspnetcore-v2/archive/aspnetcore3-1.zip) from GitHub.
5050

51-
> [!Note]
52-
> The code sample currently targets ASP.NET Core 3.1. The sample can be updated to use .NET Core 6.0 and is covered in the following steps: [Update the sample code to ASP.NET Core 6.0](#step-4-update-the-sample-code-to-aspnet-core-60)
53-
This quickstart will be deprecated in the near future and will be updated to use .NET 6.0.
54-
5551
## Step 3: Configure the ASP.NET Core project
5652

5753
In this step, the sample code will be configured to work with the app registration that was created earlier.
@@ -74,26 +70,7 @@ In this step, the sample code will be configured to work with the app registrati
7470

7571
For this quickstart, don't change any other values in the *appsettings.json* file.
7672

77-
### Step 4: Update the sample code to ASP.NET Core 6.0
78-
79-
To update this code sample to target ASP.NET Core 6.0, follow these steps:
80-
81-
1. Open webapi.csproj
82-
1. Remove the following line:
83-
84-
```xml
85-
<TargetFramework>netcoreapp3.1</TargetFramework>
86-
```
87-
88-
1. Add the following line in its place:
89-
90-
```xml
91-
<TargetFramework>netcoreapp6.0</TargetFramework>
92-
```
93-
94-
This step will ensure that the sample is targeting the .NET Core 6.0 framework.
95-
96-
### Step 5: Run the sample
73+
### Step 4: Run the sample
9774

9875
1. Open a terminal and change directory to the project folder.
9976

@@ -167,31 +144,28 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment env)
167144
namespace webapi.Controllers
168145
{
169146
[Authorize]
147+
[RequiredScope("access_as_user")]
170148
[ApiController]
171149
[Route("[controller]")]
172150
public class WeatherForecastController : ControllerBase
173151
```
174152

175153
### Validation of scope in the controller
176154

177-
The code in the API verifies that the required scopes are in the token by using `HttpContext.VerifyUserHasAnyAcceptedScope(scopeRequiredByApi);`:
155+
The code in the API verifies that the required scopes are in the token by using `[RequiredScope("access_as_user")]` attribute:
178156

179157
```csharp
180158
namespace webapi.Controllers
181159
{
182160
[Authorize]
161+
[RequiredScope("access_as_user")]
183162
[ApiController]
184163
[Route("[controller]")]
185164
public class WeatherForecastController : ControllerBase
186165
{
187-
// The web API will only accept tokens 1) for users, and 2) having the "access_as_user" scope for this API
188-
static readonly string[] scopeRequiredByApi = new string[] { "access_as_user" };
189-
190166
[HttpGet]
191167
public IEnumerable<WeatherForecast> Get()
192168
{
193-
HttpContext.VerifyUserHasAnyAcceptedScope(scopeRequiredByApi);
194-
195169
// some code here
196170
}
197171
}

articles/active-directory/develop/includes/web-app/quickstart-aspnet-core.md

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ ms.subservice: develop
1010
ms.topic: quickstart
1111
ms.workload: identity
1212

13-
ms.date: 12/19/2022
13+
ms.date: 04/16/2023
1414
ms.author: cwerner
1515

1616
ms.reviewer: jmprieur
@@ -50,10 +50,6 @@ See [How the sample works](#how-the-sample-works) for an illustration.
5050

5151
[Download the ASP.NET Core solution](https://github.com/Azure-Samples/active-directory-aspnetcore-webapp-openidconnect-v2/archive/aspnetcore3-1-callsgraph.zip)
5252

53-
> [!Note]
54-
> The code sample currently targets ASP.NET Core 3.1. The sample can be updated to use .NET Core 6.0 and is covered in the following steps: [Update the sample code to ASP.NET Core 6.0](#step-4-update-the-sample-code-to-aspnet-core-60)
55-
This quickstart will be deprecated in the near future and will be updated to use .NET 6.0.
56-
5753
### Step 3: Configure your ASP.NET Core project
5854

5955
1. Extract the *.zip* file to a local folder that's close to the root of the disk to avoid errors caused by path length limitations on Windows. For example, extract to *C:\Azure-Samples*.
@@ -74,27 +70,8 @@ This quickstart will be deprecated in the near future and will be updated to use
7470
- Replace `Enter_the_Client_Secret_Here` with the **Client secret** that was created and recorded in an earlier step.
7571

7672
For this quickstart, don't change any other values in the *appsettings.json* file.
77-
78-
### Step 4: Update the sample code to ASP.NET Core 6.0
79-
80-
To update this code sample to target ASP.NET Core 6.0, follow these steps:
81-
82-
1. Open WebApp-OpenIDConnect-DotNet.csproj
83-
1. Remove the following line:
84-
85-
```xml
86-
<TargetFramework>netcoreapp3.1</TargetFramework>
87-
```
88-
89-
1. Add the following line in its place:
90-
91-
```xml
92-
<TargetFramework>netcoreapp6.0</TargetFramework>
93-
```
94-
95-
This step will ensure that the sample is targeting the .NET Core 6.0 framework.
9673

97-
### Step 5: Build and run the application
74+
### Step 4: Build and run the application
9875

9976
Build and run the app in Visual Studio by selecting the **Debug** menu > **Start Debugging**, or by pressing the F5 key.
10077

articles/active-directory/develop/web-app-quickstart-portal-node-js-ciam.md

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,25 +16,13 @@ ms.date: 04/12/2023
1616
# Portal quickstart for React SPA
1717

1818
> In this quickstart, you download and run a code sample that demonstrates how a React single-page application (SPA) can sign in users with Azure AD CIAM.
19-
20-
> [!div renderon="portal" id="display-on-portal" class="sxs-lookup"]
21-
> ## Prerequisites
22-
>
23-
> * Azure subscription - [Create an Azure subscription for free](https://azure.microsoft.com/free/?WT.mc_id=A261C142F)
24-
> * [Node.js](https://nodejs.org/en/download/)
25-
> * [Visual Studio Code](https://code.visualstudio.com/download) or another code editor
26-
>
27-
> ## Run the sample
2819
>
29-
> 1. Unzip the downloaded file.
30-
>
31-
> 1. In your terminal, locate the folder that contains the `package.json` file, then run the following command:
20+
> [!div renderon="portal" id="display-on-portal" class="sxs-lookup"]
21+
> 1. Make sure you've installed [Node.js](https://nodejs.org/en/download/).
3222
>
23+
> 1. Unzip the sample, `cd` into the folder that contains `package.json`, then run the following commands:
3324
> ```console
3425
> npm install && npm start
3526
> ```
36-
>
37-
> 1. Open your browser and visit `http://locahost:3000`.
38-
>
39-
> 1. Select the **Sign-in** link on the navigation bar, then follow the prompts.
27+
> 1. Open your browser, visit `http://locahost:3000`, select **Sign-in** link, then follow the prompts.
4028
>

articles/active-directory/external-identities/authentication-conditional-access.md

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ services: active-directory
66
ms.service: active-directory
77
ms.subservice: B2B
88
ms.topic: conceptual
9-
ms.date: 04/03/2023
9+
ms.date: 04/17/2023
1010

1111
ms.author: mimart
1212
author: msmimart
@@ -64,13 +64,13 @@ The following diagram illustrates the flow when email one-time passcode authenti
6464
| Step | Description |
6565
|--------------|-----------------------|
6666
| **1** |The user requests access to a resource in another tenant. The resource redirects the user to its resource tenant, a trusted IdP.|
67-
| **2** | The resource tenant identifies the user as an [external email one-time passcode (OTP) user](./one-time-passcode.md) and sends an email with the OTP to the user.|
67+
| **2** | The resource tenant identifies the user as an external email one-time passcode (OTP) user and sends an email with the OTP to the user.|
6868
| **3** | The user retrieves the OTP and submits the code. The resource tenant evaluates the user against its Conditional Access policies.
6969
| **4** | Once all Conditional Access policies are satisfied, the resource tenant issues a token and redirects the user to its resource. |
7070

7171
## Conditional Access for external users
7272

73-
Organizations can enforce [Conditional Access](../conditional-access/overview.md) policies for external B2B collaboration and B2B direct connect users in the same way that they’re enabled for full-time employees and members of the organization. With the introduction of cross-tenant access settings, you can also trust MFA and device claims from external Azure AD organizations. This section describes important considerations for applying Conditional Access to users outside of your organization.
73+
Organizations can enforce Conditional Access policies for external B2B collaboration and B2B direct connect users in the same way that they’re enabled for full-time employees and members of the organization. With the introduction of cross-tenant access settings, you can also trust MFA and device claims from external Azure AD organizations. This section describes important considerations for applying Conditional Access to users outside of your organization.
7474

7575
### Assigning Conditional Access policies to external user types
7676

@@ -81,7 +81,7 @@ When configuring a Conditional Access policy, you have granular control over the
8181
- **B2B direct connect users** - External users who are able to access your resources via B2B direct connect, which is a mutual, two-way connection with another Azure AD organization that allows single sign-on access to certain Microsoft applications (currently, Microsoft Teams Connect shared channels). B2B direct connect users don’t have a presence in your Azure AD organization, but are instead managed from within the application (for example, by the Teams shared channel owner).
8282
- **Local guest users** - Local guest users have credentials that are managed in your directory. Before Azure AD B2B collaboration was available, it was common to collaborate with distributors, suppliers, vendors, and others by setting up internal credentials for them and designating them as guests by setting the user object UserType to Guest.
8383
- **Service provider users** - Organizations that serve as cloud service providers for your organization (the isServiceProvider property in the Microsoft Graph [partner-specific configuration](/graph/api/resources/crosstenantaccesspolicyconfigurationpartner) is true).
84-
- **Other external users** - Applies to any users who don't fall into the categories above, but who are not considered internal members of your organization, meaning they don't authenticate internally via Azure AD, and the user object created in the resource Azure AD directory does not have a UserType of Member.
84+
- **Other external users** - Applies to any users who don't fall into the categories above, but who aren't considered internal members of your organization, meaning they don't authenticate internally via Azure AD, and the user object created in the resource Azure AD directory doesn't have a UserType of Member.
8585

8686
>[!NOTE]
8787
> The "All guest and external users" selection has now been replaced with "Guest and external users" and all its sub types. For customers who previously had a Condtional Access policy with "All guest and external users" selected will now see "Guest and external users" along with all sub types being selected. This change in UX does not have any functional impact on how policy is evaluated by Conditional Access backend. The new selection provides customers the needed granularity to choose specifc types of guest and external users to include/exclude from user scope when creating their Conditional Access policy.
@@ -169,7 +169,7 @@ The following PowerShell cmdlets are available to *proof up* or request MFA regi
169169

170170
### Authentication strength policies for external users
171171

172-
[Authentication strength](https://aka.ms/b2b-auth-strengths) is a Conditional Access control that lets you define a specific combination of multifactor authentication (MFA) methods that an external user must complete to access your resources. This control is especially useful for restricting external access to sensitive apps in your organization because you can enforce specific authentication methods, such as a phishing-resistant method, for external users.
172+
Authentication strength is a Conditional Access control that lets you define a specific combination of multifactor authentication (MFA) methods that an external user must complete accessing your resources. This control is especially useful for restricting external access to sensitive apps in your organization because you can enforce specific authentication methods, such as a phishing-resistant method, for external users.
173173

174174
You also have the ability to apply authentication strength to the different types of [guest or external users](#assigning-conditional-access-policies-to-external-user-types) that you collaborate or connect with. This means you can enforce authentication strength requirements that are unique to your B2B collaboration, B2B direct connect, and other external access scenarios.
175175

@@ -229,7 +229,7 @@ When device trust settings are enabled, Azure AD checks a user's authentication
229229
230230
### Device filters
231231

232-
When creating Conditional Access policies for external users, you can evaluate a policy based on the device attributes of a registered device in Azure AD. By using the *filter for devices* condition, you can target specific devices using the [supported operators and properties](../conditional-access/concept-condition-filters-for-devices.md#supported-operators-and-device-properties-for-filters) and the other available assignment conditions in your Conditional Access policies.
232+
When creating Conditional Access policies for external users, you can evaluate a policy based on the device attributes of a registered device in Azure AD. By using the *filter for devices* condition, you can target specific devices using the supported operators and properties and the other available assignment conditions in your Conditional Access policies.
233233

234234
Device filters can be used together with cross-tenant access settings to base policies on devices that are managed in other organizations. For example, suppose you want to block devices from an external Azure AD tenant based on a specific device attribute. You can set up a device attribute-based policy by doing the following:
235235

@@ -279,7 +279,5 @@ For more information, see [Identity Protection and B2B users](../identity-protec
279279
For more information, see the following articles:
280280

281281
- [Zero Trust policies for allowing guest access and B2B external user access](/microsoft-365/security/office-365-security/identity-access-policies-guest-access?view=o365-worldwide&preserve-view=true)
282-
- [What is Azure AD B2B collaboration?](./what-is-b2b.md)
283282
- [Identity Protection and B2B users](../identity-protection/concept-identity-protection-b2b.md)
284-
- [External Identities pricing](https://azure.microsoft.com/pricing/details/active-directory/external-identities/)
285283
- [Frequently Asked Questions (FAQs)](./faq.yml)

articles/active-directory/manage-apps/configure-permission-classifications.md

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ ms.workload: identity
1010
ms.topic: how-to
1111
ms.date: 3/28/2023
1212
ms.author: jomondi
13-
ms.reviewer: arvindh, luleon, phsignor, jawoods
13+
ms.reviewer: phsignor, jawoods
1414
ms.custom: contperf-fy21q2
1515
zone_pivot_groups: enterprise-apps-all
1616

@@ -21,7 +21,7 @@ zone_pivot_groups: enterprise-apps-all
2121

2222
In this article, you learn how to configure permissions classifications in Azure Active Directory (Azure AD). Permission classifications allow you to identify the impact that different permissions have according to your organization's policies and risk evaluations. For example, you can use permission classifications in consent policies to identify the set of permissions that users are allowed to consent to.
2323

24-
Currently, only the "Low impact" permission classification is supported. Only delegated permissions that don't require admin consent can be classified as "Low impact".
24+
Three permission classifications are supported: "Low", "Medium" (preview), and "High" (preview). Currently, only delegated permissions that don't require admin consent can be classified.
2525

2626
The minimum permissions needed to do basic sign-in are `openid`, `profile`, `email`, and `offline_access`, which are all delegated permissions on the Microsoft Graph. With these permissions an app can read details of the signed-in user's profile, and can maintain this access even when the user is no longer using the app.
2727

@@ -30,7 +30,7 @@ The minimum permissions needed to do basic sign-in are `openid`, `profile`, `ema
3030
To configure permission classifications, you need:
3131

3232
- An Azure account with an active subscription. [Create an account for free](https://azure.microsoft.com/free/?WT.mc_id=A261C142F).
33-
- One of the following roles: A global administrator, or owner of the service principal.
33+
- One of the following roles: Global Administrator, Application Administrator, or Cloud Application Administrator
3434

3535
## Manage permission classifications
3636

@@ -40,7 +40,8 @@ Follow these steps to classify permissions using the Azure portal:
4040

4141
1. Sign in to the [Azure portal](https://portal.azure.com) as a [Global Administrator](../roles/permissions-reference.md#global-administrator), [Application Administrator](../roles/permissions-reference.md#application-administrator), or [Cloud Application Administrator](../roles/permissions-reference.md#cloud-application-administrator)
4242
1. Select **Azure Active Directory** > **Enterprise applications** > **Consent and permissions** > **Permission classifications**.
43-
1. Choose **Add permissions** to classify another permission as "Low impact".
43+
1. Choose the tab for the permission classification you'd like to update.
44+
1. Choose **Add permissions** to classify another permission.
4445
1. Select the API and then select the delegated permission(s).
4546

4647
In this example, we've classified the minimum set of permission required for single sign-on:
@@ -57,7 +58,7 @@ You can use the latest [Azure AD PowerShell](/powershell/module/azuread/?preserv
5758
Run the following command to connect to Azure AD PowerShell. To consent to the required scopes, sign in with one of the roles listed in the prerequisite section of this article.
5859

5960
```powershell
60-
Connect-AzureAD -Scopes
61+
Connect-AzureAD
6162
```
6263

6364
### List the current permission classifications
@@ -169,13 +170,9 @@ Connect-MgGraph -Scopes "Policy.ReadWrite.PermissionGrant".
169170

170171
```powershell
171172
$params = @{
172-
173-
PermissionId = $delegatedPermission.Id
174-
175-
PermissionName = $delegatedPermission.Value
176-
177-
Classification = "Low"
178-
173+
PermissionId = $delegatedPermission.Id
174+
PermissionName = $delegatedPermission.Value
175+
Classification = "Low"
179176
}
180177
181178
New-MgServicePrincipalDelegatedPermissionClassification -ServicePrincipalId $api.Id -BodyParameter $params
@@ -192,7 +189,7 @@ Connect-MgGraph -Scopes "Policy.ReadWrite.PermissionGrant".
192189
1. Find the delegated permission classification you wish to remove:
193190

194191
```powershell
195-
$classifications= Get-MgServicePrincipalDelegatedPermissionClassification -ServicePrincipalId $api.Id
192+
$classifications = Get-MgServicePrincipalDelegatedPermissionClassification -ServicePrincipalId $api.Id
196193
197194
$classificationToRemove = $classifications | Where-Object {$_.PermissionName -eq "openid"}
198195
```
@@ -242,4 +239,4 @@ DELETE https://graph.microsoft.com/v1.0/servicePrincipals(appId='00000003-0000-0
242239
## Next steps
243240

244241
- [Manage app consent policies](manage-app-consent-policies.md)
245-
- [Permissions and consent in the Microsoft identity platform](../develop/v2-permissions-and-consent.md)
242+
- [Permissions and consent in the Microsoft identity platform](../develop/v2-permissions-and-consent.md)

articles/aks/azure-blob-csi.md

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
title: Use Container Storage Interface (CSI) driver for Azure Blob storage on Azure Kubernetes Service (AKS)
33
description: Learn how to use the Container Storage Interface (CSI) driver for Azure Blob storage in an Azure Kubernetes Service (AKS) cluster.
44
ms.topic: article
5-
ms.date: 03/29/2023
5+
ms.date: 04/13/2023
66

77
---
88

@@ -141,9 +141,8 @@ To have a storage volume persist for your workload, you can use a StatefulSet. T
141141
volumeClaimTemplates:
142142
- metadata:
143143
name: persistent-storage
144-
annotations:
145-
volume.beta.kubernetes.io/storage-class: azureblob-nfs-premium
146144
spec:
145+
storageClassName: azureblob-nfs-premium
147146
accessModes: ["ReadWriteMany"]
148147
resources:
149148
requests:
@@ -191,9 +190,8 @@ To have a storage volume persist for your workload, you can use a StatefulSet. T
191190
volumeClaimTemplates:
192191
- metadata:
193192
name: persistent-storage
194-
annotations:
195-
volume.beta.kubernetes.io/storage-class: azureblob-fuse-premium
196193
spec:
194+
storageClassName: azureblob-fuse-premium
197195
accessModes: ["ReadWriteMany"]
198196
resources:
199197
requests:

0 commit comments

Comments
 (0)