Skip to content

Commit 53e6f1b

Browse files
authored
Merge pull request #229476 from MicrosoftDocs/main
3/03 PM Publish
2 parents 23d25dd + cd87083 commit 53e6f1b

File tree

1,208 files changed

+5269
-38624
lines changed

Some content is hidden

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

1,208 files changed

+5269
-38624
lines changed

.openpublishing.redirection.healthcare-apis.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -661,6 +661,10 @@
661661
"redirect_url": "/azure/healthcare-apis/iot/device-messages-through-iot-hub",
662662
"redirect_document_id": false
663663
},
664+
{ "source_path_from_root": "/articles/healthcare-apis/iot/how-to-create-mappings-copies.md",
665+
"redirect_url": "/azure/healthcare-apis/iot/how-to-use-mapping-debugger",
666+
"redirect_document_id": false
667+
},
664668
{ "source_path_from_root": "/articles/healthcare-apis/events/events-display-metrics.md",
665669
"redirect_url": "/azure/healthcare-apis/events/events-use-metrics",
666670
"redirect_document_id": false

.openpublishing.redirection.json

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7784,15 +7784,25 @@
77847784
"redirect_document_id": false
77857785
},
77867786
{
7787-
"source_path_from_root": "/articles/azure-maps/mobility-service-data-structure.md ",
7787+
"source_path_from_root": "/articles/azure-maps/mobility-service-data-structure.md",
77887788
"redirect_url": "/azure/azure-maps",
77897789
"redirect_document_id": false
77907790
},
77917791
{
7792-
"source_path_from_root": "/articles/azure-maps/power-bi-visual-getting-started.md ",
7792+
"source_path_from_root": "/articles/azure-maps/power-bi-visual-getting-started.md",
77937793
"redirect_url": "/azure/azure-maps/power-bi-visual-get-started",
77947794
"redirect_document_id": false
77957795
},
7796+
{
7797+
"source_path_from_root": "/articles/azure-maps/tutorial-creator-wfs.md",
7798+
"redirect_url": "/azure/azure-maps/how-to-creator-wfs",
7799+
"redirect_document_id": false
7800+
},
7801+
{
7802+
"source_path_from_root": "/articles/azure-maps/tutorial-creator-feature-stateset.md",
7803+
"redirect_url": "/azure/azure-maps/how-to-creator-feature-stateset",
7804+
"redirect_document_id": false
7805+
},
77967806
{
77977807
"source_path_from_root": "/articles/azure-portal/resource-group-portal-linked-resources.md",
77987808
"redirect_url": "/azure/azure-portal/azure-portal-dashboards",

.openpublishing.redirection.virtual-desktop.json

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,41 @@
134134
"source_path_from_root": "/articles/virtual-desktop/powershell-module.md",
135135
"redirect_url": "/azure/virtual-desktop/cli-powershell",
136136
"redirect_document_id": true
137+
},
138+
{
139+
"source_path_from_root": "/articles/virtual-desktop/deploy-azure-ad-joined-vm.md",
140+
"redirect_url": "/azure/virtual-desktop/azure-ad-joined-session-hosts",
141+
"redirect_document_id": true
142+
},
143+
{
144+
"source_path_from_root": "/articles/virtual-desktop/configure-vm-gpu.md",
145+
"redirect_url": "/azure/virtual-desktop/enable-gpu-acceleration",
146+
"redirect_document_id": true
147+
},
148+
{
149+
"source_path_from_root": "/articles/virtual-desktop/create-validation-host-pool.md",
150+
"redirect_url": "/azure/virtual-desktop/configure-validation-environment",
151+
"redirect_document_id": true
152+
},
153+
{
154+
"source_path_from_root": "/articles/virtual-desktop/expand-existing-host-pool.md",
155+
"redirect_url": "/azure/virtual-desktop/add-session-hosts-host-pool",
156+
"redirect_document_id": true
157+
},
158+
{
159+
"source_path_from_root": "/articles/virtual-desktop/create-host-pools-azure-marketplace.md",
160+
"redirect_url": "/azure/virtual-desktop/create-host-pool",
161+
"redirect_document_id": true
162+
},
163+
{
164+
"source_path_from_root": "/articles/virtual-desktop/create-host-pools-powershell.md",
165+
"redirect_url": "/azure/virtual-desktop/create-host-pool",
166+
"redirect_document_id": false
167+
},
168+
{
169+
"source_path_from_root": "/articles/virtual-desktop/deploy-windows-server-virtual-machine.md",
170+
"redirect_url": "/azure/virtual-desktop/add-session-hosts-host-pool",
171+
"redirect_document_id": false
137172
}
138173
]
139174
}

