Skip to content

Commit 47a9f1f

Browse files
committed
Merge branch 'main' of https://github.com/MicrosoftDocs/azure-docs-pr into updateOverview
2 parents 18ae57e + 8940d87 commit 47a9f1f

File tree

632 files changed

+16294
-3221
lines changed

Some content is hidden

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

632 files changed

+16294
-3221
lines changed

.openpublishing.redirection.active-directory.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,16 @@
100100
"redirect_url": "/azure/active-directory/saas-apps/safety-culture-tutorial",
101101
"redirect_document_id": false
102102
},
103+
{
104+
"source_path_from_root": "/articles/active-directory/saas-apps/opentext-fax-tutorial.md",
105+
"redirect_url": "/azure/active-directory/saas-apps/xm-fax-and-xm-send-secure-tutorial",
106+
"redirect_document_id": false
107+
},
108+
{
109+
"source_path_from_root": "/articles/active-directory/saas-apps/opentext-directory-services-tutorial.md",
110+
"redirect_url": "/azure/active-directory/saas-apps/directory-services-tutorial",
111+
"redirect_document_id": false
112+
},
103113
{
104114
"source_path_from_root": "/articles/active-directory/saas-apps/firstbird-tutorial.md",
105115
"redirect_url": "/azure/active-directory/saas-apps/radancys-employee-referrals-tutorial",

.openpublishing.redirection.api-management.json

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,79 @@
11
{
22
"redirections": [
3+
{
4+
"source_path_from_root": "/articles/api-management/policies/authorize-request-using-external-authorizer.md",
5+
"redirect_url": "https://github.com/Azure/api-management-policy-snippets",
6+
"redirect_document_id": false
7+
},{
8+
"source_path_from_root": "/articles/api-management/policies/add-correlation-id.md",
9+
"redirect_url": "https://github.com/Azure/api-management-policy-snippets",
10+
"redirect_document_id": false
11+
},
12+
{
13+
"source_path_from_root": "/articles/api-management/policies/authorize-request-based-on-jwt-claims.md",
14+
"redirect_url": "https://github.com/Azure/api-management-policy-snippets",
15+
"redirect_document_id": false
16+
},
17+
{
18+
"source_path_from_root": "/articles/api-management/policies/cache-response.md",
19+
"redirect_url": "https://github.com/Azure/api-management-policy-snippets",
20+
"redirect_document_id": false
21+
},
22+
{
23+
"source_path_from_root": "/articles/api-management/policies/filter-ip-addresses-when-using-appgw.md",
24+
"redirect_url": "https://github.com/Azure/api-management-policy-snippets",
25+
"redirect_document_id": false
26+
},
27+
{
28+
"source_path_from_root": "/articles/api-management/policies/filter-response-content.md",
29+
"redirect_url": "https://github.com/Azure/api-management-policy-snippets",
30+
"redirect_document_id": false
31+
},
32+
{
33+
"source_path_from_root": "/articles/api-management/policies/generate-shared-access-signature.md",
34+
"redirect_url": "https://github.com/Azure/api-management-policy-snippets",
35+
"redirect_document_id": false
36+
},
37+
{
38+
"source_path_from_root": "/articles/api-management/policies/get-x-csrf-token-from-sap-gateway.md",
39+
"redirect_url": "https://github.com/Azure/api-management-policy-snippets",
40+
"redirect_document_id": false
41+
},
42+
{
43+
"source_path_from_root": "/articles/api-management/policies/index.md",
44+
"redirect_url": "https://github.com/Azure/api-management-policy-snippets",
45+
"redirect_document_id": false
46+
},
47+
{
48+
"source_path_from_root": "/articles/api-management/policies/log-errors-to-stackify.md",
49+
"redirect_url": "https://github.com/Azure/api-management-policy-snippets",
50+
"redirect_document_id": false
51+
},
52+
{
53+
"source_path_from_root": "/articles/api-management/policies/route-requests-based-on-size.md",
54+
"redirect_url": "https://github.com/Azure/api-management-policy-snippets",
55+
"redirect_document_id": false
56+
},
57+
{
58+
"source_path_from_root": "/articles/api-management/policies/send-request-context-info-to-backend-service.md",
59+
"redirect_url": "https://github.com/Azure/api-management-policy-snippets",
60+
"redirect_document_id": false
61+
},
62+
{
63+
"source_path_from_root": "/articles/api-management/policies/set-cache-duration.md",
64+
"redirect_url": "https://github.com/Azure/api-management-policy-snippets",
65+
"redirect_document_id": false
66+
},
67+
{
68+
"source_path_from_root": "/articles/api-management/policies/set-header-to-enable-backend-to-construct-urls.md",
69+
"redirect_url": "https://github.com/Azure/api-management-policy-snippets",
70+
"redirect_document_id": false
71+
},
72+
{
73+
"source_path_from_root": "/articles/api-management/policies/use-oauth2-for-authorization.md",
74+
"redirect_url": "https://github.com/Azure/api-management-policy-snippets",
75+
"redirect_document_id": false
76+
},
377
{
478
"source_path_from_root": "/articles/api-management/api-management-access-restriction-policies.md",
579
"redirect_url": "/azure/api-management/api-management-policies#access-restriction-policies",

.openpublishing.redirection.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
{
22
"redirections": [
3+
{
4+
"source_path": "articles/cloud-services-extended-support/deploy-visual-studio.md",
5+
"redirect_url": "/visualstudio/azure/cloud-services-extended-support?context=%2Fazure%2Fcloud-services-extended-support%2Fcontext%2Fcontext",
6+
"redirect_document_id": false
7+
},
38
{
49
"source_path": "articles/storsimple/storsimple-configure-backup-target-using-backup-exec.md",
510
"redirect_url": "/azure/storsimple/storsimple-overview",
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"$schema": "https://whatsnewapi.azurewebsites.net/schema",
3+
"docSetProductName": "Azure Active Directory for customers (CIAM)",
4+
"rootDirectory": "articles/active-directory/external-identities/customers/",
5+
"docLinkSettings": {
6+
"linkFormat": "relative",
7+
"relativeLinkPrefix": "/azure/active-directory/external-identities/customers"
8+
},
9+
"inclusionCriteria": {
10+
"omitPullRequestTitles" : false,
11+
"minAdditionsToFile" : 10,
12+
"maxFilesChanged": 50,
13+
"labels": [
14+
"label:active-directory/svc",
15+
"label:ciam/subsvc"
16+
]
17+
},
18+
"areas": [
19+
{
20+
"names": [ "."],
21+
"heading": "Azure Active Directory for customers"
22+
}
23+
]
24+
}

.whatsnew/.external-identities.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"relativeLinkPrefix": "/azure/active-directory/external-identities"
88
},
99
"inclusionCriteria": {
10-
"omitPullRequestTitles" : true,
10+
"omitPullRequestTitles" : false,
1111
"minAdditionsToFile" : 10,
1212
"maxFilesChanged": 50,
1313
"labels": [
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
---
2+
title: API-driven inbound provisioning concepts
3+
description: An overview of API-driven inbound provisioning.
4+
services: active-directory
5+
author: jenniferf-skc
6+
manager: amycolannino
7+
ms.service: active-directory
8+
ms.subservice: app-provisioning
9+
ms.workload: identity
10+
ms.topic: reference
11+
ms.date: 06/22/2023
12+
ms.author: jfields
13+
ms.reviewer: chmutali
14+
---
15+
16+
# API-driven inbound provisioning concepts (Public preview)
17+
18+
This document provides a conceptual overview of the Azure AD API-driven inbound user provisioning.
19+
20+
> [!IMPORTANT]
21+
> API-driven inbound provisioning is currently in public preview and is governed by [Preview Terms of Use](https://azure.microsoft.com/support/legal/preview-supplemental-terms/).
22+
23+
## Introduction
24+
25+
Today enterprises have a variety of authoritative systems of record. To establish end-to-end identity lifecycle, strengthen security posture and stay compliant with regulations, identity data in Azure Active Directory must be kept in sync with workforce data managed in these systems of record. The *system of record* could be an HR app, a payroll app, a spreadsheet or SQL tables in a database hosted either on-premises or in the cloud.
26+
27+
With API-driven inbound provisioning, the Azure AD provisioning service now supports integration with *any* system of record. Customers and partners can use *any* automation tool of their choice to retrieve workforce data from the system of record and ingest it into Azure AD. The IT admin has full control on how the data is processed and transformed with attribute mappings. Once the workforce data is available in Azure AD, the IT admin can configure appropriate joiner-mover-leaver business processes using [Lifecycle Workflows](../governance/what-are-lifecycle-workflows.md).
28+
29+
## Supported scenarios
30+
31+
Several inbound user provisioning scenarios are enabled using API-driven inbound provisioning. This diagram demonstrates the most common scenarios.
32+
33+
:::image type="content" source="media/inbound-provisioning-api-concepts/api-workflow-scenarios.png" alt-text="Diagram that shows API scenarios." lightbox="media/inbound-provisioning-api-concepts/api-workflow-scenarios.png":::
34+
35+
### Scenario 1: Enable IT teams to import HR data extracts using any automation tool
36+
Flat files, CSV files and SQL staging tables are commonly used in enterprise integration scenarios. Employee, contractor and vendor information are periodically exported into one of these formats and an automation tool is used to sync this data with enterprise identity directories. With API-driven inbound provisioning, IT teams can use any automation tool of their choice (example: PowerShell scripts or Azure Logic Apps) to modernize and simplify this integration.
37+
38+
### Scenario 2: Enable ISVs to build direct integration with Azure AD
39+
With API-driven inbound provisioning, HR ISVs can ship native synchronization experiences so that changes in the HR system automatically flow into Azure AD and connected on-premises Active Directory domains. For example, an HR app or student information systems app can send data to Azure AD as soon as a transaction is complete or as end-of-day bulk update.
40+
41+
### Scenario 3: Enable system integrators to build more connectors to systems of record
42+
Partners can build custom HR connectors to meet different integration requirements around data flow from systems of record to Azure AD.
43+
44+
In all the above scenarios, the integration is greatly simplified as Azure AD provisioning service takes over the responsibility of performing identity profile comparison, restricting the data sync to scoping logic configured by the IT admin and executing rule-based attribute flow and transformation managed in the Microsoft Entra admin portal.
45+
46+
## End-to-end flow
47+
:::image type="content" source="media/inbound-provisioning-api-concepts/end-to-end-workflow.png" alt-text="Diagram of the end-to-end workflow of inbound provisioning." lightbox="media/inbound-provisioning-api-concepts/end-to-end-workflow.png":::
48+
49+
### Steps of the workflow
50+
51+
1. IT Admin configures an API-driven inbound user provisioning app from the Microsoft Entra Enterprise App gallery.
52+
2. IT Admin provides endpoint access details to the API developer/partner/system integrator.
53+
3. The API developer/partner/system integrator builds an API client to send authoritative identity data to Azure AD.
54+
4. The API client reads identity data from the authoritative source.
55+
5. The API client sends a POST request to provisioning [/bulkUpload](/graph/api/synchronization-synchronizationjob-post-bulkupload) API endpoint associated with the provisioning app.
56+
>[!NOTE]
57+
> The API client doesn't need to perform any comparisons between the source attributes and the target attribute values to determine what operation (create/update/enable/disable) to invoke. This is automatically handled by the provisioning service. The API client simply uploads the identity data read from the source system by packaging it as bulk request using SCIM schema constructs.
58+
1. If successful, an ```Accepted 202 Status``` is returned.
59+
1. The Azure AD Provisioning Service processes the data received, applies the attribute mapping rules and completes user provisioning.
60+
1. Depending on the provisioning app configured, the user is provisioned either into on-premises Active Directory (for hybrid users) or Azure AD (for cloud-only users).
61+
1. The API Client then queries the provisioning logs API endpoint for the status of each record sent.
62+
1. If the processing of any record fails, the API client can check the error details and include records corresponding to the failed operations in the next bulk request (step 5).
63+
1. At any time, the IT Admin can check the status of the provisioning job and view events in the provisioning logs.
64+
65+
### Key features of API-driven inbound user provisioning
66+
67+
- Delivered as a provisioning app that that exposes an *asynchronous* Microsoft Graph provisioning [/bulkUpload](/graph/api/synchronization-synchronizationjob-post-bulkupload) API endpoint accessed using valid OAuth token.
68+
- Tenant admins must grant API clients interacting with this provisioning app the Graph permission `SynchronizationData-User.Upload`.
69+
- The Graph API endpoint accepts valid bulk request payloads using SCIM schema constructs.
70+
- With SCIM schema extensions, you can send any attribute in the bulk request payload.
71+
- The rate limit for the inbound provisioning API is 40 bulk upload requests per second. Each bulk request can contain a maximum of 50 user records, thereby supporting an upload rate of 2000 records per second.
72+
- Each API endpoint is associated with a specific provisioning app in Azure AD. You can integrate multiple data sources by creating a provisioning app for each data source.
73+
- Incoming bulk request payloads are processed in near real-time.
74+
- Admins can check provisioning progress by viewing the [provisioning logs](../reports-monitoring/concept-provisioning-logs.md).
75+
- API clients can track progress by querying [provisioning logs API](/graph/api/resources/provisioningobjectsummary).
76+
77+
## Next steps
78+
- [Configure API-driven inbound provisioning app](inbound-provisioning-api-configure-app.md)
79+
- [Frequently asked questions about API-driven inbound provisioning](inbound-provisioning-api-faqs.md)
80+
- [Automate user provisioning and deprovisioning to SaaS applications with Azure Active Directory](user-provisioning.md)

0 commit comments

Comments
 (0)