Skip to content

Commit 5b33e01

Browse files
committed
Merge branch 'master' of https://github.com/MicrosoftDocs/azure-docs-pr into sdg-notebooks
2 parents cb5ab66 + 0f13565 commit 5b33e01

File tree

2,080 files changed

+23735
-37786
lines changed

Some content is hidden

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

2,080 files changed

+23735
-37786
lines changed

.openpublishing.publish.config.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -499,6 +499,11 @@
499499
"path_to_root": "azure-cosmosdb-java-v4-getting-started",
500500
"url": "https://github.com/Azure-Samples/azure-cosmos-java-getting-started",
501501
"branch": "master"
502+
},
503+
{
504+
"path_to_root": "azure-storage-snippets",
505+
"url": "https://github.com/azure-samples/AzureStorageSnippets",
506+
"branch": "master"
502507
}
503508
],
504509
"branch_target_mapping": {

.openpublishing.redirection.json

Lines changed: 628 additions & 3 deletions
Large diffs are not rendered by default.

articles/active-directory-b2c/best-practices.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ Define your application and service architecture, inventory current systems, and
3939
| Create a migration plan |Planning ahead can make migration go more smoothly. Learn more about [user migration](user-migration.md).|
4040
| Usability vs. security | Your solution must strike the right balance between application usability and your organization's acceptable level of risk. |
4141
| Move on-premises dependencies to the cloud | To help ensure a resilient solution, consider moving existing application dependencies to the cloud. |
42-
| Migrate existing apps to b2clogin.com | The deprecation of login.microsoftonline.com went into effect for all Azure AD B2C tenants on 04 December 2020. [Learn more](b2clogin.md). |
42+
| Migrate existing apps to b2clogin.com | The deprecation of login.microsoftonline.com will go into effect for all Azure AD B2C tenants on 04 December 2020. [Learn more](b2clogin.md). |
4343

4444
## Implementation
4545

@@ -88,4 +88,4 @@ Stay up to date with the state of the service and find support options.
8888
|--|--|
8989
| [Service updates](https://azure.microsoft.com/updates/?product=active-directory-b2c) | Stay up to date with Azure AD B2C product updates and announcements. |
9090
| [Microsoft Support](support-options.md) | File a support request for Azure AD B2C technical issues. Billing and subscription management support is provided at no cost. |
91-
| [Azure status](https://status.azure.com/status) | View the current health status of all Azure services. |
91+
| [Azure status](https://status.azure.com/status) | View the current health status of all Azure services. |

articles/active-directory-b2c/code-samples.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,9 @@ The following tables provide links to samples for applications including iOS, An
4343
| Sample | Description |
4444
|--------| ----------- |
4545
| [javascript-msal-singlepageapp](https://github.com/Azure-Samples/active-directory-b2c-javascript-msal-singlepageapp) | A single page application (SPA) calling a Web API. Authentication is done with Azure AD B2C by using MSAL.js. |
46+
47+
## SAML test application
48+
49+
| Sample | Description |
50+
|--------| ----------- |
51+
| [saml-sp-tester](https://github.com/azure-ad-b2c/saml-sp-tester/tree/master/source-code) | SAML test application to test Azure AD B2C configured to act as SAML identity provider. |

articles/active-directory-domain-services/secure-remote-vm-access.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ The RD environment deployment contains a number of steps. The existing RD deploy
5757

5858
1. Sign in to VMs created for the RD environment with an account that's part of the *Azure AD DC Administrators* group, such as *contosoadmin*.
5959
1. To create and configure RDS, use the existing [Remote Desktop environment deployment guide][deploy-remote-desktop]. Distribute the RD server components across your Azure VMs as desired.
60+
* Specific to Azure AD DS - when you configure RD licensing, set it to **Per Device** mode, not **Per User** as noted in the deployment guide.
6061
1. If you want to provide access using a web browser, [set up the Remote Desktop web client for your users][rd-web-client].
6162

6263
With RD deployed into the Azure AD DS managed domain, you can manage and use the service as you would with an on-premises AD DS domain.

articles/active-directory/app-provisioning/customize-application-attributes.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ Along with this property, attribute-mappings also support the following attribut
6969
- **Target attribute** – The user attribute in the target system (example: ServiceNow).
7070
- **Default value if null (optional)** - The value that will be passed to the target system if the source attribute is null. This value will only be provisioned when a user is created. The "default value when null" will not be provisioned when updating an existing user. If, for example, you want to provision all existing users in the target system with a particular Job Title (when it is null in the source system), you can use the following [expression](../app-provisioning/functions-for-customizing-application-data.md): Switch(IsPresent([jobTitle]), "DefaultValue", "True", [jobTitle]). Make sure to replace the "Default Value" with what you would like to provision when null in the source system.
7171
- **Match objects using this attribute** – Whether this mapping should be used to uniquely identify users between the source and target systems. It's typically set on the userPrincipalName or mail attribute in Azure AD, which is typically mapped to a username field in a target application.
72-
- **Matching precedence** – Multiple matching attributes can be set. When there are multiple, they're evaluated in the order defined by this field. As soon as a match is found, no further matching attributes are evaluated.
72+
- **Matching precedence** – Multiple matching attributes can be set. When there are multiple, they're evaluated in the order defined by this field. As soon as a match is found, no further matching attributes are evaluated. While you can set as many matching attributes as you would like, consider whether the attributes you are using as matching attributes are truly unique and need to be matching attributes. Generally customers have 1 or 2 matching attributes in their configuration.
7373
- **Apply this mapping**
7474
- **Always** – Apply this mapping on both user creation and update actions.
7575
- **Only during creation** - Apply this mapping only on user creation actions.
@@ -312,8 +312,10 @@ Selecting this option will effectively force a resynchronization of all users wh
312312
- Updating attribute-mappings has an impact on the performance of a synchronization cycle. An update to the attribute-mapping configuration requires all managed objects to be reevaluated.
313313
- A recommended best practice is to keep the number of consecutive changes to your attribute-mappings at a minimum.
314314
- Adding a photo attribute to be provisioned to an app is not supported today as you cannot specify the format to sync the photo. You can request the feature on [User Voice](https://feedback.azure.com/forums/169401-azure-active-directory)
315-
- The attribute IsSoftDeleted is often part of the default mappings for an application. IsSoftdeleted can be true in one of four scenarios (the user is out of scope due to being unassigned from the application, the user is out of scope due to not meeting a scoping filter, the user has been soft deleted in Azure AD, or the property AccountEnabled is set to false on the user).
316-
- The Azure AD provisioning service does not support provisioning null values
315+
- The attribute IsSoftDeleted is often part of the default mappings for an application. IsSoftdeleted can be true in one of four scenarios (the user is out of scope due to being unassigned from the application, the user is out of scope due to not meeting a scoping filter, the user has been soft deleted in Azure AD, or the property AccountEnabled is set to false on the user). It is not recommended to remove the IsSoftDeleted attribute from your attribute mappings.
316+
- The Azure AD provisioning service does not support provisioning null values.
317+
- They primary key, typically "ID", should not be included as a target attribute in your attribute mappings.
318+
- The role attribute typically needs to be mapped using an expression, rather than a direct mapping. See section above for more details on role mapping.
317319

318320
## Next steps
319321

articles/active-directory/app-provisioning/functions-for-customizing-application-data.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -519,11 +519,11 @@ SelectUniqueValue(uniqueValueRule1, uniqueValueRule2, uniqueValueRule3, …)
519519
**Description:**<br>
520520
Requires a minimum of two arguments, which are unique value generation rules defined using expressions. The function evaluates each rule and then checks the value generated for uniqueness in the target app/directory. The first unique value found will be the one returned. If all of the values already exist in the target, the entry will get escrowed and the reason gets logged in the audit logs. There is no upper bound to the number of arguments that can be provided.
521521

522-
> [!NOTE]
523-
> - This is a top-level function, it cannot be nested.
524-
> - This function cannot be applied to attributes that have a matching precedence.
525-
> - This function is only meant to be used for entry creations. When using it with an attribute, set the **Apply Mapping** property to **Only during object creation**.
526-
> - This function is currently only supported for "Workday to Active Directory User Provisioning". It cannot be used with other provisioning applications.
522+
523+
- This is a top-level function, it cannot be nested.
524+
- This function cannot be applied to attributes that have a matching precedence.
525+
- This function is only meant to be used for entry creations. When using it with an attribute, set the **Apply Mapping** property to **Only during object creation**.
526+
- This function is currently only supported for "Workday to Active Directory User Provisioning". It cannot be used with other provisioning applications.
527527

528528

529529
**Parameters:**<br>
68 KB
Loading
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
---
2+
title: Using SCIM, the Microsoft Graph, and the Azure AD provisioning service to provision users and enrich your application with the data it needs | Microsoft Docs
3+
description: Using SCIM and the Microsoft Graph together to provision users and enrich your application with the data it needs .
4+
services: active-directory
5+
documentationcenter: ''
6+
author: msmimart
7+
manager: CelesteDG
8+
9+
ms.assetid:
10+
ms.service: active-directory
11+
ms.subservice: app-provisioning
12+
ms.workload: identity
13+
ms.tgt_pltfrm: na
14+
ms.devlang: na
15+
ms.topic: conceptual
16+
ms.date: 04/23/2020
17+
ms.author: mimart
18+
ms.reviewer: arvinh
19+
20+
ms.collection: M365-identity-device-management
21+
---
22+
23+
24+
# Using SCIM and Microsoft Graph together to provision users and enrich your application with the data it needs
25+
26+
**Target audience:** This document is targeted towards developers building applications to be integrated with Azure AD. For others looking to use applications already integrated with Azure AD, such as Zoom, ServiceNow, and DropBox, you can skip this and review the application specific [tutorials](https://docs.microsoft.com/azure/active-directory/saas-apps/tutorial-list) or review [how the provisioning service works](https://docs.microsoft.com/azure/active-directory/app-provisioning/how-provisioning-works).
27+
28+
**Common scenarios**
29+
30+
Azure AD provides an out of the box service for provisioning and an extensible platform to build your applications on. The decision tree outlines how a developer would use [SCIM](https://aka.ms/scimoverview) and the [Microsoft Graph](https://docs.microsoft.com/graph/overview) to automate provisioning.
31+
32+
> [!div class="checklist"]
33+
> * Automatically create users in my application
34+
> * Automatically remove users from my application when they shouldn't have access anymore
35+
> * Integrate my application with multiple identity providers for provisioning
36+
> * Enrich my application with data from Microsoft services such as Teams, Outlook, and Office.
37+
> * Automatically create, update, and delete users and groups in Azure AD and Active Directory
38+
39+
![SCIM Graph decision tree](./media/user-provisioning/scim-graph.png)
40+
41+
## Scenario 1: Automatically create users in my app
42+
Today, IT admins provision users by manually creating user accounts or periodically uploading CSV files into my application. The process is time consuming for customers and slows down adoption of my application. All I need is basic user information such as name, email, and userPrincipalName to create a user.
43+
44+
**Recommendation**:
45+
* If your customers use various IdPs and you do not want to maintain a sync engine to integrate with each, support a SCIM compliant [/Users](https://aka.ms/scimreferencecode) endpoint. Your customers will be able to easily use this endpoint to integrate with the Azure AD provisioning service and automatically create user accounts when they need access. You can build the endpoint once and it will be compatible with all IdPs. Check out the example request below for how a user would be created using SCIM.
46+
* If you require user data found on the user object in Azure AD and other data from across Microsoft, consider building a SCIM endpoint for user provisioning and calling into the Microsoft Graph to get the rest of the data.
47+
48+
49+
```json
50+
POST /Users
51+
{
52+
"schemas": [
53+
"urn:ietf:params:scim:schemas:core:2.0:User",
54+
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"],
55+
"externalId": "0a21f0f2-8d2a-4f8e-bf98-7363c4aed4ef",
56+
"userName": "BillG",
57+
"active": true,
58+
"meta": {
59+
"resourceType": "User"
60+
},
61+
"name": {
62+
"formatted": "Bill Gates",
63+
"familyName": "Gates",
64+
"givenName": "Bill"
65+
},
66+
"roles": []
67+
}
68+
```
69+
70+
## Scenario 2: Automatically remove users from my app
71+
The customers using my application are security focused and have governance requirements to remove accounts when employees don't need them anymore. How can I automate deprovisioning from my application?
72+
73+
**Recommendation:** Support a SCIM compliant /Users endpoint. The Azure AD provisioning service will send requests to disable and delete when the user shouldn't have access anymore. We recommend supporting both disabling and deleting users. See the examples below for what a disable and delete request look like.
74+
75+
Disable user
76+
```json
77+
PATCH /Users/5171a35d82074e068ce2 HTTP/1.1
78+
{
79+
"Operations": [
80+
{
81+
"op": "Replace",
82+
"path": "active",
83+
"value": false
84+
}
85+
],
86+
"schemas": [
87+
"urn:ietf:params:scim:api:messages:2.0:PatchOp"
88+
]
89+
}
90+
```
91+
Delete user
92+
```json
93+
DELETE /Users/5171a35d82074e068ce2 HTTP/1.1
94+
```
95+
96+
## Scenario 3: Automate managing group memberships in my app
97+
My application relies on groups for access to various resources, and customers want to reuse the groups that they have in Azure AD. How can I import groups from Azure AD and keep them updated as the memberships change?
98+
99+
**Recommendation:** Support a SCIM compliant /Groups [endpoint](https://aka.ms/scimreferencecode). The Azure AD provisioning service will take care of creating groups and managing membership updates in your application.
100+
101+
## Scenario 4: Enrich my app with data from Microsoft services such as Teams, Outlook, and OneDrive
102+
My application is built into Microsoft Teams and relies on message data. In addition, we store files for users in OneDrive. How can I enrich my application with the data from these services and across Microsoft?
103+
104+
**Recommendation:** The [Microsoft Graph](https://docs.microsoft.com/graph/) is your entry point to access Microsoft data. Each workload exposes APIs with the data that you need. The Microsoft graph can be used along with [SCIM provisioning](https://docs.microsoft.com/azure/active-directory/app-provisioning/use-scim-to-provision-users-and-groups) for the scenarios above. You can use SCIM to provision basic user attributes into your application while calling into graph to get any other data that you need.
105+
106+
## Scenario 5: Track changes in Microsoft services such as Teams, Outlook, and Azure AD
107+
I need to be able to track changes to Teams and Outlook messages and react to them in real time. How can I get these changes pushed to my application?
108+
109+
**Recommendation:** The Microsoft Graph provides [change notifications](https://docs.microsoft.com/graph/webhooks) and [change tracking](https://docs.microsoft.com/graph/delta-query-overview) for various resources. Note the following limitations of change notifications:
110+
- If an event receiver acknowledges an event, but fails to act on it for any reason, the event may be lost
111+
- If an event receiver acknowledges an event, but fails to act on it for any reason, the event may be lost
112+
- Change notifications don't always contain the [resource data](https://docs.microsoft.com/graph/webhooks-with-resource-data)
113+
For the reasons above, developers often use change notifications along with change tracking for synchronization scenarios.
114+
115+
## Scenario 6: Provision users and groups in Azure AD
116+
My application creates information about a user that customers need in Azure AD. This could be an HR application than manages hiring, a communications app that creates phone numbers for users, or some other app that generates data that would be valuable in Azure AD. How do I populate the user record in Azure AD with that data?
117+
118+
**Recommendation** The Microsoft graph exposes /Users and /Groups endpoints that you can integrate with today to provision users into Azure AD. Please note that Azure Active Directory doesn't support writing those users back into Active Directory.
119+
120+
> [!NOTE]
121+
> Microsoft has a provisioning service that pulls in data from HR applications such as Workday and SuccessFactors. These integrations are built and managed by Microsoft. For onboarding a new HR application to our service, you can request it on [UserVoice](https://feedback.azure.com/forums/374982-azure-active-directory-application-requests).
122+
123+
## Related articles
124+
125+
- [Review the synchronization Microsoft Graph documentation](https://docs.microsoft.com/graph/api/resources/synchronization-overview?view=graph-rest-beta)
126+
- [Integrating a custom SCIM app with Azure AD](use-scim-to-provision-users-and-groups.md)

articles/active-directory/app-provisioning/toc.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@
7979
items:
8080
- name: SCIM 2.0 protocol compliance
8181
href: application-provisioning-config-problem-scim-compatibility.md
82+
- name: SCIM and Graph scenarios
83+
href: scim-graph-scenarios.md
8284
- name: Choose a provisioning method
8385
href: isv-automatic-provisioning-multi-tenant-apps.md
8486
- name: Cloud HR provisioning
@@ -106,4 +108,4 @@
106108
- name: Stack Overflow
107109
href: https://stackoverflow.com/questions/tagged/azure-active-directory
108110
- name: Videos
109-
href: https://azure.microsoft.com/documentation/videos/index/?services=active-directory
111+
href: https://azure.microsoft.com/documentation/videos/index/?services=active-directory

0 commit comments

Comments
 (0)