Skip to content

Commit 259e706

Browse files
Merge branch 'master' into v-dele-1687537-2
2 parents 1151ae7 + a47ba20 commit 259e706

File tree

1,131 files changed

+13834
-20638
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,131 files changed

+13834
-20638
lines changed

.openpublishing.redirection.json

Lines changed: 325 additions & 5 deletions
Large diffs are not rendered by default.

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/app-provisioning/scim-graph-scenarios.md

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,43 @@
11
---
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
2+
title: Use SCIM, Microsoft Graph, and Azure AD to provision users and enrich apps with data
33
description: Using SCIM and the Microsoft Graph together to provision users and enrich your application with the data it needs .
44
services: active-directory
5-
documentationcenter: ''
65
author: msmimart
76
manager: CelesteDG
8-
9-
ms.assetid:
107
ms.service: active-directory
118
ms.subservice: app-provisioning
129
ms.workload: identity
13-
ms.tgt_pltfrm: na
14-
ms.devlang: na
1510
ms.topic: conceptual
16-
ms.date: 04/06/2020
11+
ms.date: 04/26/2020
1712
ms.author: mimart
1813
ms.reviewer: arvinh
1914

20-
ms.collection: M365-identity-device-management
2115
---
2216

2317

2418
# Using SCIM and Microsoft Graph together to provision users and enrich your application with the data it needs
2519

26-
**Target audience:** This document is targeted towards developers building applications integrated with Azure AD. For others looking to integrate an existing application 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).
20+
**Target audience:** This article is targeted towards developers building applications to be integrated with Azure Active Directory (Azure AD). If you're looking to use applications already integrated with Azure AD, such as Zoom, ServiceNow, and DropBox, you can skip this article 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).
2721

2822
**Common scenarios**
2923

24+
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.
25+
3026
> [!div class="checklist"]
3127
> * Automatically create users in my application
3228
> * Automatically remove users from my application when they shouldn't have access anymore
3329
> * Integrate my application with multiple identity providers for provisioning
34-
> * Enrich my application with data from Microsoft services such as Sharepoint, Outlook, and Office.
30+
> * Enrich my application with data from Microsoft services such as Teams, Outlook, and Office.
3531
> * Automatically create, update, and delete users and groups in Azure AD and Active Directory
3632
3733
![SCIM Graph decision tree](./media/user-provisioning/scim-graph.png)
3834

