Skip to content

Commit e1da8cc

Browse files
committed
Merge branch 'main' of https://github.com/MicrosoftDocs/azure-docs-pr into virtual-machines-batch-4
2 parents a3c7b3c + 714d776 commit e1da8cc

File tree

654 files changed

+12280
-6363
lines changed

Some content is hidden

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

654 files changed

+12280
-6363
lines changed

.openpublishing.redirection.healthcare-apis.json

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -586,15 +586,19 @@
586586
"redirect_document_id": false
587587
},
588588
{ "source_path_from_root": "/articles/healthcare-apis/iot/iot-data-flow.md",
589-
"redirect_url": "/azure/healthcare-apis/iot/understand-service",
589+
"redirect_url": "/azure/healthcare-apis/iot/overview-of-device-data-processing-stages",
590590
"redirect_document_id": false
591591
},
592592
{ "source_path_from_root": "/articles/healthcare-apis/iot/data-flow.md",
593-
"redirect_url": "/azure/healthcare-apis/iot/overview-of-device-message-processing-stages",
593+
"redirect_url": "/azure/healthcare-apis/iot/overview-of-device-data-processing-stages",
594594
"redirect_document_id": false
595595
},
596596
{ "source_path_from_root": "/articles/healthcare-apis/iot/understand-service.md",
597-
"redirect_url": "/azure/healthcare-apis/iot/overview-of-device-message-processing-stages",
597+
"redirect_url": "/azure/healthcare-apis/iot/overview-of-device-data-processing-stages",
598+
"redirect_document_id": false
599+
},
600+
{ "source_path_from_root": "/articles/healthcare-apis/iot/overview-of-device-message-processing-stages.md",
601+
"redirect_url": "/azure/healthcare-apis/iot/overview-of-device-data-processing-stages",
598602
"redirect_document_id": false
599603
},
600604
{ "source_path_from_root": "/articles/healthcare-apis/iot/how-to-use-device-mappings.md",
@@ -654,7 +658,11 @@
654658
"redirect_document_id": false
655659
},
656660
{ "source_path_from_root": "/articles/healthcare-apis/iot/how-to-use-iot-jsonpath-content-mappings.md",
657-
"redirect_url": "/azure/healthcare-apis/iot/how-to-use-iotjsonpathcontenttemplate-mappings",
661+
"redirect_url": "/azure/healthcare-apis/iot/how-to-use-iotjsonpathcontent-mappings",
662+
"redirect_document_id": false
663+
},
664+
{ "source_path_from_root": "/articles/healthcare-apis/iot/how-to-use-iotjsonpathcontenttemplate-mappings.md",
665+
"redirect_url": "/azure/healthcare-apis/iot/how-to-use-iotjsonpathcontent-mappings",
658666
"redirect_document_id": false
659667
},
660668
{ "source_path_from_root": "/articles/healthcare-apis/iot/deploy-new-button.md",

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ You need to deploy an app, which will serve as your external app. Your custom po
8888
"code" : "errorCode",
8989
"requestId": "requestId",
9090
"userMessage" : "The access code you entered is incorrect. Please try again.",
91-
"developerMessage" : `The The provided code ${req.body.accessCode} does not match the expected code for user.`,
91+
"developerMessage" : `The provided code ${req.body.accessCode} does not match the expected code for user.`,
9292
"moreInfo" :"https://docs.microsoft.com/en-us/azure/active-directory-b2c/string-transformations"
9393
};
9494
res.status(409).send(errorResponse);
@@ -133,7 +133,7 @@ You need to deploy an app, which will serve as your external app. Your custom po
133133
"code": "errorCode",
134134
"requestId": "requestId",
135135
"userMessage": "The access code you entered is incorrect. Please try again.",
136-
"developerMessage": "The The provided code 54321 does not match the expected code for user.",
136+
"developerMessage": "The provided code 54321 does not match the expected code for user.",
137137
"moreInfo": "https://docs.microsoft.com/en-us/azure/active-directory-b2c/string-transformations"
138138
}
139139
```

articles/active-directory-b2c/index.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ summary: >
77
brand: azure
88

99
metadata:
10-
title: Azure Active Directory B2C documentation # Required; page title displayed in search results. Include the brand. < 60 chars.
11-
description: Learn how to use Azure Active Directory B2C to customize and control how customers sign up, sign in, and manage their profiles when using your applications. # Required; article description that is displayed in search results. < 160 chars.
10+
title: Azure Active Directory B2C documentation
11+
description: Learn how to use Azure Active Directory B2C to customize and control how customers sign up, sign in, and manage their profiles when using your applications.
1212
services: active-directory-b2c
1313
ms.service: active-directory
1414
ms.subservice: B2C

articles/active-directory/app-provisioning/how-provisioning-works.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ originalUserPrincipalName = alias_theirdomain#EXT#@yourdomain
8888

8989
## Provisioning cycles: Initial and incremental
9090

91-
When Azure AD is the source system, the provisioning service uses the [Use delta query to track changes in Microsoft Graph data](/graph/delta-query-overview) to monitor users and groups. The provisioning service runs an initial cycle against the source system and target system, followed by periodic incremental cycles.
91+
When Azure AD is the source system, the provisioning service uses the [delta query to track changes in Microsoft Graph data](/graph/delta-query-overview) to monitor users and groups. The provisioning service runs an initial cycle against the source system and target system, followed by periodic incremental cycles.
9292

9393
### Initial cycle
9494

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ To quickly see SSPR in action and then come back to understand additional deploy
3838
> [!div class="nextstepaction"]
3939
> [Enable self-service password reset (SSPR)](tutorial-enable-sspr.md)
4040
41+
> [!TIP]
42+
> As a companion to this article, we recommend using the [Plan your self-service password reset deployment guide](https://go.microsoft.com/fwlink/?linkid=2221501) when signed in to the Microsoft 365 Admin Center. This guide will customize your experience based on your environment. To review best practices without signing in and activating automated setup features, go to the [M365 Setup portal](https://go.microsoft.com/fwlink/?linkid=2221600).
43+
4144
## Learn about SSPR
4245

4346
Learn more about SSPR. See [How it works: Azure AD self-service password reset](./concept-sspr-howitworks.md).

articles/active-directory/develop/application-model.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@ For an identity provider to know that a user has access to a particular app, bot
2828
* Decide if you want to allow users to sign in only if they belong to your organization. This architecture is known as a single-tenant application. Or, you can allow users to sign in by using any work or school account, which is known as a multi-tenant application. You can also allow personal Microsoft accounts or a social account from LinkedIn, Google, and so on.
2929
* Request scope permissions. For example, you can request the "user.read" scope, which grants permission to read the profile of the signed-in user.
3030
* Define scopes that define access to your web API. Typically, when an app wants to access your API, it will need to request permissions to the scopes you define.
31-
* Share a secret with the Microsoft identity platform that proves the app's identity. Using a secret is relevant in the case where the app is a confidential client application. A confidential client application is an application that can hold credentials securely. A trusted back-end server is required to store the credentials.
31+
* Share a secret with the Microsoft identity platform that proves the app's identity. Using a secret is relevant in the case where the app is a confidential client application. A confidential [client application](developer-glossary.md#client-application) is an application that can hold credentials securely, like a [web client](developer-glossary.md#web-client). A trusted back-end server is required to store the credentials.
3232

33-
After the app is registered, it's given a unique identifier that it shares with the Microsoft identity platform when it requests tokens. If the app is a [confidential client application](developer-glossary.md#client-application), it will also share the secret or the public key depending on whether certificates or secrets were used.
33+
After the app is registered, it's given a unique identifier that it shares with the Microsoft identity platform when it requests tokens. If the app is a confidential client application, it will also share the secret or the public key depending on whether certificates or secrets were used.
3434

3535
The Microsoft identity platform represents applications by using a model that fulfills two main functions:
3636

@@ -44,14 +44,14 @@ The Microsoft identity platform:
4444
* Provides infrastructure for implementing app provisioning within the app developer's tenant, and to any other Azure AD tenant.
4545
* Handles user consent during token request time and facilitates the dynamic provisioning of apps across tenants.
4646

47-
*Consent* is the process of a resource owner granting authorization for a client application to access protected resources, under specific permissions, on behalf of the resource owner. The Microsoft identity platform enables:
47+
[*Consent*](developer-glossary.md#consent) is the process of a resource owner granting authorization for a client application to access protected resources, under specific permissions, on behalf of the resource owner. The Microsoft identity platform enables:
4848

4949
* Users and administrators to dynamically grant or deny consent for the app to access resources on their behalf.
5050
* Administrators to ultimately decide what apps are allowed to do and which users can use specific apps, and how the directory resources are accessed.
5151

5252
## Multi-tenant apps
5353

54-
In the Microsoft identity platform, an [application object](developer-glossary.md#application-object) describes an application. At deployment time, the Microsoft identity platform uses the application object as a blueprint to create a [service principal](developer-glossary.md#service-principal-object), which represents a concrete instance of an application within a directory or tenant. The service principal defines what the app can actually do in a specific target directory, who can use it, what resources it has access to, and so on. The Microsoft identity platform creates a service principal from an application object through [consent](developer-glossary.md#consent).
54+
In the Microsoft identity platform, an [application object](developer-glossary.md#application-object) describes an application. At deployment time, the Microsoft identity platform uses the application object as a blueprint to create a [service principal](developer-glossary.md#service-principal-object), which represents a concrete instance of an application within a directory or tenant. The service principal defines what the app can actually do in a specific target directory, who can use it, what resources it has access to, and so on. The Microsoft identity platform creates a service principal from an application object through consent.
5555

5656
The following diagram shows a simplified Microsoft identity platform provisioning flow driven by consent. It shows two tenants: *A* and *B*.
5757

articles/active-directory/develop/includes/console-app/quickstart-netcore.md

Lines changed: 59 additions & 30 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/08/2022
11+
ms.date: 03/13/2023
1212
ms.author: owenrichards
1313
ms.reviewer: jmprieur
1414
ms.custom: devx-track-csharp, aaddev, identityplatformtop40, "scenarios:getting-started", "languages:aspnet-core", mode-other
@@ -73,7 +73,7 @@ This project can be run in either Visual Studio or Visual Studio for Mac and can
7373
1. In *appsettings.json*, replace the values of `Tenant`, `ClientId`, and `ClientSecret`. The value for the application (client) ID and the directory (tenant) ID, can be found in the app's **Overview** page on the Azure portal.
7474

7575
```json
76-
"Tenant": "Enter_the_Tenant_Id_Here",
76+
"TenantId": "Enter_the_Tenant_Id_Here",
7777
"ClientId": "Enter_the_Application_Id_Here",
7878
"ClientSecret": "Enter_the_Client_Secret_Here"
7979
```
@@ -120,65 +120,94 @@ In that code:
120120

121121
- `{ProjectFolder}` is the folder where you extracted the .zip file. An example is `C:\Azure-Samples\active-directory-dotnetcore-daemon-v2`.
122122

123-
A list of users in Azure Active Directory should be displayed as a result.
123+
The number of users in Azure Active Directory should be displayed as a result.
124124

125-
This quickstart application uses a client secret to identify itself as a confidential client. The client secret is added as a plain-text file to the project files. For security reasons, it is recommended to use a certificate instead of a client secret before considering the application as a production application. For more information on how to use a certificate, see [these instructions](https://github.com/Azure-Samples/active-directory-dotnetcore-daemon-v2/#variation-daemon-application-using-client-credentials-with-certificates).
125+
This quickstart application uses a client secret to identify itself as a confidential client. The client secret is added as a plain-text file to the project files. For security reasons, it's recommended to use a certificate instead of a client secret before considering the application as a production application. For more information on how to use a certificate, see [these instructions](https://github.com/Azure-Samples/active-directory-dotnetcore-daemon-v2/#variation-daemon-application-using-client-credentials-with-certificates).
126126

127127
## More information
128128

129129
This section provides an overview of the code required to sign in users. The overview can be useful to understand how the code works, what the main arguments are, and how to add sign-in to an existing .NET Core console application.
130130

131-
### MSAL.NET
131+
### Microsoft.Identity.Web.MicrosoftGraph
132132

133-
Microsoft Authentication Library (MSAL, in the [Microsoft.Identity.Client](https://www.nuget.org/packages/Microsoft.Identity.Client) package) is the library that's used to sign in users and request tokens for accessing an API protected by the Microsoft identity platform. This quickstart requests tokens by using the application's own identity instead of delegated permissions. The authentication flow in this case is known as a [client credentials OAuth flow](../../v2-oauth2-client-creds-grant-flow.md). For more information on how to use MSAL.NET with a client credentials flow, see [this article](https://aka.ms/msal-net-client-credentials).
133+
Microsoft Identity Web (in the [Microsoft.Identity.Web.TokenAcquisition](https://www.nuget.org/packages/Microsoft.Identity.Web.TokenAcquisition) package) is the library that's used to request tokens for accessing an API protected by the Microsoft identity platform. This quickstart requests tokens by using the application's own identity instead of delegated permissions. The authentication flow in this case is known as a [client credentials OAuth flow](../../v2-oauth2-client-creds-grant-flow.md). For more information on how to use MSAL.NET with a client credentials flow, see [this article](https://aka.ms/msal-net-client-credentials). Given the daemon app in this quickstart calls Microsoft Graph, you install the [Microsoft.Identity.Web.MicrosoftGraph](https://www.nuget.org/packages/Microsoft.Identity.Web.MicrosoftGraph) package, which handles automatically authenticated requests to Microsoft Graph (and references itself Microsoft.Identity.Web.TokenAcquisition)
134134

135-
MSAL.NET can be installed by running the following command in the Visual Studio Package Manager Console:
135+
Microsoft.Identity.Web.MicrosoftGraph can be installed by running the following command in the Visual Studio Package Manager Console:
136136

137137
```dotnetcli
138-
dotnet add package Microsoft.Identity.Client
138+
dotnet add package Microsoft.Identity.Web.MicrosoftGraph
139139
```
140140

141-
### MSAL initialization
141+
### Application initialization
142142

143-
Add the reference for MSAL by adding the following code:
143+
Add the reference for Microsoft.Identity.Web by adding the following code:
144144

145145
```csharp
146-
using Microsoft.Identity.Client;
146+
using Microsoft.Extensions.Configuration;
147+
using Microsoft.Extensions.DependencyInjection;
148+
using Microsoft.Graph;
149+
using Microsoft.Identity.Abstractions;
150+
using Microsoft.Identity.Web;
147151
```
148152

149-
Then, initialize MSAL with the following:
153+
Then, initialize the app with the following code:
150154

151155
```csharp
152-
IConfidentialClientApplication app;
153-
app = ConfidentialClientApplicationBuilder.Create(config.ClientId)
154-
.WithClientSecret(config.ClientSecret)
155-
.WithAuthority(new Uri(config.Authority))
156-
.Build();
156+
// Get the Token acquirer factory instance. By default it reads an appsettings.json
157+
// file if it exists in the same folder as the app (make sure that the
158+
// "Copy to Output Directory" property of the appsettings.json file is "Copy if newer").
159+
TokenAcquirerFactory tokenAcquirerFactory = TokenAcquirerFactory.GetDefaultInstance();
160+
161+
// Configure the application options to be read from the configuration
162+
// and add the services you need (Graph, token cache)
163+
IServiceCollection services = tokenAcquirerFactory.Services;
164+
services.AddMicrosoftGraph();
165+
// By default, you get an in-memory token cache.
166+
// For more token cache serialization options, see https://aka.ms/msal-net-token-cache-serialization
167+
168+
// Resolve the dependency injection.
169+
var serviceProvider = tokenAcquirerFactory.Build();
170+
```
171+
172+
This code uses the configuration defined in the appsettings.json file:
173+
174+
```json
175+
{
176+
"AzureAd": {
177+
"Instance": "https://login.microsoftonline.com/",
178+
"TenantId": "[Enter here the tenantID or domain name for your Azure AD tenant]",
179+
"ClientId": "[Enter here the ClientId for your application]",
180+
"ClientCredentials": [
181+
{
182+
"SourceType": "ClientSecret",
183+
"ClientSecret": "[Enter here a client secret for your application]"
184+
}
185+
]
186+
}
187+
}
157188
```
158189

159190
| Element | Description |
160191
|---------|---------|
161-
| `config.ClientSecret` | The client secret created for the application in the Azure portal. |
162-
| `config.ClientId` | The application (client) ID for the application registered in the Azure portal. You can find this value on the app's **Overview** page in the Azure portal. |
163-
| `config.Authority` | (Optional) The security token service (STS) endpoint for the user to authenticate. It's usually `https://login.microsoftonline.com/{tenant}` for the public cloud, where `{tenant}` is the name of your tenant or your tenant ID.|
192+
| `ClientSecret` | The client secret created for the application in the Azure portal. |
193+
| `ClientId` | The application (client) ID for the application registered in the Azure portal. This value can be found on the app's **Overview** page in the Azure portal. |
194+
| `Instance` | (Optional) The security token service (STS) could instance endpoint for the app to authenticate. It's usually `https://login.microsoftonline.com/` for the public cloud.|
195+
| `TenantId` | Name of the tenant or the tenant ID.|
164196