articles/active-directory/app-provisioning/plan-cloud-hr-provision.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ Azure AD uses this integration to enable the following cloud HR application (app
2525
- **Provision cloud-only users to Azure AD:** In scenarios where Active Directory isn't used, provision users directly from the cloud HR app to Azure AD.
2626
- **Write back to the cloud HR app:** Write the email addresses and username attributes from Azure AD back to the cloud HR app.
2727

28+
The following video provides guidance on planning your HR-driven provisioning integrations.
29+
30+
> [!VIDEO https://www.youtube-nocookie.com/embed/HsdBt40xEHs]
31+
2832
> [!NOTE]
2933
> This deployment plan shows you how to deploy your cloud HR app workflows with Azure AD user provisioning. For information on how to deploy automatic user provisioning to software as a service (SaaS) apps, see [Plan an automatic user provisioning deployment](./plan-auto-user-provisioning.md).
3034
@@ -90,7 +94,8 @@ You also need a valid Azure AD Premium P1 or higher subscription license for eve
9094
| Videos | [What is user provisioning in Active Azure Directory?](https://youtu.be/_ZjARPpI6NI) |
9195
| | [How to deploy user provisioning in Active Azure Directory](https://youtu.be/pKzyts6kfrw) |
9296
| Tutorials | [List of tutorials on how to integrate SaaS apps with Azure AD](../saas-apps/tutorial-list.md) |
93-
| | [Tutorial: Configure Workday for automatic user provisioning](../saas-apps/workday-inbound-tutorial.md#frequently-asked-questions-faq) |
97+
| | [Tutorial: Configure automatic user provisioning with Workday](../saas-apps/workday-inbound-tutorial.md) |
98+
| | [Tutorial: Configure automatic user provisioning with SAP SuccessFactors](../saas-apps/sap-successfactors-inbound-provisioning-tutorial.md) |
9499
| FAQ | [Automated user provisioning](../app-provisioning/user-provisioning.md#what-applications-and-systems-can-i-use-with-azure-ad-automatic-user-provisioning) |
95100
| | [Provisioning from Workday to Azure AD](../saas-apps/workday-inbound-tutorial.md#frequently-asked-questions-faq) |
96101

articles/active-directory/authentication/concept-certificate-based-authentication-certificateuserids.md

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -141,34 +141,28 @@ IIF(IsPresent([alternativeSecurityId]),
141141

142142
## Look up certificateUserIds using Microsoft Graph queries
143143

144-
Tenant admins can run MS Graph queries to find all the users with a given certificateUserId value.
144+
Authorized callers can run Microsoft Graph queries to find all the users with a given certificateUserId value. On the Microsoft Graph [user](/graph/api/resources/user) object, the collection of certificateUserIds are stored in the **authorizationInfo** property.
145145

146-
GET all user objects that have the value '[email protected]' value in certificateUserIds:
146+
To retrieve all user objects that have the value '[email protected]' in certificateUserIds:
147147

148-
```http
149-
GET https://graph.microsoft.com/v1.0/users?$filter=certificateUserIds/any(x:x eq '[email protected]')
150-
```
151-
152-
```http
153-
GET https://graph.microsoft.com/v1.0/users?$filter=startswith(certificateUserIds, '[email protected]')
148+
```msgraph-interactive
149+
GET https://graph.microsoft.com/v1.0/users?$filter=authorizationInfo/certificateUserIds/any(x:x eq '[email protected]')&$count=true
150+
ConsistencyLevel: eventual
154151
```
155152

156-
```http
157-
GET https://graph.microsoft.com/v1.0/users?$filter=certificateUserIds eq '[email protected]'
158-
```
153+
You can also use the `not` and `startsWith` operators to match the filter condition. To filter against the certificateUserIds object, the request must include the `$count=true` query string and the **ConsistencyLevel** header set to `eventual`.
159154

160-
## Update certificate user IDs using Microsoft Graph queries
161-
PATCH the user object certificateUserIds value for a given userId
155+
## Update certificateUserIds using Microsoft Graph queries
156+
157+
Run a PATCH request to update the certificateUserIds for a given user.
162158

163159
#### Request body:
164160

165161
```http
166-
PATCH https://graph.microsoft.us/v1.0/users/{id}
162+
PATCH https://graph.microsoft.com/v1.0/users/{id}
167163
Content-Type: application/json
168-
{
169164
170-
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users(authorizationInfo,department)/$entity",
171-
"department": "Accounting",
165+
{
172166
"authorizationInfo": {
173167
"certificateUserIds": [
174168
"X509:<PN>123456789098765@mil"

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ Configure both the **Notify users on password resets** and the **Notify all admi
194194
> - Public: [email protected]
195195
> - China: [email protected]
196196
> - Government: [email protected]
197+
>
197198
> If you observe issues in receiving notifications, please check your spam settings.
198199
199200
### Customization settings
Lines changed: 41 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,74 @@
11
---
22
title: Increase the resilience of authentication and authorization in daemon applications you develop
3-
description: Guidance for increasing resiliency of authentication and authorization in daemon application using the Microsoft identity platform
3+
description: Learn to increase authentication and authorization resiliency in daemon application using the Microsoft identity platform
44
services: active-directory
55
ms.service: active-directory
66
ms.subservice: fundamentals
77
ms.workload: identity
88
ms.topic: how-to
9-
author: janicericketts
9+
author: jricketts
1010
ms.author: jricketts
1111
manager: martinco
12-
ms.date: 11/23/2020
12+
ms.date: 03/03/2023
1313
---
1414

1515
# Increase the resilience of authentication and authorization in daemon applications you develop
1616

17-
This article provides guidance on how developers can use the Microsoft identity platform and Azure Active Directory to increase the resilience of daemon applications. This includes background processes, services, server to server apps, and applications without users.
17+
Learn to use the Microsoft identity platform and Azure Active Directory (Azure AD) to increase the resilience of daemon applications. Find information about background processes, services, server to server apps, and applications without users.
1818

19-
![A daemon application making a call to Microsoft identity](media/resilience-daemon-app/calling-microsoft-identity.png)
19+
See, [What is the Microsoft identity platform?](../develop/v2-overview.md)
2020

21-
## Use Managed Identities for Azure Resources
21+
The following diagram illustrates a daemon application making a call to Microsoft identity platform.
2222

23-
Developers building daemon apps on Microsoft Azure can use [Managed Identities for Azure Resources](../managed-identities-azure-resources/overview.md). Managed Identities eliminate the need for developers to manage secrets and credentials. The feature improves resilience by avoiding mistakes around certificate expiry, rotation errors, or trust. It also has several built-in features meant specifically to increase resilience.
23+
![A daemon application making a call to Microsoft identity platform.](media/resilience-daemon-app/calling-microsoft-identity.png)
2424

25-
Managed Identities use long lived access tokens and information from Microsoft Identity to proactively acquire new tokens within a large window of time before the existing token expires. Your app can continue to run while attempting to acquire a new token.
25+
## Managed identities for Azure resources
2626

27-
Managed Identities also use regional endpoints to improve performance and resilience against out-of-region failures. Using a regional endpoint helps to keep all traffic inside a geographical area. For example, if your Azure Resource is in WestUS2, all the traffic, including Microsoft Identity generated traffic, should stay in WestUS2. This eliminates possible points of failure by consolidating the dependencies of your service.
27+
If you're building daemon apps on Microsoft Azure, use managed identities for Azure resources, which handle secrets and credentials. The feature improves resilience by handling certificate expiry, rotation, or trust.
2828

29-
## Use the Microsoft Authentication Library
29+
See, [What are managed identities for Azure resources?](../managed-identities-azure-resources/overview.md)
3030

31-
Developers of daemon apps who do not use Managed Identities can use the [Microsoft Authentication Library (MSAL)](../develop/msal-overview.md), which makes implementing authentication and authorization simple, and automatically uses best practices for resilience. MSAL will make the process of providing the required Client Credentials easier. For example, your application does not need to implement creating and signing JSON Web Token assertions when using certificate-based credentials.
31+
Managed identities use long-lived access tokens and information from Microsoft identity platform to acquire new tokens before tokens expire. Your app runs while acquiring new tokens.
3232

33-
### Use Microsoft.Identity.Web for .NET Developers
33+
Managed identities use regional endpoints, which help prevent out-of-region failures by consolidating service dependencies. Regional endpoints help keep traffic in a geographical area. For example, if your Azure resource is in WestUS2, all traffic stays in WestUS2.
3434

35-
Developers building daemon apps on ASP.NET Core can use the [Microsoft.Identity.Web](../develop/microsoft-identity-web.md) library. This library is built on top of MSAL to make implementing authorization even easier for ASP.NET Core apps. It includes several [distributed token cache](https://github.com/AzureAD/microsoft-identity-web/wiki/token-cache-serialization#distributed-token-cache) strategies for distributed apps that can run in multiple regions.
35+
## Microsoft Authentication Library
36+
37+
If you develop daemon apps and don't use managed identities, use the Microsoft Authentication Library (MSAL) for authentication and authorization. MSAL eases the process of providing client credentials. For example, your application doesn't need to create and sign JSON web token assertions with certificate-based credentials.
38+
39+
See, [Overview of the Microsoft Authentication Library (MSAL)](../develop/msal-overview.md)
40+
41+
### Microsoft.Identity.Web for .NET developers
42+
43+
If you develop daemon apps on ASP.NET Core, use the Microsoft.Identity.Web library to ease authorization. It includes distributed token cache strategies for distributed apps that run in multiple regions.
44+
45+
Learn more:
46+
47+
* [Microsoft Identity Web authentication library](../develop/microsoft-identity-web.md)
48+
* [Distributed token cache](https://github.com/AzureAD/microsoft-identity-web/wiki/token-cache-serialization#distributed-token-cache)
3649

3750
## Cache and store tokens
3851

39-
If you are not using MSAL to implement authentication and authorization, you can implement some best practices for caching and storing tokens. MSAL implements and follows these best practices automatically.
52+
If you don't use MSAL for authentication and authorization, there are best practices for caching and storing tokens. MSAL implements and follows these best practices.
53+
54+
An application acquires tokens from an identity provider (IdP) to authorize the application to call protected APIs. When your app receives tokens, the response with the tokens contains an `expires\_in` property that tells the application how long to cache, and reuse, the token. Ensure applications use the `expires\_in` property to determine token lifespan. Confirm application don't attempt to decode an API access token. Using the cached token prevents unnecessary traffic between an app and Microsoft identity platform. Users are signed in to your application for the token's lifetime.
55+
56+
## HTTP 429 and 5xx error codes
57+
58+
Use the following sections to learn about HTTP 429 and 5xx error codes
4059

41-
An application acquires tokens from an Identity provider to authorize the application to call protected APIs. When your app receives tokens, the response that contains the tokens also contains an "expires\_in" property that tells the application how long to cache, and reuse, the token. It is important that applications use the "expires\_in" property to determine the lifespan of the token. Application must never attempt to decode an API access token. Using the cached token prevents unnecessary traffic between your app and Microsoft Identity. Your user can stay signed-in to your application for the length of that token's lifetime.
60+
### HTTP 429
4261

43-
## Properly handle service responses
62+
There are HTTP errors that affect resilience. If your application receives an HTTP 429 error code, Too Many Requests, Microsoft identity platform is throttling your requests, which prevents your app from receiving tokens. Ensure your apps don't attempt to acquire a token until the time in the **Retry-After** response field expires. The 429 error often indicates the application doesn't cache and reuse tokens correctly.
4463

45-
Finally, while applications should handle all error responses, there are some responses that can impact resilience. If your application receives an HTTP 429 response code, Too Many Requests, Microsoft Identity is throttling your requests. If your app continues to make too many requests, it will continue to be throttled preventing your app from receiving tokens. Your application should not attempt to acquire a token again until after the time, in seconds, in the "Retry-After" response field has passed. Receiving a 429 response is often an indication that the application is not caching and reusing tokens correctly. Developers should review how tokens are cached and reused in the application.
64+
### HTTP 5xx
4665

47-
When an application receives an HTTP 5xx response code the app must not enter a fast retry loop. When present, the application should honor the same "Retry-After" handling as it does for a 429 response. If no "Retry-After" header is provided by the response, we recommend implementing an exponential back-off retry with the first retry at least 5 seconds after the response.
66+
If an application receives an HTTP 5x error code, the app must not enter a fast retry loop. Ensure applications wait until the **Retry-After** field expires. If the response provides no Retry-After header, use an exponential back-off retry with the first retry, at least 5 seconds after the response.
4867

49-
When a request times out applications should not retry immediately. Implement an exponential back-off retry with the first retry at least 5 seconds after the response.
68+
When a request times out, confirm that applications don't retry immediately. Use the previously cited exponential back-off retry.
5069

5170
## Next steps
5271

53-
- [Build resilience into applications that sign-in users](resilience-client-app.md)
54-
- [Build resilience in your identity and access management infrastructure](resilience-in-infrastructure.md)
55-
- [Build resilience in your CIAM systems](resilience-b2c.md)
72+
* [Increase the resilience of authentication and authorization in client applications you develop](resilience-client-app.md)
73+
* [Build resilience in your identity and access management infrastructure](resilience-in-infrastructure.md)
74+
* [Build resilience in your customer identity and access management with Azure AD B2C](resilience-b2c.md)

0 commit comments

Comments
 (0)