3935
## Scenario 1: Automatically create users in my app
40-
Today, IT admins manually create user accounts in my application each time someone needs access or periodically upload CSV files. The process is time consuming for customers and slows down adoption of my application. All I need is basic [user](https://docs.microsoft.com/graph/api/resources/user?view=graph-rest-1.0) information such as name, email, and userPrincipalName to create a user. Furthermore, my customers use various IdPs and I don't have the resources to maintain a sync engine and custom integrations with each IdP.
36+
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.
4137

42-
**Recommendation**: 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, without having to maintain a sync engine. Check out the example request below for how a user would be created.
38+
**Recommendation**:
39+
* 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.
40+
* 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.
4341

4442
```json
4543
POST /Users
@@ -93,21 +91,21 @@ My application relies on groups for access to various resources, and customers w
9391

9492
**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.
9593

96-
## Scenario 4: Enrich my app with data from Microsoft services such as Teams, Outlook, and OneDrive.
94+
## Scenario 4: Enrich my app with data from Microsoft services such as Teams, Outlook, and OneDrive
9795
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?
9896

9997
**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.
10098

101-
## Scenario 5: Track changes in Microsoft services such as Teams, Outlook, and Azure AD.
99+
## Scenario 5: Track changes in Microsoft services such as Teams, Outlook, and Azure AD
102100
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?
103101

104-
**Recommendation:** The Microsoft Graph provides [change notifications](https://docs.microsoft.com/graph/webhooks) and change tracking for various resources. Note the following limitations of change notifications:
102+
**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:
105103
- If an event receiver acknowledges an event, but fails to act on it for any reason, the event may be lost
106104
- If an event receiver acknowledges an event, but fails to act on it for any reason, the event may be lost
107105
- Change notifications don't always contain the [resource data](https://docs.microsoft.com/graph/webhooks-with-resource-data)
108106
For the reasons above, developers often use change notifications along with change tracking for synchronization scenarios.
109107

110-
## Scenario 6: Provision users and groups in Azure AD.
108+
## Scenario 6: Provision users and groups in Azure AD
111109
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?
112110

113111
**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.

articles/active-directory/app-provisioning/use-scim-to-provision-users-and-groups.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -813,7 +813,7 @@ Requests from Azure Active Directory include an OAuth 2.0 bearer token. Any serv
813813

814814
In the token, the issuer is identified by an iss claim, like `"iss":"https://sts.windows.net/cbb1a5ac-f33b-45fa-9bf5-f37db0fed422/"`. In this example, the base address of the claim value, `https://sts.windows.net`, identifies Azure Active Directory as the issuer, while the relative address segment, _cbb1a5ac-f33b-45fa-9bf5-f37db0fed422_, is a unique identifier of the Azure Active Directory tenant for which the token was issued.
815815

816-
The audience for the token will be the application template ID for the application in the gallery, each of the applications registered in a single tenant may receive the same `iss` claim with SCIM requests. The application template ID for each application in the gallery varies, please contact [[email protected]](mailto:[email protected]) for questions around the application template ID for a gallery application. The application template ID for all custom apps is _8adf8e6e-67b2-4cf2-a259-e3dc5476c621_.
816+
The audience for the token will be the application template ID for the application in the gallery, each of the applications registered in a single tenant may receive the same `iss` claim with SCIM requests. The application template ID for all custom apps is _8adf8e6e-67b2-4cf2-a259-e3dc5476c621_. The token generated by the Azure AD provisioning service should only be used for testing. It should not be used in production environments.
817817

818818
In the sample code, requests are authenticated using the Microsoft.AspNetCore.Authentication.JwtBearer package. The following code enforces that requests to any of the service’s endpoints are authenticated using the bearer token issued by Azure Active Directory for a specified tenant:
819819

articles/active-directory/authentication/concept-authentication-passwordless.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ The following providers offer FIDO2 security keys of different form factors that
116116
| eWBM | [https://www.ewbm.com/support](https://www.ewbm.com/support) |
117117
| AuthenTrend | [https://authentrend.com/about-us/#pg-35-3](https://authentrend.com/about-us/#pg-35-3) |
118118
| Gemalto (Thales Group) | [https://safenet.gemalto.com/multi-factor-authentication/authenticators/passwordless-authentication/](https://safenet.gemalto.com/multi-factor-authentication/authenticators/passwordless-authentication/) |
119-
| OneSpan Inc. | [https://www.onespan.com/sites/default/files/2019-08/Digipass-SecureClick_datasheet.pdf](https://www.onespan.com/sites/default/files/2019-08/Digipass-SecureClick_datasheet.pdf) |
119+
| OneSpan Inc. | [https://www.onespan.com/products/fido](https://www.onespan.com/products/fido) |
120120
| IDmelon Technologies Inc. | [https://www.idmelon.com/#idmelon](https://www.idmelon.com/#idmelon) |
121121

122122
> [!NOTE]

articles/active-directory/authentication/tutorial-enable-sspr.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ To keep users informed about account activity, you can configure e-mail notifica
103103
If users need additional help with the SSPR process, you can customize the link for "Contact your administrator". This link is used in the SSPR registration process and when a user unlocks their account or resets their password. To make sure your users get the support needed, it's highly recommended to provide a custom helpdesk email or URL.
104104

105105
1. On the **Customization** page from the menu in the left-hand side, set *Customize helpdesk link* to **Yes**.
106-
1. In the **Custom helpdesk email or URL** field, provide an email address or web page URL where your users can get additional help from your organization, such as *https://support.contoso.com/*
106+
1. In the **Custom helpdesk email or URL** field, provide an email address or web page URL where your users can get additional help from your organization, such as *`https://support.contoso.com/`*
107107
1. To apply the custom link, select **Save**.
108108

109109
## Test self-service password reset

articles/active-directory/develop/TOC.yml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -448,9 +448,13 @@
448448
- name: Automatic user provisioning (SCIM)
449449
items:
450450
- name: What is automatic user provisioning?
451-
href: /azure/active-directory/manage-apps/user-provisioning
452-
- name: Building and integrating a SCIM endpoint
453-
href: /azure/active-directory/manage-apps/use-scim-to-provision-users-and-groups
451+
href: /azure/active-directory/app-provisioning/user-provisioning
452+
- name: Develop and integrating a SCIM endpoint
453+
href: /azure/active-directory/app-provisioning/use-scim-to-provision-users-and-groups
454+
- name: Common provisioning scenarios
455+
href: /azure/active-directory/app-provisioning/scim-graph-scenarios
456+
- name: Automate configuration using MS Graph
457+
href: /azure/active-directory/app-provisioning/application-provisioning-configure-api
454458
- name: How-to guides
455459
items:
456460
- name: Authentication

articles/active-directory/develop/msal-overview.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ MSAL can be used in many application scenarios, including the following:
5151
| [MSAL.js](https://github.com/AzureAD/microsoft-authentication-library-for-js)| JavaScript/TypeScript frameworks such as AngularJS, Ember.js, or Durandal.js|
5252
| [MSAL for Android](https://github.com/AzureAD/microsoft-authentication-library-for-android)|Android|
5353
| [MSAL for iOS and macOS](https://github.com/AzureAD/microsoft-authentication-library-for-objc)|iOS and macOS|
54-
| [MSAL Java (preview)](https://github.com/AzureAD/microsoft-authentication-library-for-java)|Java|
55-
| [MSAL Python (preview)](https://github.com/AzureAD/microsoft-authentication-library-for-python)|Python|
54+
| [MSAL Java](https://github.com/AzureAD/microsoft-authentication-library-for-java)|Windows, macOS, Linux|
55+
| [MSAL Python](https://github.com/AzureAD/microsoft-authentication-library-for-python)|Windows, macOS, Linux|
5656

5757
## Differences between ADAL and MSAL
5858

articles/active-directory/develop/quickstart-v2-javascipt-auth-code.md renamed to articles/active-directory/develop/quickstart-v2-javascript-auth-code.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ ROBOTS: NOINDEX
2323
> This feature is currently in preview. Previews are made available to you on the condition that you agree to the [supplemental terms of use](https://azure.microsoft.com/support/legal/preview-supplemental-terms/). Some aspects of this feature might change before general availability (GA).
2424
2525

26-
This quickstart uses MSAL.js 2.0 with the Authorization Code flow. To use MSAL.js 1.0 with the implicit flow, view [this quickstart](https://docs.microsoft.com/azure/active-directory/develop/quickstart-v2-javascript)
26+
This quickstart uses MSAL.js 2.0 with the Authorization Code flow. To use MSAL.js 1.0 with the implicit flow, view [this quickstart](https://docs.microsoft.com/azure/active-directory/develop/quickstart-v2-javascript).
2727

2828
In this quickstart, you use a code sample to learn how a JavaScript single-page application (SPA) can sign in users of personal accounts, work accounts, and school accounts. A JavaScript SPA can also get an access token to call the Microsoft Graph API or any web API. See [How the sample works](#how-the-sample-works) for an illustration.
2929

articles/active-directory/develop/scenario-web-app-call-api-acquire-token.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ ms.custom: aaddev
1919

2020
You've built your client application object. Now, you'll use it to acquire a token to call a web API. In ASP.NET or ASP.NET Core, calling a web API is done in the controller:
2121

22-
- Get a token for the web API by using the token cache. To get this token, you call the `AcquireTokenSilent` method.
22+
- Get a token for the web API by using the token cache. To get this token, you call the MSAL `AcquireTokenSilent` method (or the equivalent in Microsoft.Identity.Web).
2323
- Call the protected API, passing the access token to it as a parameter.
2424

2525
# [ASP.NET Core](#tab/aspnetcore)
@@ -51,7 +51,7 @@ public async Task<IActionResult> Profile()
5151
{
5252
// Acquire the access token.
5353
string[] scopes = new string[]{"user.read"};
54-
string accessToken = await tokenAcquisition.GetAccessTokenOnBehalfOfUserAsync(scopes);
54+
string accessToken = await tokenAcquisition.GetAccessTokenForUserAsync(scopes);
5555

5656
// Use the access token to call a protected web API.
5757
HttpClient client = new HttpClient();
@@ -158,6 +158,8 @@ def graphcall():
158158
return render_template('display.html', result=graph_data)
159159
```
160160

161+
---
162+
161163
## Next steps
162164

163165
> [!div class="nextstepaction"]

0 commit comments

Comments
 (0)