165-
For more information, see the [reference documentation for `ConfidentialClientApplication`](/dotnet/api/microsoft.identity.client.iconfidentialclientapplication).
197+
For more information, see the [reference documentation for `ConfidentialClientApplication`](/dotnet/api/microsoft.identity.web.tokenacquirerfactory).
166198

167-
### Requesting tokens
199+
### Calling Microsoft Graph
168200

169201
To request a token by using the app's identity, use the `AcquireTokenForClient` method:
170202

171203
```csharp
172-
result = await app.AcquireTokenForClient(scopes)
173-
.ExecuteAsync();
204+
GraphServiceClient graphServiceClient = serviceProvider.GetRequiredService<GraphServiceClient>();
205+
var users = await graphServiceClient.Users
206+
.Request()
207+
.WithAppOnly()
208+
.GetAsync();
174209
```
175210

176-
|Element| Description |
177-
|---------|---------|
178-
| `scopes` | Contains the requested scopes. For confidential clients, this value should use a format similar to `{Application ID URI}/.default`. This format indicates that the requested scopes are the ones that are statically defined in the app object set in the Azure portal. For Microsoft Graph, `{Application ID URI}` points to `https://graph.microsoft.com`. For custom web APIs, `{Application ID URI}` is defined in the Azure portal, under **Application Registration (Preview)** > **Expose an API**. |
179-
180-
For more information, see the [reference documentation for `AcquireTokenForClient`](/dotnet/api/microsoft.identity.client.confidentialclientapplication.acquiretokenforclient).
181-
182211
[!INCLUDE [Help and support](../../../../../includes/active-directory-develop-help-support-include.md)]
183212

184213
## Next steps

0 commit comments

Comments
 (0)