Updates from: 01/10/2023 02:30:28
Service Microsoft Docs article Related commit history on GitHub Change details
active-directory-b2c Azure Ad B2c Global Identity Funnel Based Design https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory-b2c/azure-ad-b2c-global-identity-funnel-based-design.md
Title: Azure Active Directory B2C global identity framework funnel-based design considerations
+ Title: Build a global identity solution with funnel-based approach
description: Learn the funnel-based design consideration for Azure AD B2C to provide customer identity management for global customers.
active-directory-b2c Azure Ad B2c Global Identity Region Based Design https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory-b2c/azure-ad-b2c-global-identity-region-based-design.md
Title: Azure Active Directory B2C global identity framework region-based design considerations
+ Title: Build a global identity solution with region-based approach
description: Learn the region-based design consideration for Azure AD B2C to provide customer identity management for global customers.
active-directory-b2c Configure Authentication Sample Ios App https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory-b2c/configure-authentication-sample-ios-app.md
Previously updated : 07/29/2021 Last updated : 01/06/2023
This sample acquires an access token with the relevant scopes that the mobile ap
## Step 4: Get the iOS mobile app sample
-1. [Download the .zip file](https://github.com/Azure-Samples/active-directory-b2c-ios-swift-native-msal/archive/refs/heads/vNext.zip), or clone the sample web app from the [GitHub repo](https://github.com/Azure-Samples/active-directory-b2c-ios-swift-native-msal).
+1. [Download the .zip file](https://github.com/Azure-Samples/active-directory-b2c-ios-swift-native-msal/archive/refs/heads/master.zip), or clone the sample web app from the [GitHub repo](https://github.com/Azure-Samples/active-directory-b2c-ios-swift-native-msal).
```bash
- git clone https://github.com/Azure-Samples/active-directory-b2c-ios-swift-native-msal/tree/vNext.git
+ git clone https://github.com/Azure-Samples/active-directory-b2c-ios-swift-native-msal
``` 1. Use [CocoaPods](https://cocoapods.org/) to install the MSAL library. In a terminal window, go to the project root folder. This folder contains the *podfile* file. Run the following command:
active-directory-b2c Partner Akamai Secure Hybrid Access https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory-b2c/partner-akamai-secure-hybrid-access.md
Once the Application is deployed in a private environment and a connector is cap
| Header Name | Attribute | |--|--|
- | ps-sso-first | http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name |
- | ps-sso-last | http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname |
+ | ps-sso-first | `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name` |
+ | ps-sso-last | `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname` |
| ps-sso-EmailAddress | emailaddress | | ps-sso-uid | objectId |
active-directory-b2c Partner Arkose Labs https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory-b2c/partner-arkose-labs.md
Title: Tutorial to configure Azure Active Directory B2C with Arkose Labs
+ Title: Tutorial to configure Azure Active Directory B2C with the Arkose Labs platform
-description: Tutorial to configure Azure Active Directory B2C with Arkose Labs to identify risky and fraudulent users
+description: Learn to configure Azure Active Directory B2C with the Arkose Labs platform to identify risky and fraudulent users
-+ - Previously updated : 09/13/2022 Last updated : 1/4/2023
-# Tutorial: Configure Arkose Labs with Azure Active Directory B2C
+# Tutorial: Configure Azure Active Directory B2C with the Arkose Labs platform
-In this sample tutorial, learn how to integrate Azure Active Directory (AD) B2C authentication with [Arkose Labs](https://www.arkoselabs.com/). Arkose Labs help organizations against bot attacks, account takeover attacks, and fraudulent account openings.
+In this tutorial, learn how to integrate Azure Active Directory B2C (Azure AD B2C) authentication with the [Arkose Labs](https://www.arkoselabs.com/) Arkose Protect Platform. Arkose Labs products help organizations against bot attacks, account takeover, and fraudulent account openings.
## Prerequisites To get started, you'll need: -- An Azure subscription. If you don't have a subscription, you can get a [free account](https://azure.microsoft.com/free/).--- [An Azure AD B2C tenant](tutorial-create-tenant.md) that is linked to your Azure subscription.--- An [Arkose Labs](https://www.arkoselabs.com/book-a-demo/) account.
+- An Azure subscription
+ - If you don't have one, you can get an [Azure free account](https://azure.microsoft.com/free/)
+- [An Azure AD B2C tenant](tutorial-create-tenant.md) linked to your Azure subscription
+- An Arkose Labs account
+ - Go to arkoselabs.com to [request a demo](https://www.arkoselabs.com/book-a-demo/)
## Scenario description
-Arkose Labs integration includes the following components:
--- **Arkose Labs** - A fraud and abuse service for protecting against bots and other automated abuse.--- **Azure AD B2C sign-up user flow** - The sign-up experience that will be using the Arkose Labs service. Will use the custom HTML and JavaScript, and API connectors to integrate with the Arkose Labs service.--- **Azure functions** - API endpoint hosted by you that works with the API connectors feature. This API is responsible for doing the server-side validation of the Arkose Labs session token.
+Arkose Labs products integration includes the following components:
-The following diagram describes how Arkose Labs integrates with Azure AD B2C.
+- **Arkose Protect Platform** - A service to protect against bots and other automated abuse
+- **Azure AD B2C sign-up user flow** - The sign-up experience that uses the Arkose Labs platform
+ - Custom HTML, JavaScript, and API connectors integrate with the Arkose platform
+- **Azure Functions** - Your hosted API endpoint that works with the API connectors feature
+ - This API validates the server-side of the Arkose Labs session token
+ - Learn more in the [Azure Functions Overview](/azure/azure-functions/functions-overview)
-![Image shows Arkose Labs architecture diagram](media/partner-arkose-labs/arkose-labs-architecture-diagram.png)
+The following diagram illustrates how the Arkose Labs platform integrates with Azure AD B2C.
-| Step | Description |
-|||
-|1 | A user signs-up and creates an account. When the user selects submit, an Arkose Labs enforcement challenge appears. |
-|2 | After the user completes the challenge, Azure AD B2C sends the status to Arkose Labs to generate a token. |
-|3 | Arkose Labs generates a token and sends it back to Azure AD B2C. |
-|4 | Azure AD B2C calls an intermediate web API to pass the sign-up form. |
-|5 | The intermediate web API sends the sign-up form to Arkose Lab for token verification. |
-|6 | Arkose Lab processes and sends the verification results back to the intermediate web API.|
-|7 | The intermediate web API sends the success or failure result from the challenge to Azure AD B2C. |
-|8 | If the challenge is successfully completed, a sign-up form is submitted to Azure AD B2C, and Azure AD B2C completes the authentication.|
+ ![Diagram of the Arkose Labs platform and Azure AD B2C integration architecture.](media/partner-arkose-labs/arkose-labs-architecture-diagram.png)
-## Onboard with Arkose Labs
+1. A user signs up and creates an account. The user selects **Submit**, and an Arkose Labs enforcement challenge appears.
+2. The user completes the challenge. Azure AD B2C sends the status to Arkose Labs to generate a token.
+3. Arkose Labs sends the token to Azure AD B2C.
+4. Azure AD B2C calls an intermediate web API to pass the sign-up form.
+5. The sign-up form goes to Arkose Labs for token verification.
+6. Arkose Labs sends verification results to the intermediate web API.
+7. The API sends a success or failure result to Azure AD B2C.
+8. If the challenge is successful, a sign-up form goes to Azure AD B2C, which completes authentication.
-1. Contact [Arkose](https://www.arkoselabs.com/book-a-demo/) and create an account.
+## Request a demo from Arkose Labs
-2. Once the account is created, navigate to https://dashboard.arkoselabs.com/login
+1. Go to arkoselabs.com to [book a demo](https://www.arkoselabs.com/book-a-demo/).
+2. Create an account.
+3. Navigate to the [Arkose Portal](https://dashboard.arkoselabs.com/login) sign-in page.
+4. In the dashboard, navigate to site settings.
+5. Locate your public key and private key. You'll use this information later.
-3. Within the dashboard, navigate to site settings to find your public key and private key. This information will be needed later to configure Azure AD B2C. The values of public and private keys are referred to as `ARKOSE_PUBLIC_KEY` and `ARKOSE_PRIVATE_KEY` in the [sample code](https://github.com/Azure-Samples/active-directory-b2c-node-sign-up-user-flow-arkose).
+> [!NOTE]
+> The public and private key values are `ARKOSE_PUBLIC_KEY` and `ARKOSE_PRIVATE_KEY`.
+> See, [Azure-Samples/active-directory-b2c-node-sign-up-user-flow-arkose](https://github.com/Azure-Samples/active-directory-b2c-node-sign-up-user-flow-arkose).
## Integrate with Azure AD B2C
-### Part 1 ΓÇô Create a ArkoseSessionToken custom attribute
-
-To create a custom attribute, follow these steps:
-
-1. Go to **Azure portal** > **Azure AD B2C**
-
-2. Select **User attributes**
-
-3. Select **Add**
-
-4. Enter **ArkoseSessionToken** as the attribute Name
-
-5. Select **Create**
-
-Learn more about [custom attributes](./user-flow-custom-attributes.md?pivots=b2c-user-flow).
-
-### Part 2 - Create a user flow
-
-The user flow can be either for **sign-up** and **sign in** or just **sign-up**. The Arkose Labs user flow will only be shown during sign-up.
-
-1. See the [instructions](./tutorial-create-user-flows.md) to create a user flow. If using an existing user flow, it must be of the **Recommended** version type.
-
-2. In the user flow settings, go to **User attributes** and select the **ArkoseSessionToken** claim.
-
-![Image shows how to select custom attributes](media/partner-arkose-labs/select-custom-attribute.png)
-
-### Part 3 - Configure custom HTML, JavaScript, and page layouts
-
-Go to the provided [HTML script](https://github.com/Azure-Samples/active-directory-b2c-node-sign-up-user-flow-arkose/blob/main/Assets/selfAsserted.html). The file contains an HTML template with JavaScript `<script>` tags that will do three things:
-
-1. Load the Arkose Labs script, which renders the Arkose Labs widget and does client-side Arkose Labs validation.
+### Create an ArkoseSessionToken custom attribute
-2. Hide the `extension_ArkoseSessionToken` input element and label, corresponding to the `ArkoseSessionToken` custom attribute, from the UI shown to the user.
+To create a custom attribute:
-3. When a user completes the Arkose Labs challenge, Arkose Labs verifies the user's response and generates a token. The callback `arkoseCallback` in the custom JavaScript sets the value of `extension_ArkoseSessionToken` to the generated token value. This value will be submitted to the API endpoint as described in the next section.
+1. Go to the [Azure portal](https://ms.portal.azure.com/#home), then to **Azure AD B2C**.
+2. Select **User attributes**.
+3. Select **Add**.
+4. Enter **ArkoseSessionToken** as the attribute Name.
+5. Select **Create**.
- See [this article](https://arkoselabs.atlassian.net/wiki/spaces/DG/pages/214176229/Standard+Setup) to learn about Arkose Labs client-side validation.
+Learn more: [Define custom attributes in Azure Active Directory B2C](./user-flow-custom-attributes.md?pivots=b2c-user-flow)
-Follow the steps mentioned to use the custom HTML and JavaScript for your user flow.
+### Create a user flow
-1. Modify [selfAsserted.html](https://github.com/Azure-Samples/active-directory-b2c-node-sign-up-user-flow-arkose/blob/main/Assets/selfAsserted.html) file so that `<ARKOSE_PUBLIC_KEY>` matches the value you generated for the client-side validation, and used to load the Arkose Labs script for your account.
+The user flow is for sign-up and sign-in, or sign-up. The Arkose Labs user flow appears during sign-up.
-2. Host the HTML page on a Cross-origin Resource Sharing (CORS) enabled web endpoint. [Create an Azure blob storage account](../storage/common/storage-account-create.md?tabs=azure-portal&toc=%2fazure%2fstorage%2fblobs%2ftoc.json) and [configure CORS](/rest/api/storageservices/cross-origin-resource-sharing--cors--support-for-the-azure-storage-services).
+1. [Create user flows and custom policies in Azure Active Directory B2C](./tutorial-create-user-flows.md). If using a user flow, use **Recommended**.
+2. In the user flow settings, go to **User attributes**.
+3. Select the **ArkoseSessionToken** claim.
- >[!NOTE]
- >If you have your own custom HTML, copy and paste the `<script>` elements onto your HTML page.
+ ![Screenshot of the Arkose Session Token under User attributes.](media/partner-arkose-labs/select-custom-attribute.png)
-3. Follow these steps to configure the page layouts
+### Configure custom HTML, JavaScript, and page layout
- a. From the Azure portal, go to **Azure AD B2C**
+1. Go to [Azure-Samples/active-directory-b2c-node-sign-up-user-flow-arkose](https://github.com/Azure-Samples/active-directory-b2c-node-sign-up-user-flow-arkose/blob/main/Assets/selfAsserted.html).
+2. Find the HTML template with JavaScript `<script>` tags. These do three things:
- b. Navigate to **User flows** and select your user flow
+* Load the Arkose Labs script, which renders their widget and does client-side Arkose Labs validation.
+* Hide the `extension_ArkoseSessionToken` input element and label, corresponding to the `ArkoseSessionToken` custom attribute.
+* When a user completes the Arkose Labs challenge, the user response is verified and a token generated. The callback `arkoseCallback` in the custom JavaScript sets the value of `extension_ArkoseSessionToken` to the generated token value. This value is submitted to the API endpoint.
- c. Select **Page layouts**
+ > [!NOTE]
+ > Go to developer.arkoselabs.com for [Client-Side Instructions](https://developer.arkoselabs.com/docs/standard-setup). Follow the steps to use the custom HTML and JavaScript for your user flow.
- d. Select **Local account sign up page layout**
+3. In Azure-Samples, modify [selfAsserted.html](https://github.com/Azure-Samples/active-directory-b2c-node-sign-up-user-flow-arkose/blob/main/Assets/selfAsserted.html) file so `<ARKOSE_PUBLIC_KEY>` matches the value you generated for the client-side validation.
+4. Host the HTML page on a Cross-Origin Resource Sharing (CORS) enabled web endpoint.
+5. [Create a storage account](../storage/common/storage-account-create.md?tabs=azure-portal&toc=%2fazure%2fstorage%2fblobs%2ftoc.json).
+6. [CORS support for Azure Storage](/rest/api/storageservices/cross-origin-resource-sharing--cors--support-for-the-azure-storage-services).
- e. Toggle **Use custom page content** to **YES**
+ >[!NOTE]
+ >If you have custom HTML, copy and paste the `<script>` elements onto your HTML page.
- f. Paste the URI where your custom HTML lives in **Use custom page content**
+7. In the Azure portal, go to **Azure AD B2C**.
+8. Navigate to **User flows**.
+9. Select your user flow.
+10. Select **Page layouts**.
+11. Select **Local account sign up page layout**.
+12. For **Use custom page content**, select **YES**.
+13. In **Use custom page content**, paste your custom HTML URI.
+14. (Optional) If you use social identity providers, repeat steps for **Social account sign-up page**.
- g. If you're using social Identity providers, repeat **step e** and **f** for **Social account sign-up page** layout.
+ ![Screenshot of Layout name options and Social acount sign-up page options, under Page layouts.](media/partner-arkose-labs/page-layouts.png)
- ![image showing page layouts](media/partner-arkose-labs/page-layouts.png)
+15. From your user flow, go to **Properties**.
+16. Select **Enable JavaScript**.
-4. From your user flow, go to **Properties** and select **Enable JavaScript** enforcing page layout (preview). See this [article](./javascript-and-page-layout.md?pivots=b2c-user-flow) to learn more.
+Learn more: [Enable JavaScript and page layout versions in Azure Active Directory B2C](./javascript-and-page-layout.md?pivots=b2c-user-flow)
-### Part 4 - Create and deploy your API
+### Create and deploy your API
-Install the [Azure Functions extension](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azurefunctions) for Visual Studio Code.
+This section assumes you use Visual Studio Code to deploy Azure Functions. You can use the Azure portal, terminal, or command prompt to deploy.
->[!Note]
->Steps mentioned in this section assumes you are using Visual Studio Code to deploy the Azure Function. You can also use Azure portal, terminal or command prompt, or any other code editor to deploy.
+Go to Visual Studio Marketplace to install [Azure Functions](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azurefunctions) for Visual Studio Code.
#### Run the API locally
-1. Navigate to the Azure extension in Visual Studio code on the left navigation bar. Select **Local Project** folder representing your local Azure Function.
-
-2. Press **F5** or use the **Debug** > **Start Debugging** menu to launch the debugger and attach to the Azure Functions host. This command automatically uses the single debug configuration that Azure Function created.
-
-3. The Azure Function extension will automatically generate a few files for local development, install dependencies, and install the Function Core tools if not already present. These tools help with the debugging experience.
-
-4. Output from the Function Core tool appears in the Visual Studio Code **Terminal** panel. Once the host has started, **Alt+click** the local URL shown in the output to open the browser and run the function. In the Azure Functions explorer, right-click on the function to see the URL of the locally hosted function.
-
-To redeploy the local instance during testing, repeat steps 1 to 4.
+1. In Visual Studio code, in the left navigation, go to the Azure extension.
+2. Select the **Local Project** folder for your local Azure Function.
+3. Press **F5** or select **Debug** > **Start Debugging**. This command uses the debug configuration Azure Function created.
+4. Azure Function generates files for local development, installs dependencies, and the Function Core tools, if needed.
+5. In the Visual Studio Code **Terminal** panel, output from the Function Core tool appears.
+6. When the host starts, select **Alt+click** on the local URL in the output.
+7. The browser opens and runs the function.
+8. In the Azure Functions explorer, right-click the function to see the locally hosted function URL.
#### Add environment variables
-This sample protects the web API endpoint using [HTTP Basic authentication](https://tools.ietf.org/html/rfc7617).
-
-Username and password are stored as environment variables and not as part of the repository. See [local.settings.json](../azure-functions/functions-develop-local.md#local-settings-file) file for more information.
+The sample in this section protects the web API endpoint when using HTTP Basic authentication. Learn more on the Internet Engineering Task Force page [RFC 7617: The Basic Authentication](https://tools.ietf.org/html/rfc7617).
-1. Create a local.settings.json file in your root folder
+Username and password are stored as environment variables, not part of the repository. Learn more on [Code and test Azure Functions locally, Local settings file](../azure-functions/functions-develop-local.md#local-settings-file).
-2. Copy and paste the below code onto the file:
+1. In your root folder, create a local.settings.json file.
+2. Copy and paste the following code onto the file:
``` {
Username and password are stored as environment variables and not as part of th
} } ```
-The **BASIC_AUTH_USERNAME** and **BASIC_AUTH_PASSWORD** values are going to be the credentials used to authenticate the API call to your Azure Function. Choose your desired values.
+3. The **BASIC_AUTH_USERNAME** and **BASIC_AUTH_PASSWORD** are the credentials to authenticate the API call to your Azure Function. Select values.
-The `<ARKOSE_PRIVATE_KEY>` is the server-side secret you generated in the Arkose Labs service. It's used to call the [Arkose Labs server-side validation API](https://arkoselabs.atlassian.net/wiki/spaces/DG/pages/266214758/Server-Side+Instructions) to validate the value of the `ArkoseSessionToken` generated by the front end.
+* <ARKOSE_PRIVATE_KEY> is the server-side secret you generated in the Arkose Labs platform.
+ * It calls the Arkose Labs server-side validation API to validate the value of the `ArkoseSessionToken` generated by the front end.
+ * See, [Server-Side Instructions](https://developer.arkoselabs.com/docs/server-side-instructions-v4).
+* <B2C_EXTENSIONS_APP_ID> is the application ID used by Azure AD B2C to store custom attributes in the directory.
-The `<B2C_EXTENSIONS_APP_ID>` is the application ID of the app used by Azure AD B2C to store custom attributes in the directory. You can find this application ID by navigating to App registrations, searching for b2c-extensions-app, and copying the Application (client) ID from the **Overview** pane. Remove the `-` characters.
+4. Navigate to App registrations.
+5. Search for b2c-extensions-app.
+6. From the **Overview** pane, copy the Application (client) ID.
+7. Remove the `-` characters.
-![Image shows search by app id](media/partner-arkose-labs/search-app-id.png)
+ ![Screenshot of the display name, application ID, and creation date under App registrations.](media/partner-arkose-labs/search-app-id.png)
#### Deploy the application to the web
-1. Follow the steps mentioned in [this](/azure/javascript/tutorial-vscode-serverless-node-04) guide to deploy your Azure Function to the cloud. Copy the endpoint web URL of your Azure Function.
+1. Deploy your Azure Function to the cloud. Learn more with [Azure Functions documentation](/azure/azure-functions/).
+2. Copy the endpoint web URL of your Azure Function.
+3. After deployment, select the **Upload settings** option.
+4. Your environment variables are uploaded to the Application settings of the app service. Learn more on [Application settings in Azure](../azure-functions/functions-develop-vs-code.md?tabs=csharp#application-settings-in-azure).
-2. Once deployed, select the **Upload settings** option. It will upload your environment variables onto the [Application settings](../azure-functions/functions-develop-vs-code.md?tabs=csharp#application-settings-in-azure) of the App service. These application settings can also be configured or [managed via the Azure portal.](../azure-functions/functions-how-to-use-azure-function-app-settings.md)
-
-See [this article](../azure-functions/functions-develop-vs-code.md?tabs=csharp#republish-project-files) to learn more about Visual Studio Code development for Azure Functions.
+ >[!NOTE]
+ >You can [manage your function app](../azure-functions/functions-how-to-use-azure-function-app-settings.md). See also, [Deploy project files](../azure-functions/functions-develop-vs-code.md?tabs=csharp#republish-project-files) to learn about Visual Studio Code development for Azure Functions.
#### Configure and enable the API connector
-[Create an API connector](./add-api-connector.md) and enable it for your user flow.
-Your API connector configuration should look like:
-
-![Image shows how to configure api connector](media/partner-arkose-labs/configure-api-connector.png)
+1. Create an API connector. See, [Add an API connector to a sign-up user flow](./add-api-connector.md).
+2. Enable it for your user flow.
-- **Endpoint URL** - is the Function URL you copied earlier while you deployed Azure Function.
+ ![Screenshot of Display name, Endpoint URL, Username, and Password on Configure and an API connector.](media/partner-arkose-labs/configure-api-connector.png)
-- **Username and Password** - are the Username and Password you defined as environment variables earlier.
+- **Endpoint URL** - The Function URL you copied while you deployed Azure Function
+- **Username** - The username you defined
+- **Password** - The password you defined
-To enable the API connector, in the **API connector** settings for your user flow, select the API connector to be invoked at the **Before creating the user** step. This will invoke the API when a user selects **Create** in the sign-up flow. The API will do a server-side validation of the `ArkoseSessionToken` value, which was set by the callback of the Arkose widget `arkoseCallback`.
+3. In the **API connector** settings for your user flow, select the API connector to be invoked at **Before creating the user**.
+4. The API validates the `ArkoseSessionToken` value.
-![Image shows enabling api connector](media/partner-arkose-labs/enable-api-connector.png)
+ ![Screenshot of the entry for Before creating the user, under API connectors.](media/partner-arkose-labs/enable-api-connector.png)
## Test the user flow
-1. Open the Azure AD B2C tenant and under Policies select **User flows**.
-
-2. Select your previously created User Flow.
-
-3. Select **Run user flow** and select the settings:
-
- a. Application: select the registered app (sample is JWT)
-
- b. Reply URL: select the redirect URL
-
- c. Select **Run user flow**.
-
-4. Go through the sign-up flow and create an account
-
-5. Sign out
-
-6. Go through the sign-in flow
-
-7. An Arkose Labs puzzle will appear after you select **continue**.
-
-## Additional resources
--- [Sample codes](https://github.com/Azure-Samples/active-directory-b2c-node-sign-up-user-flow-arkose) for Azure AD B2C sign-up user flow--- [Custom policies in Azure AD B2C](./custom-policy-overview.md)--- [Get started with custom policies in Azure AD B2C](./tutorial-create-user-flows.md?pivots=b2c-custom-policy)
+1. Open the Azure AD B2C tenant.
+2. Under **Policies**, select **User flows**.
+3. Select your created user flow.
+4. Select **Run user flow**.
+5. For **Application** select the registered app (the example is JWT).
+6. For **Reply URL**, select the redirect URL.
+7. Select **Run user flow**.
+8. Perform the sign-up flow.
+9. Create an account.
+10. Sign out.
+11. Perform the sign-in flow.
+12. Select **Continue**.
+13. An Arkose Labs puzzle appears.
+
+## Resources
+
+- [Azure-Samples/active-directory-b2c-node-sign-up-user-flow-arkose](https://github.com/Azure-Samples/active-directory-b2c-node-sign-up-user-flow-arkose)
+ - Find the Azure AD B2C sign-up user flow
+- [Azure AD B2C custom policy overview](./custom-policy-overview.md)
+- [Tutorial: Create user flows and custom policies in Azure Active Directory B2C](./tutorial-create-user-flows.md?pivots=b2c-custom-policy)
active-directory-b2c Partner Strata https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory-b2c/partner-strata.md
description: Learn how to integrate Azure AD B2C authentication with whoIam for user verification -+ Previously updated : 09/13/2022 Last updated : 12/16/2022
-# Tutorial for extending Azure AD B2C to protect on-premises applications using Strata
+# Tutorial to configure Azure Active Directory B2C with Strata
-In this sample tutorial, learn how to integrate Azure Active Directory (AD) B2C with Strata's [Maverics Identity Orchestrator](https://www.strata.io/maverics-identity-orchestrator/).
-Maverics Identity Orchestrator extends Azure AD B2C to protect on-premises applications. It connects to any identity system, transparently migrates users and credentials, synchronizes policies and configurations, and abstracts authentication and session management. Using Strata enterprises can quickly transition from legacy to Azure AD B2C without rewriting applications. The solution has the following benefits:
+In this tutorial, learn how to integrate Azure Active Directory B2C (Azure AD B2C) with Strata [Maverics Identity Orchestrator](https://www.strata.io/maverics-identity-orchestrator/), which helps protect on-premises applications. It connects to identity systems, migrates users and credentials, synchronizes policies and configurations, and abstracts authentication and session management. Use Strata to transition from legacy, to Azure AD B2C, without rewriting applications.
-- **Customer Single Sign-On (SSO) to on-premises hybrid apps**: Azure AD B2C supports customer SSO with Maverics Identity Orchestrator. Users sign in with their accounts that are hosted in Azure AD B2C or social Identity provider (IdP). Maverics extends SSO to apps that have been historically secured by legacy identity systems like Symantec SiteMinder.
+The solution has the following benefits:
-- **Extend standards-based SSO to apps without rewriting them**: Use Azure AD B2C to manage user access and enable SSO with Maverics Identity Orchestrator SAML or OIDC Connectors.--- **Easy configuration**: Azure AD B2C provides a simple step-by-step user interface for connecting Maverics Identity Orchestrator SAML or OIDC connectors to Azure AD B2C.
+- **Customer single sign-on (SSO) to on-premises hybrid apps** - Azure AD B2C supports customer SSO with Maverics Identity Orchestrator
+ - Users sign in with accounts hosted in Azure AD B2C or identity provider (IdP)
+ - Maverics proves SSO to apps historically secured by legacy identity systems like Symantec SiteMinder
+- **Extend standards SSO to apps** - Use Azure AD B2C to manage user access and enable SSO with Maverics Identity Orchestrator Security Assertion Markup Language (SAML) or OpenID Connect (OIDC) connectors
+- **Easy configuration** - Connect Maverics Identity Orchestrator SAML or OIDC connectors to Azure AD B2C
## Prerequisites To get started, you'll need: -- An Azure AD subscription. If you don't have a subscription, you can get a [free account](https://azure.microsoft.com/free/).--- An [Azure AD B2C tenant](./tutorial-create-tenant.md) that's linked to your Azure subscription.--- An instance of [Azure Key Vault](https://azure.microsoft.com/services/key-vault/) to store secrets that are used by Maverics Identity Orchestrator. It's used to connect to Azure AD B2C or other attribute providers such as a Lightweight Directory Access Protocol (LDAP) directory or database.--- An instance of [Maverics Identity Orchestrator](https://www.strata.io/maverics-identity-orchestrator/) that is installed and running in an Azure virtual machine or the on-premises server of your choice. For information about how to get the software and access to the installation and configuration documentation, contact [Strata](https://www.strata.io/contact/)--- An on-premises application that you'll transition from a legacy identity system to Azure AD B2C.
+- An Azure AD subscription
+ - If you don't have one, you can get an [Azure free account](https://azure.microsoft.com/free/)
+- An [Azure AD B2C tenant](./tutorial-create-tenant.md) linked to your Azure subscription
+- An instance of [Azure Key Vault](https://azure.microsoft.com/services/key-vault/) to store secrets used by Maverics Identity Orchestrator. Connect to Azure AD B2C or other attribute providers such as a Lightweight Directory Access Protocol (LDAP) directory or database.
+- An instance of [Maverics Identity Orchestrator](https://www.strata.io/maverics-identity-orchestrator/) running in an Azure virtual machine (VM), or an on-premises server. To get software and documentation, go to strata.io [Contact Strata Identity](https://www.strata.io/contact/).
+- An on-premises application to transition to Azure AD B2C
## Scenario description
-Strata's Maverics integration includes the following components:
+Maverics Identity Orchestrator integration includes the following components:
-- **Azure AD B2C**: The authorization server that's responsible for verifying the user's credentials. Authenticated users may access on-premises apps using a local account stored in the Azure AD B2C directory.--- **An external social or enterprise IdP**: Could be any OpenID Connect provider, Facebook, Google, or GitHub. For more information, see [Add an identity provider](./add-identity-provider.md). --- **Strata's Maverics Identity Orchestrator**: The service that orchestrates user sign-on and transparently passes identity to apps through HTTP headers.
+- **Azure AD B2C** - The authorization server that verifies user credentials
+ - Authenticated users access on-premises apps using a local account in the Azure AD B2C directory
+- **External social or enterprise identity provider (IdP)**: An OIDC provider, Facebook, Google, or GitHub
+ - See, [Add an identity provider to your Azure Active Directory B2C tenant](./add-identity-provider.md)
+- **Strata Maverics Identity Orchestrator**: The user sign-on service that passes identity to apps through HTTP headers
The following architecture diagram shows the implementation.
-![Image show the architecture of an Azure AD B2C integration with Strata Maverics to enable access to hybrid apps](./media/partner-strata/strata-architecture-diagram.png)
-
-| Steps | Description |
-|:-|:|
-| 1. | The user makes a request to access the on-premises hosted application. Maverics Identity Orchestrator proxies the request made by the user to the application.|
-| 2. | The Orchestrator checks the user's authentication state. If it doesn't receive a session token, or the supplied session token is invalid, then it sends the user to Azure AD B2C for authentication.|
-| 3. | Azure AD B2C sends the authentication request to the configured social IdP.|
-| 4. | The IdP challenges the user for credentials. Depending on the IdP, the user may require to do Multi-factor authentication (MFA).|
-| 5. | The IdP sends the authentication response back to Azure AD B2C. Optionally, the user may create a local account in the Azure AD B2C directory during this step.|
-| 6. | Azure AD B2C sends the user request to the endpoint specified during the Orchestrator app's registration in the Azure AD B2C tenant.|
-| 7. | The Orchestrator evaluates access policies and calculates attribute values to be included in HTTP headers forwarded to the app. During this step, the Orchestrator may call out to additional attribute providers to retrieve the information needed to set the header values correctly. The Orchestrator sets the header values and sends the request to the app.|
-| 8. | The user is now authenticated and has access to the app.|
-
-## Get Maverics Identity Orchestrator
-To get the software you'll use to integrate your legacy on-premises app with Azure AD B2C, contact [Strata](https://www.strata.io/contact/). After you get the software, follow the steps below to determine Orchestrator-specific prerequisites and perform the required installation and configuration steps.
-
-## Configure your Azure AD B2C tenant
+ ![Diagram of the Azure AD B2C integration architecture, with Maverics Identity Orchestrator, for access to hybrid apps.](./media/partner-strata/strata-architecture-diagram.png)
-1. **Register your application**
+1. The user requests access the on-premises hosted application. Maverics Identity Orchestrator proxies the request to the application.
+2. Orchestrator checks the user authentication state. If there's no session token, or the token is invalid, the user goes to Azure AD B2C for authentication
+3. Azure AD B2C sends the authentication request to the configured social IdP.
+4. The IdP challenges the user for credential. Multi-factor authentication (MFA) might be required.
+5. The IdP sends the authentication response to Azure AD B2C. The user can create a local account in the Azure AD B2C directory.
+6. Azure AD B2C sends the user request to the endpoint specified during the Orchestrator app registration in the Azure AD B2C tenant.
+7. The Orchestrator evaluates access policies and attribute values for HTTP headers forwarded to the app. Orchestrator might call to other attribute providers to retrieve information to set the header values. The Orchestrator sends the request to the app.
+8. The user is authenticated and has access to the app.
- a. [Register the Orchestrator as an application](./tutorial-register-applications.md?tabs=app-reg-ga) in Azure AD B2C tenant.
- >[!Note]
- >You'll need the tenant name and identifier, client ID, client secret, configured claims, and redirect URI later when you configure your Orchestrator instance.
+## Maverics Identity Orchestrator
- b. Grant Microsoft MS Graph API permissions to your applications. Your application will need the following permissions: `offline_access`, `openid`.
+To get software and documentation, go to strata.io [Contact Strata Identity](https://www.strata.io/contact/). Determine Orchestrator prerequisites. Install and configure.
- c. Add a redirect URI for your application. This URI will match the `oauthRedirectURL` parameter of your Orchestrator's Azure AD B2C connector configuration, for example, `https://example.com/oidc-endpoint`.
+## Configure your Azure AD B2C tenant
-2. **Create a user flow**: Create a [sign-up and sign-in user flow](./tutorial-create-user-flows.md).
+During the following instructions, document:
-3. **Add an IdP**: Choose to sign in your user with either a local account or a social or enterprise [IdP](./add-identity-provider.md).
+* Tenant name and identifier
+* Client ID
+* Client secret
+* Configured claims
+* Redirect URI
-4. **Define user attributes**: Define the attributes to be collected during sign-up.
+1. [Register a web application in Azure Active Directory B2C](./tutorial-register-applications.md?tabs=app-reg-ga) in Azure AD B2C tenant.
+2. Grant Microsoft MS Graph API permissions to your applications. Use permissions: `offline_access`, `openid`.
+3. Add a redirect URI that matches the `oauthRedirectURL` parameter of the Orchestrator Azure AD B2C connector configuration, for example, `https://example.com/oidc-endpoint`.
+4. [Create user flows and custom policies in Azure Active Directory B2C](./tutorial-create-user-flows.md).
+5. [Add an identity provider to your Azure Active Directory B2C tenant](./add-identity-provider.md). Sign in your user with a local account, a social, or enterprise.
+6. Define the attributes to be collected during sign-up.
+7. Specify attributes to be returned to the application with your Orchestrator instance.
-5. **Specify application claims**: Specify the attributes to be returned to the application via your Orchestrator instance. The Orchestrator consumes attributes from claims returned by Azure AD B2C and can retrieve additional attributes from other connected identity systems such as LDAP directories and databases. Those attributes are set in HTTP headers and sent to the upstream on-premises application.
+> [!NOTE]
+> The Orchestrator consumes attributes from claims returned by Azure AD B2C and can retrieve attributes from connected identity systems such as LDAP directories and databases. Those attributes are in HTTP headers and sent to the upstream on-premises application.
## Configure Maverics Identity Orchestrator
-In the following sections, we'll walk you through the steps required to configure your Orchestrator instance. For additional support and documentation, contact [Strata](https://www.strata.io/contact/).
+Use the instructions in the following sections to configure an Orchestrator instance.
### Maverics Identity Orchestrator server requirements You can run your Orchestrator instance on any server, whether on-premises or in a public cloud infrastructure by provider such as Azure, AWS, or GCP. -- OS: REHL 7.7 or higher, CentOS 7+--- Disk: 10 GB (small)--- Memory: 16 GB--- Ports: 22 (SSH/SCP), 443, 80--- Root access for install/administrative tasks--- Maverics Identity Orchestrator runs as user `maverics` under `systemd`--- Network egress from the server hosting Maverics Identity Orchestrator with the ability to reach your Azure AD tenant.
+- **Operating System**: REHL 7.7 or higher, CentOS 7+
+- **Disk**: 10 GB (small)
+- **Memory**: 16 GB
+- **Ports**: 22 (SSH/SCP), 443, 80
+- **Root access**: For install/administrative tasks
+- **Maverics Identity Orchestrator**: Runs as user `maverics` under `systemd`
+- **Network egress**: From the server hosting Maverics Identity Orchestrator that can reach your Azure AD tenant
### Install Maverics Identity Orchestrator
-1. Obtain the latest Maverics RPM package. Place the package on the system on which you'd like to install Maverics. If you're copying the file to a remote host, [SCP](https://www.ssh.com/ssh/scp/) is a useful tool.
-
-2. To install the Maverics package, run the following command replacing your filename in place of `maverics.rpm`.
+1. Obtain the latest Maverics RPM package.
+2. Place the package on the system you'd like to install Maverics. If you're copying to a remote host, use SSH [scp](https://www.ssh.com/ssh/scp/).
+3. Run the following command. Use your filename to replace `maverics.rpm`.
`sudo rpm -Uvf maverics.rpm`
- By default, Maverics is installed in the `/usr/local/bin` directory.
+ By default, Maverics is in the `/usr/local/bin` directory.
-3. After installing Maverics, it will run as a service under `systemd`. To verify Maverics service is running, run the following command:
+4. Maverics runs as a service under `systemd`.
+5. To verify Maverics service is running, run the following command:
`sudo service maverics status`
- If the Orchestrator installation was successful, you should see a message similar to this:
+6. The following message (or similar) appears.
``` Redirecting to /bin/systemctl status maverics.service
Redirecting to /bin/systemctl status maverics.service
ΓööΓöÇ330772 /usr/local/bin/maverics --config /etc/maverics/maverics.yaml ```
-4. If the Maverics service fails to start, execute the following command to investigate the problem:
+> [!NOTE]
+> If Maverics fails to start, execute the following command:
`journalctl --unit=maverics.service --reverse`
- The most recent log entry will appear at the beginning of the output.
-
-After installing Maverics, the default `maverics.yaml` file is created in the `/etc/maverics` directory.
+ The most recent log entry appears in the output.
-Configure your Orchestrator to protect the application. Integrate with Azure AD B2C, store, and retrieve secrets from [Azure Key Vault](https://azure.microsoft.com/services/key-vault/?OCID=AID2100131_SEM_bf7bdd52c7b91367064882c1ce4d83a9:G:s&ef_id=bf7bdd52c7b91367064882c1ce4d83a9:G:s&msclkid=bf7bdd52c7b91367064882c1ce4d83a9). Define the location where the Orchestrator should read its configuration from.
+7. The default `maverics.yaml` file is created in the `/etc/maverics` directory.
+8. Configure your Orchestrator to protect the application.
+9. Integrate with Azure AD B2C, and store.
+10. Retrieve secrets from [Azure Key Vault](https://azure.microsoft.com/services/key-vault/?OCID=AID2100131_SEM_bf7bdd52c7b91367064882c1ce4d83a9:G:s&ef_id=bf7bdd52c7b91367064882c1ce4d83a9:G:s&msclkid=bf7bdd52c7b91367064882c1ce4d83a9).
+11. Define the location from where the Orchestrator reads its configuration.
### Supply configuration using environment variables
-Provide config to your Orchestrator instances through environment variables.
+Configure your Orchestrator instances with environment variables.
`MAVERICS_CONFIG`
-This environment variable tells the Orchestrator instance which YAML configuration files to use and where to find them during startup or restarts. Set the environment variable in `/etc/maverics/maverics.env`.
+This environment variable informs the Orchestrator instance what YAML configuration files to use, and where to find them during startup or restart. Set the environment variable in `/etc/maverics/maverics.env`.
-### Create the Orchestrator's TLS configuration
+### Create the Orchestrator TLS configuration
-The `tls` field in your `maverics.yaml` declares the transport layer security configurations your Orchestrator instance will use. Connectors can use TLS objects and the Orchestrator server.
+The `tls` field in `maverics.yaml` declares the transport layer security configurations your Orchestrator instance uses. Connectors use TLS objects and the Orchestrator server.
-The `maverics` key is reserved for the Orchestrator server. All other keys are available and can be used to inject a TLS object into a given connector.
+The `maverics` key is reserved for the Orchestrator server. Use other keys to inject a TLS object into a connector.
```yaml tls:
tls:
### Configure the Azure AD B2C Connector
-Orchestrators use Connectors to integrate with authentication and attribute providers. In this case, this Orchestrators App Gateway uses the Azure AD B2C connector as both an authentication and attribute provider. Azure AD B2C uses the social IdP for authentication and then acts as an attribute provider to the Orchestrator, passing attributes in claims set in HTTP headers.
+Orchestrators use Connectors to integrate with authentication and attribute providers. The Orchestrators App Gateway uses the Azure AD B2C connector as an authentication and attribute provider. Azure AD B2C uses the social IdP for authentication and then provides attributes to the Orchestrator, passing them in claims set in HTTP headers.
-This Connector's configuration corresponds to the app registered in the Azure AD B2C tenant.
+The Connector configuration corresponds to the app registered in the Azure AD B2C tenant.
-1. Copy the client ID, secret, and redirect URI from your app config in your tenant.
-
-2. Give your Connector a name, shown here as `azureADB2C`, and set the connector `type` to be `azure`. Take note of the Connector name as this value is used in other configuration parameters below.
-
-3. For this integration, the `authType` should be set to `oidc`.
-
-4. Set the client ID you copied in step 1 as the value for the `oauthClientID` parameter.
-
-5. Set the client secret you copied in step 1 as the value for the `oauthClientSecret` parameter.
-
-6. Set the redirect URI you copied in step 1 as the value for the `oauthRedirectURL` parameter.
-
-7. The Azure AD B2C OIDC Connector uses the well-known OIDC endpoint to discover metadata, including URLs and signing keys. Set the value of `oidcWellKnownURL` to your tenant's endpoint.
+1. From your app config, copy the Client ID, Client secret, and redirect URI into your tenant.
+2. Enter a Connector name (example is `azureADB2C`).
+3. Set the connector `type` to be `azure`.
+4. Make a note of the Connector name. You'll use this value in other configuration parameters.
+5. Set the `authType` to `oidc`.
+6. For the `oauthClientID` parameter, set the Client ID you copied.
+7. For the `oauthClientSecret` parameter, set the Client secret you copied.
+8. For the `oauthRedirectURL` parameter, set the redirect URI you copied.
+9. The Azure AD B2C OIDC Connector uses the OIDC endpoint to discover metadata, including URLs and signing keys. For the tenant endpoint, use `oidcWellKnownURL`.
```yaml connectors:
connectors:
### Define Azure AD B2C as your authentication provider
-An authentication provider determines how to do authentication for a user who has not presented a valid session as part of the app resource request. Configuration in your Azure AD B2C tenant determines how to challenge a user for credentials and apply additional authentication policies. For example, to require a second factor to complete the authentication process and decide which claims should be returned to the Orchestrator App Gateway after authentication succeeds.
+An authentication provider determines authentication for users who don't present a valid session during an app resource request. Azure AD B2C tenant configuration determines how users are challenged for credentials, while it applies other authentication policies. An example is to require a second factor to complete authentication and decide what is returned to the Orchestrator App Gateway, after authentication.
-The value for the `authProvider` must match your Connector's `name` value.
+The value for the `authProvider` must match your Connector `name` value.
```yaml authProvider: azureADB2C ```
-### Protect your on-premises app with an Orchestrator App Gateway
-
-The Orchestrator's App Gateway configuration declares how Azure AD B2C should protect your application and how users should access the app.
-
-1. Create a name for your App gateway. You can use a friendly name or fully qualified hostname as an identifier for your app.
+### Protect on-premises apps with an Orchestrator App Gateway
-2. Set the `location`. The example here uses the app's root `/`, however, can be any URL path of your application.
-
-3. Define the protected application in `upstream` using the host:port convention: `https://example.com:8080`.
+The Orchestrator App Gateway configuration declares how Azure AD B2C protects your application and how users access the app.
+1. Enter an App gateway name.
+2. Set the `location`. The example uses the app root `/`.
+3. Define the protected application in `upstream`. Use the host:port convention: `https://example.com:8080`.
4. Set the values for error and unauthorized pages.-
-5. Define the HTTP header names and attribute values that must be provided to the application to establish authentication and control access to the app. Header names are arbitrary and typically correspond to the configuration of the app. Attribute values are namespaced by the Connector that supplies them. In the example below, the values returned from Azure AD B2C are prefixed with the Connector name `azureADB2C` where the suffix is the name of the attribute that contains the required value, for example `given_name`.
-
-6. Set the policies to be evaluated and enforced. Three actions are defined: `allowUnauthenticated`, `allowAnyAuthenticated`, and `allowIfAny`. Each action is associated to a `resource` and the policy is evaluated for that `resource`.
+5. Define the HTTP header names and attribute values for the application to establish authentication and control. Header names typically correspond to app configuration. Attribute values are namespaced by the Connector. In the example, values returned from Azure AD B2C are prefixed with the Connector name `azureADB2C`. The suffix is the attribute name with the required value, for example `given_name`.
+6. Set the policies. Three actions are defined: `allowUnauthenticated`, `allowAnyAuthenticated`, and `allowIfAny`. Each action is associated with a `resource`. Policy is evaluated for that `resource`.
>[!NOTE]
->Both `headers` and `policies` use JavaScript or GoLang service extensions to implement arbitrary logic that significantly enhances the default capabilities.
+>`headers` and `policies` use JavaScript or GoLang service extensions to implement arbitrary logic.
```yaml appgateways:
appgateways:
azureADB2C.customAttribute: Rewards Member ```
-### Use Azure Key Vault as your secrets provider
+### Azure Key Vault as secrets provider
-It's important to secure the secrets your Orchestrator uses to connect to Azure AD B2C and any other identity system. Maverics will default to loading secrets in plain text out of `maverics.yaml`, however, in this tutorial, you'll use Azure Key Vault as the secrets provider.
+Secure the secrets your Orchestrator uses to connect to Azure AD B2C, and other identity systems. Maverics load secrets in plain text out of `maverics.yaml`, however, in this tutorial, use Azure Key Vault as the secrets provider.
-Follow the instructions to [create a new Key Vault](../key-vault/secrets/quick-create-portal.md) that your Orchestrator instance will use as a secrets provider. Add your secrets to your vault and take note of the `SECRET NAME` given to each secret. For example, `AzureADB2CClientSecret`.
+Follow the instructions in, [Quickstart: Set and retrieve a secret from Azure Key Vault using the Azure portal](../key-vault/secrets/quick-create-portal.md). Add your secrets to the vault and make a note of the `SECRET NAME` for each secret. For example, `AzureADB2CClientSecret`.
To declare a value as a secret in a `maverics.yaml` config file, wrap the secret with angle brackets:
connectors:
oauthClientSecret: <AzureADB2CClientSecret> ```
-The value specified within the angle brackets must correspond to the `SECRET NAME` given to secret in your Azure Key Vault.
+The value in the angle brackets must correspond to the `SECRET NAME` given to a secret in your Azure Key Vault.
-To load secrets from Azure Key Vault, set the environment variable `MAVERICS_SECRET_PROVIDER` in the file `/etc/maverics/maverics.env`, with the credentials found in the azure-credentials.json file, using the following pattern:
+To load secrets from Azure Key Vault, set the environment variable `MAVERICS_SECRET_PROVIDER` in the file `/etc/maverics/maverics.env`, with the credentials found in the azure-credentials.json file. Use the following pattern:
`MAVERICS_SECRET_PROVIDER='azurekeyvault://<KEYVAULT NAME>.vault.azure.net?clientID=<APPID>&clientSecret=<PASSWORD>&tenantID=<TENANT>'`
-### Put everything together
+### Complete the configuration
-Here is how the Orchestrator's configuration will appear when you complete the configurations outlined above.
+The following information illustrates how Orchestrator configuration appears.
```yaml version: 0.4.2
appgateways:
## Test the flow 1. Navigate to the on-premises application URL, `https://example.com/sonar/dashboard`.-
-2. The Orchestrator should redirect to the page you configured in your user flow.
-
-3. Select the IdP from the list on the page.
-
-4. Once you're redirected to the IdP, supply your credentials as requested, including an MFA token if required by that IdP.
-
-5. After successfully authenticating, you should be redirected to Azure AD B2C, which forwards the app request to the Orchestrator redirect URI.
-
-6. The Orchestrator evaluates policies, calculates headers, and sends the user to the upstream application.
-
-7. You should see the requested application.
+2. The Orchestrator redirects to the user flow page.
+3. From the list, select the IdP.
+4. Enter credentials, including an MFA token, if required by the IdP.
+5. You're redirected to Azure AD B2C, which forwards the app request to the Orchestrator redirect URI.
+6. The Orchestrator evaluates policies, and calculates headers.
+7. The requested application appears.
## Next steps
-For additional information, review the following articles:
--- [Custom policies in Azure AD B2C](./custom-policy-overview.md)--- [Get started with custom policies in Azure AD B2C](tutorial-create-user-flows.md?pivots=b2c-custom-policy)
+- [Azure AD B2C custom policy overview](./custom-policy-overview.md)
+- [Tutorial: Create user flows and custom policies in Azure Active Directory B2C](tutorial-create-user-flows.md?pivots=b2c-custom-policy)
active-directory-b2c Partner Whoiam https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory-b2c/partner-whoiam.md
description: In this tutorial, learn how to integrate Azure AD B2C authentication with WhoIAM for user verification. -+ Previously updated : 09/13/2022 Last updated : 12/19/2022
-# Tutorial for configuring WhoIAM with Azure Active Directory B2C
+# Tutorial to configure Azure Active Directory B2C with WhoIAM
-In this sample tutorial, we provide guidance on how to configure [WhoIAM](https://www.whoiam.ai/brims/) Branded Identity Management System (BRIMS) in your environment and integrate it with Active Directory B2C (Azure AD B2C).
+In this tutorial, learn how to configure WhoIAM Branded Identity Management System (BRIMS) in your environment and integrate it with Azure Active Directory B2C (Azure AD B2C). The BRIMS apps and services are deployed in your environment. They provide user verification with voice, SMS, and email. BRIMS works with your identity and access management solution and is platform-agnostic.
+
+Learn more: [WhoIAM, Products and Services, Branded Identity Management System](https://www.whoiam.ai/brims/)
-BRIMS is a set of apps and services that's deployed in your environment. It provides voice, SMS, and email verification of your user base. BRIMS works in conjunction with your existing identity and access management solution and is platform agnostic.
## Prerequisites To get started, you'll need: -- An Azure AD subscription. If you don't have a subscription, you can get a [free account](https://azure.microsoft.com/free/).--- [An Azure AD B2C tenant](./tutorial-create-tenant.md) that's linked to your Azure subscription.--- A WhoIAM [trial account](https://www.whoiam.ai/contact-us/).
+- An Azure AD subscription
+ - If you don't have one, you can get an [Azure free account](https://azure.microsoft.com/free/)
+- [An Azure AD B2C tenant](./tutorial-create-tenant.md) linked to your Azure subscription
+- A WhoIAM trial account
+ - Go to [WhoIAM, Contact us](https://www.whoiam.ai/contact-us/) to get started
## Scenario description The WhoIAM integration includes the following components: -- An Azure AD B2C tenant. It's the authorization server that verifies the user's credentials based on custom policies defined in it. It's also known as the identity provider.--- An administration portal for managing clients and their configurations.--- An API service that exposes various features through endpoints. --- Azure Cosmos DB, which acts as the back end for both the BRIMS administration portal and the API service.
+- **Azure AD B2C tenant** - The authorization server that verifies user credentials, based on custom policies, know as the identity provider (IdP)
+- **Administration portal** - To manage clients and their configurations
+- **API service** - To expose various features through endpoints
+- **Azure Cosmos DB** - The back end for the BRIMS administration portal and API service
-The following architecture diagram shows the implementation.
+The following diagram shows the implementation architecture.
-![Diagram of the architecture of Azure AD B2C integration with WhoIAM.](media/partner-whoiam/whoiam-architecture-diagram.png)
+ ![Diagram of Azure AD B2C integration with WhoIAM.](media/partner-whoiam/whoiam-architecture-diagram.png)
-|Step | Description |
-|:--| :--|
-| 1. | The user arrives at a page to start the sign-up or sign-in request to an app that uses Azure AD B2C as its identity provider.
-| 2. | As part of authentication, the user requests to either verify ownership of their email or phone or use their voice as a biometric verification factor.
-| 3. | Azure AD B2C makes a call to the BRIMS API service and passes on the user's email address, phone number, and voice recording.
-| 4. | BRIMS uses predefined configurations such as fully customizable email and SMS templates to interact with the user in their respective language in a way that's consistent with the app's style.
-| 5. | After a user's identity verification is complete, BRIMS returns a token to Azure AD B2C to indicate the outcome of the verification. Azure AD B2C then either grants the user access to the app or fails their authentication attempt.
+1. The user signs up or signs in to request an app that uses Azure AD B2C as IdP
+2. The user requests ownership verification of their email, phone, or they use voice as biometric verification
+3. Azure AD B2C calls to the BRIMS API service and passes the user attributes
+4. BRIMS interacts with the user in their own language
+5. After verification, BRIMS returns a token to Azure AD B2C, which grants access, or doesn't.
## Sign up with WhoIAM 1. Contact [WhoIAM](https://www.whoiam.ai/contact-us/) and create a BRIMS account.
+2. Configure the following Azure
-2. Use the sign-up guidelines made available to you and configure the following Azure
-
- - [Azure Key Vault](https://azure.microsoft.com/services/key-vault/): Used for secure storage of passwords, such as mail service passwords.
-
- - [Azure App Service](https://azure.microsoft.com/services/app-service/): Used to host the BRIMS API and admin portal services.
-
- - [Azure Active Directory](https://azure.microsoft.com/services/active-directory/): Used to authenticate administrative users for the admin portal.
-
- - [Azure Cosmos DB](https://azure.microsoft.com/services/cosmos-db/): Used to store and retrieve settings.
-
- - [Application Insights](../azure-monitor/app/app-insights-overview.md) (optional): Used to log in to both the API and the admin portal.
+ * [Key Vault](https://azure.microsoft.com/services/key-vault/): Store passwords
+ * [App Service](https://azure.microsoft.com/services/app-service/): Host the BRIMS API and admin portal services
+ * [Azure Active Directory](https://azure.microsoft.com/services/active-directory/): Authenticate administrative users for the portal
+ * [Azure Cosmos DB](https://azure.microsoft.com/services/cosmos-db/): Store and retrieve settings
+ * [Application Insights overview](../azure-monitor/app/app-insights-overview.md) (optional): Sign in to the API and the portal
3. Deploy the BRIMS API and the BRIMS administration portal in your Azure environment.-
-4. Azure AD B2C custom policy samples are available in your BRIMS sign-up documentation. Follow the documentation to configure your app and use the BRIMS platform for user identity verification.
-
-For more information about WhoIAM's BRIMS, see the [product documentation](https://www.whoiam.ai/brims/).
+4. Follow the documentation to configure your app. Use BRIMS for user identity verification. Azure AD B2C custom policy samples are in the BRIMS sign-up documentation.
+For more information about WhoIAM BRIMS, request documentation on [WhoIAM, Contact Us](https://www.whoiam.ai/brims/).
## Test the user flow
-1. Open the Azure AD B2C tenant. Under **Policies**, select **Identity Experience Framework**.
-
-2. Select your previously created **SignUpSignIn**.
-
-3. Select **Run user flow** and then:
-
- a. For **Application**, select the registered app (the sample is JWT).
+1. Open the Azure AD B2C tenant.
+2. Under **Policies**, select **Identity Experience Framework**.
+3. Select the created **SignUpSignIn**.
+4. Select **Run user flow**.
+5. For **Application**, select the registered app (example is JWT).
+6. For **Reply URL**, select the **redirect URL**.
+7. Select **Run user flow**.
+8. Complete the sign-up flow
+9. Create an account.
+10. After the user attribute is created, the BRIMS service is called.
- b. For **Reply URL**, select the **redirect URL**.
-
- c. Select **Run user flow**.
-
-4. Go through the sign-up flow and create an account.
-
-5. The BRIMS service will be called during the flow, after the user attribute is created. If the flow is incomplete, check that the user isn't saved in the directory.
+> [!TIP]
+> If the flow is incomplete, confirm the user is saved in the directory.
## Next steps
-For additional information, review the following articles:
--- [Custom policies in Azure AD B2C](./custom-policy-overview.md)--- [Get started with custom policies in Azure AD B2C](tutorial-create-user-flows.md?pivots=b2c-custom-policy)
+- [Azure AD B2C custom policy overview](./custom-policy-overview.md)
+- [Tutorial: Create user flows and custom policies in Azure Active Directory B2C](tutorial-create-user-flows.md?pivots=b2c-custom-policy)
active-directory-b2c Partner Zscaler https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory-b2c/partner-zscaler.md
Title: Tutorial - Configure Azure Active Directory B2C with Zscaler
+ Title: Tutorial - Configure Zscaler Private access with Azure Active Directory B2C
+ description: Learn how to integrate Azure AD B2C authentication with Zscaler. -+ Previously updated : 09/13/2022 Last updated : 12/20/2022 # Tutorial: Configure Zscaler Private Access with Azure Active Directory B2C
-In this tutorial, you'll learn how to integrate Azure Active Directory B2C (Azure AD B2C) authentication with [Zscaler Private Access (ZPA)](https://www.zscaler.com/products/zscaler-private-access). ZPA delivers policy-based, secure access to private applications and assets without the cost, hassle, or security risks of a virtual private network (VPN). The Zscaler secure hybrid access offering enables a zero-attack surface for consumer-facing applications when it's combined with Azure AD B2C.
+In this tutorial, learn how to integrate Azure Active Directory B2C (Azure AD B2C) authentication with Zscaler Private Access (ZPA). ZPA is policy-based, secure access to private applications and assets without the overhead or security risks of a virtual private network (VPN). Zscaler secure hybrid access reduces attack surface for consumer-facing applications when combined with Azure AD B2C.
+
+Learn more: Go to [Zscaler](https://www.zscaler.com/products/zscaler-private-access) and select Products & Solutions, Products.
## Prerequisites Before you begin, youΓÇÖll need: -- An Azure subscription. If you don't have a subscription, you can get a [free account](https://azure.microsoft.com/free/). -- [An Azure AD B2C tenant](./tutorial-create-tenant.md) that's linked to your Azure subscription. -- [A ZPA subscription](https://azuremarketplace.microsoft.com/marketplace/apps/aad.zscalerprivateaccess?tab=Overview).
+- An Azure subscription
+ - If you don't have one, you can get an [Azure free account](https://azure.microsoft.com/free/)
+- [An Azure AD B2C tenant](./tutorial-create-tenant.md) linked to your Azure subscription
+- A ZPA subscription
+ - Go to [Azure Marketplace, Zscaler Private Access](https://azuremarketplace.microsoft.com/marketplace/apps/aad.zscalerprivateaccess?tab=Overview)
## Scenario description ZPA integration includes the following components: -- **Azure AD B2C**: The identity provider (IdP) that's responsible for verifying the userΓÇÖs credentials. It's also responsible for signing up a new user. -- **ZPA**: The service that's responsible for securing the web application by enforcing [zero-trust access](https://www.microsoft.com/security/blog/2018/12/17/zero-trust-part-1-identity-and-access-management/#:~:text=Azure%20Active%20Directory%20%28Azure%20AD%29%20provides%20the%20strong%2C,to%20express%20their%20access%20requirements%20in%20simple%20terms.). -- **The web application**: Hosts the service that the user is trying to access.
+- **Azure AD B2C** - The identity provider (IdP) that verifies user credentials
+- **ZPA** - Secures web applications by enforcing Zero Trust access
+ - See, [Zero Trust defined](https://www.microsoft.com/security/blog/2018/12/17/zero-trust-part-1-identity-and-access-management/#:~:text=Azure%20Active%20Directory%20%28Azure%20AD%29%20provides%20the%20strong%2C,to%20express%20their%20access%20requirements%20in%20simple%20terms)
+- **Web application** - Hosts the service users access
The following diagram shows how ZPA integrates with Azure AD B2C.
-![Diagram of Zscaler architecture, showing how ZPA integrates with Azure AD B2C.](media/partner-zscaler/zscaler-architecture-diagram.png)
-
-The sequence is described in the following table:
+ ![Diagram of Zscaler architecture, the ZPA and Azure AD B2C integration.](media/partner-zscaler/zscaler-architecture-diagram.png)
-|Step | Description |
-| :--:| :--|
-| 1 | A user arrives at a ZPA user portal or a ZPA browser-access application.
-| 2 | ZPA requires user context information before it can decide whether to allow the user to access the web application. To authenticate the user, ZPA performs a SAML redirect to the Azure AD B2C login page.
-| 3 | The user arrives at the Azure AB B2C login page. New users sign up to create an account, and existing users log in with their existing credentials. Azure AD B2C validates the user's identity.
-| 4 | Upon successful authentication, Azure AD B2C redirects the user back to ZPA along with the SAML assertion. ZPA verifies the SAML assertion and sets the user context.
-| 5 | ZPA evaluates access policies for the user. If the user is allowed to access the web application, the connection is allowed to pass through.
+1. A user arrives at the ZPA portal, or a ZPA browser-access application, to request access
+2. ZPA collects user attributes. ZPA performs a SAML redirect to the Azure AD B2C sign-in page.
+3. New users sign up and create an account. Current users sign in with credentials. Azure AD B2C validates user identity.
+4. Azure AD B2C redirects the user to ZPA with the SAML assertion, which ZPA verifies. ZPA sets the user context.
+5. ZPA evaluates access policies. The request is allowed or it isn't.
## Onboard to ZPA
-This tutorial assumes that you already have a working ZPA setup. If you're getting started with ZPA, refer to the [step-by-step configuration guide for ZPA](https://help.zscaler.com/zpa/step-step-configuration-guide-zpa).
-
-## Integrate ZPA with Azure AD B2C
-
-### Step 1: Configure Azure AD B2C as an IdP on ZPA
-
-To configure Azure AD B2C as an [IdP on ZPA](https://help.zscaler.com/zpa/configuring-idp-single-sign), do the following:
-
-1. Log in to the [ZPA Admin Portal](https://admin.private.zscaler.com).
-
-1. Go to **Administration** > **IdP Configuration**.
-
-1. Select **Add IdP Configuration**.
+This tutorial assumes ZPA is installed and running.
- The **Add IdP Configuration** pane opens.
+To get started with ZPA, go to help.zscaler.com for [Step-by-Step Configuration Guide for ZPA](https://help.zscaler.com/zpa/step-step-configuration-guide-zpa).
- ![Screenshot of the "IdP Information" tab on the "Add IdP Configuration" pane.](media/partner-zscaler/add-idp-configuration.png)
-
-1. Select the **IdP Information** tab, and then do the following:
-
- a. In the **Name** box, enter **Azure AD B2C**.
- b. Under **Single Sign-On**, select **User**.
- c. In the **Domains** drop-down list, select the authentication domains that you want to associate with this IdP.
-
-1. Select **Next**.
-
-1. Select the **SP Metadata** tab, and then do the following:
-
- a. Under **Service Provider URL**, copy or note the value for later use.
- b. Under **Service Provider Entity ID**, copy or note the value for later use.
-
- ![Screenshot of the "SP Metadata" tab on the "Add IdP Configuration" pane.](media/partner-zscaler/sp-metadata.png)
-
-1. Select **Pause**.
+## Integrate ZPA with Azure AD B2C
-After you've configured Azure AD B2C, the rest of the IdP configuration resumes.
+### Configure Azure AD B2C as an IdP on ZPA
-### Step 2: Configure custom policies in Azure AD B2C
+Configure Azure AD B2C as an IdP on ZPA.
->[!Note]
->This step is required only if you havenΓÇÖt already configured custom policies. If you already have one or more custom policies, you can skip this step.
+For more information, see [Configuring an IdP for single sign-on](https://help.zscaler.com/zpa/configuring-idp-single-sign).
-To configure custom policies on your Azure AD B2C tenant, see [Get started with custom policies in Azure Active Directory B2C](./tutorial-create-user-flows.md?pivots=b2c-custom-policy).
+1. Sign in to the [ZPA Admin portal](https://admin.private.zscaler.com).
+2. Go to **Administration** > **IdP Configuration**.
+3. Select **Add IdP Configuration**.
+4. The **Add IdP Configuration** pane appears.
-### Step 3: Register ZPA as a SAML application in Azure AD B2C
+ ![Screenshot of the IdP Information tab on the Add IdP Configuration pane.](media/partner-zscaler/add-idp-configuration.png)
-To configure a SAML application in Azure AD B2C, see [Register a SAML application in Azure AD B2C](./saml-service-provider.md).
+5. Select the **IdP Information** tab
+6. In the **Name** box, enter **Azure AD B2C**.
+7. Under **Single Sign-On**, select **User**.
+8. In the **Domains** drop-down list, select the authentication domains to associate with the IdP.
+9. Select **Next**.
+10. Select the **SP Metadata** tab.
+11. Under **Service Provider URL**, copy the value to use later.
+12. Under **Service Provider Entity ID**, copy the value to user later.
-In step ["Upload your policy"](./saml-service-provider.md#upload-your-policy), copy or note the IdP SAML metadata URL that's used by Azure AD B2C. You'll need it later.
+ ![Screenshot of the Service Provider Entity ID option on the SP Metadata tab.](media/partner-zscaler/sp-metadata.png)
-Follow the instructions through step ["Configure your application in Azure AD B2C"](./saml-service-provider.md#configure-your-application-in-azure-ad-b2c). In step 4.2, update the app manifest properties as follows:
+13. Select **Pause**.
-- For **identifierUris**: Use the Service Provider Entity ID that you copied or noted earlier in "Step 1.6.b". -- For **samlMetadataUrl**: Skip this property, because ZPA doesn't host a SAML metadata URL. -- For **replyUrlsWithType**: Use the Service Provider URL that you copied or noted earlier in "Step 1.6.a". -- For **logoutUrl**: Skip this property, because ZPA doesn't support a logout URL.
+### Configure custom policies in Azure AD B2C
-The rest of the steps aren't relevant to this tutorial.
+>[!IMPORTANT]
+>Configure custom policies in Azure AD B2C if you havenΓÇÖt configured custom policies.
-### Step 4: Extract the IdP SAML metadata from Azure AD B2C
+For more information, see [Tutorial: Create user flows and custom policies in Azure Active Directory B2C](./tutorial-create-user-flows.md?pivots=b2c-custom-policy).
-Next, you need to obtain a SAML metadata URL in the following format:
+### Register ZPA as a SAML application in Azure AD B2C
-`https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy-name>/Samlp/metadata`
+1. [Register a SAML application in Azure AD B2C](./saml-service-provider.md).
+2. During registration, in **Upload your policy**, copy the IdP SAML metadata URL used by Azure AD B2C to use later.
+3. Follow the instructions until **Configure your application in Azure AD B2C**.
+4. For step 4.2, update the app manifest properties
-Note that `<tenant-name>` is the name of your Azure AD B2C tenant, and `<policy-name>` is the name of the custom SAML policy that you created in the preceding step.
+ * For **identifierUris**, enter the Service Provider Entity ID you copied
+ * For **samlMetadataUrl**, skip this entry
+ * For **replyUrlsWithType**, enter the Service Provider URL you copied
+ * For **logoutUrl**, skip this entry
-For example, the URL might be:
+The remaining steps aren't required.
-`https://safemarch.b2clogin.com/safemarch.onmicrosoft.com/B2C_1A_signup_signin_saml/Samlp/metadata`.
+### Extract the IdP SAML metadata from Azure AD B2C
-Open a web browser and go to the SAML metadata URL. Right-click anywhere on the page, select **Save as**, and then save the file to your computer for use in the next step.
+1. Obtain a SAML metadata URL in the following format:
-### Step 5: Complete the IdP configuration on ZPA
+ `https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy-name>/Samlp/metadata`
-Complete the [IdP configuration in the ZPA Admin Portal](https://help.zscaler.com/zpa/configuring-idp-single-sign) that you partially configured earlier in "Step 1: Configure Azure AD B2C as an IdP on ZPA".
+> [!NOTE]
+> `<tenant-name>` is your Azure AD B2C tenant, and `<policy-name>` is the custom SAML policy that you created.
+> The URL might be:
+> `https://safemarch.b2clogin.com/safemarch.onmicrosoft.com/B2C_1A_signup_signin_saml/Samlp/metadata`.
-1. In the [ZPA Admin Portal](https://admin.private.zscaler.com), go to **Administration** > **IdP Configuration**.
+2. Open a web browser.
+3. Go to the SAML metadata URL.
+4. Right-click on the page.
+5. Select **Save as**.
+6. Save the file to your computer to use later.
-1. Select the IdP that you configured in "Step 1", and then select **Resume**.
+### Complete IdP configuration on ZPA
-1. On the **Add IdP Configuration** pane, select the **Create IdP** tab, and then do the following:
+To complete the IdP configuration:
- a. Under **IdP Metadata File**, upload the metadata file that you saved earlier in "Step 4: Extract the IdP SAML metadata from Azure AD B2C".
- b. Verify that the **Status** for the IdP configuration is **Enabled**.
- c. Select **Save**.
+1. Go to the [ZPA Admin portal](https://admin.private.zscaler.com).
+2. Select **Administration** > **IdP Configuration**.
+3. Select the IdP you configured, and then select **Resume**.
+4. On the **Add IdP Configuration** pane, select the **Create IdP** tab.
+5. Under **IdP Metadata File**, upload the metadata file you saved.
+6. Under **Status**, verify the configuration is **Enabled**.
+7. Select **Save**.
- ![Screenshot of the "Create IdP" tab on the "Add IdP Configuration" pane.](media/partner-zscaler/create-idp.png)
+ ![Screenshot of Enabled status, under SAML attributes, on the Add IdP Configuration pane.](media/partner-zscaler/create-idp.png)
## Test the solution
-Go to a ZPA user portal or a browser-access application, and test the sign-up or sign-in process. The test should result in a successful SAML authentication.
+To confirm SAML authentication, go to a ZPA user portal or a browser-access application, and test the sign-up or sign-in process.
## Next steps
-For more information, review the following articles:
--- [Get started with custom policies in Azure AD B2C](./tutorial-create-user-flows.md?pivots=b2c-custom-policy)
+- [Tutorial: Create user flows and custom policies in Azure Active Directory B2C](./tutorial-create-user-flows.md?pivots=b2c-custom-policy)
- [Register a SAML application in Azure AD B2C](./saml-service-provider.md)-- [Step-by-step configuration guide for ZPA](https://help.zscaler.com/zpa/step-step-configuration-guide-zpa)-- [Configure an IdP for single sign-on](https://help.zscaler.com/zpa/configuring-idp-single-sign)
+- [Step-by-Step Configuration Guide for ZPA](https://help.zscaler.com/zpa/step-step-configuration-guide-zpa)
+- [Configuring an IdP for single sign-on](https://help.zscaler.com/zpa/configuring-idp-single-sign)
active-directory-b2c Saml Identity Provider Technical Profile https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory-b2c/saml-identity-provider-technical-profile.md
Previously updated : 01/11/2022 Last updated : 01/05/2023
Each SAML identity provider has different steps to expose and set the service pr
The following example shows a URL address to the SAML metadata of an Azure AD B2C technical profile: ```
-https://your-tenant-name.b2clogin.com/your-tenant-name/your-policy/samlp/metadata?idptp=your-technical-profile
+https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/your-policy/samlp/metadata?idptp=your-technical-profile
``` Replace the following values:
active-directory-b2c Secure Api Management https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory-b2c/secure-api-management.md
https://<tenant-name>.b2clogin.com/99999999-0000-0000-0000-999999999999/v2.0/
## Configure the inbound policy in Azure API Management
-You're now ready to add the inbound policy in Azure API Management that validates API calls. By adding a [JSON web token (JWT) validation](../api-management/api-management-access-restriction-policies.md#ValidateJWT) policy that verifies the audience and issuer in an access token, you can ensure that only API calls with a valid token are accepted.
+You're now ready to add the inbound policy in Azure API Management that validates API calls. By adding a [JSON web token (JWT) validation](../api-management/validate-jwt-policy.md) policy that verifies the audience and issuer in an access token, you can ensure that only API calls with a valid token are accepted.
1. In the [Azure portal](https://portal.azure.com), go to your Azure API Management instance. 1. Select **APIs**.
active-directory-b2c Whats New Docs https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory-b2c/whats-new-docs.md
Welcome to what's new in Azure Active Directory B2C documentation. This article lists new docs that have been added and those that have had significant updates in the last three months. To learn what's new with the B2C service, see [What's new in Azure Active Directory](../active-directory/fundamentals/whats-new.md) and [Azure AD B2C developer release notes](custom-policy-developer-notes.md)
+## December 2022
+
+### New articles
+
+- [Build a global identity solution with funnel-based approach](azure-ad-b2c-global-identity-funnel-based-design.md)
+- [Azure Active Directory B2C global identity framework proof of concept for funnel-based configuration](azure-ad-b2c-global-identity-proof-of-concept-funnel.md)
+- [Azure Active Directory B2C global identity framework proof of concept for region-based configuration](azure-ad-b2c-global-identity-proof-of-concept-regional.md)
+- [Build a global identity solution with region-based approach](azure-ad-b2c-global-identity-region-based-design.md)
+- [Azure Active Directory B2C global identity framework](azure-ad-b2c-global-identity-solutions.md)
+
+### Updated articles
+
+- [Set up a resource owner password credentials flow in Azure Active Directory B2C](add-ropc-policy.md)
+- [Use API connectors to customize and extend sign-up user flows and custom policies with external identity data sources](api-connectors-overview.md)
+- [Azure Active Directory B2C: Region availability & data residency](data-residency.md)
+- [Tutorial: Configure Experian with Azure Active Directory B2C](partner-experian.md)
+- [Tutorial: Configure Microsoft Dynamics 365 Fraud Protection with Azure Active Directory B2C](partner-dynamics-365-fraud-protection.md)
+- [Tutorial: Configure Azure Active Directory B2C with Datawiza to provide secure hybrid access](partner-datawiza.md)
+- [Configure TheAccessHub Admin Tool with Azure Active Directory B2C](partner-n8identity.md)
+- [Tutorial: Configure Cloudflare Web Application Firewall with Azure Active Directory B2C](partner-cloudflare.md)
+- [Set up a password reset flow in Azure Active Directory B2C](add-password-reset-policy.md)
+- [What is Azure Active Directory B2C?](overview.md)
+- [Technical and feature overview of Azure Active Directory B2C](technical-overview.md)
+ ## November 2022 ### New articles
Welcome to what's new in Azure Active Directory B2C documentation. This article
- [Application types that can be used in Active Directory B2C](application-types.md) - [Publish your Azure Active Directory B2C app to the Azure Active Directory app gallery](publish-app-to-azure-ad-app-gallery.md) - [Quickstart: Set up sign in for a desktop app using Azure Active Directory B2C](quickstart-native-app-desktop.md)-- [Register a single-page application (SPA) in Azure Active Directory B2C](tutorial-register-spa.md)
+- [Register a single-page application (SPA) in Azure Active Directory B2C](tutorial-register-spa.md)
active-directory-domain-services Policy Reference https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory-domain-services/policy-reference.md
Title: Built-in policy definitions for Azure Active Directory Domain Services description: Lists Azure Policy built-in policy definitions for Azure Active Directory Domain Services. These built-in policy definitions provide common approaches to managing your Azure resources. Previously updated : 11/28/2022 Last updated : 01/05/2023
active-directory-domain-services Secure Your Domain https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory-domain-services/secure-your-domain.md
Previously updated : 08/17/2022 Last updated : 01/04/2023
This article shows you how to harden a managed domain by using setting setting s
- Disable NTLM password hash synchronization - Disable the ability to change passwords with RC4 encryption - Enable Kerberos armoring
+- LDAP signing
+- LDAP channel binding
## Prerequisites
To complete this article, you need the following resources:
1. Choose your managed domain, such as *aaddscontoso.com*. 1. On the left-hand side, select **Security settings**. 1. Click **Enable** or **Disable** for the following settings:
- - **TLS 1.2 only mode**
- - **NTLM authentication**
- - **Password synchronization from on-premises**
- - **NTLM password synchronization from on-premises**
- - **RC4 encryption**
- - **Kerberos armoring**
+ - **TLS 1.2 Only Mode**
+ - **NTLM v1 Authentication**
+ - **NTLM Password Synchronization**
+ - **Kerberos RC4 Encryption**
+ - **Kerberos Armoring**
+ - **LDAP Signing**
+ - **LDAP Channel Binding**
![Screenshot of Security settings to disable weak ciphers and NTLM password hash sync](media/secure-your-domain/security-settings.png)
active-directory-domain-services Tutorial Create Instance Advanced https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory-domain-services/tutorial-create-instance-advanced.md
Previously updated : 06/16/2022 Last updated : 01/04/2023 #Customer intent: As an identity administrator, I want to create an Azure Active Directory Domain Services managed domain and define advanced configuration options so that I can synchronize identity information with my Azure Active Directory tenant and provide Domain Services connectivity to virtual machines and applications in Azure.
To complete this tutorial, you need the following resources and privileges:
Although not required for Azure AD DS, it's recommended to [configure self-service password reset (SSPR)][configure-sspr] for the Azure AD tenant. Users can change their password without SSPR, but SSPR helps if they forget their password and need to reset it. > [!IMPORTANT]
-> After you create a managed domain, you can't then move the managed domain to a different resource group, virtual network, subscription, etc. Take care to select the most appropriate subscription, resource group, region, and virtual network when you deploy the managed domain.
+> After you create a managed domain, you can't move it to a different subscription, resource group, or region. Take care to select the most appropriate subscription, resource group, and region when you deploy the managed domain.
## Sign in to the Azure portal
Some considerations for this dedicated virtual network subnet include the follow
* The subnet must have at least 3-5 available IP addresses in its address range to support the Azure AD DS resources. * Don't select the *Gateway* subnet for deploying Azure AD DS. It's not supported to deploy Azure AD DS into a *Gateway* subnet. * Don't deploy any other virtual machines to the subnet. Applications and VMs often use network security groups to secure connectivity. Running these workloads in a separate subnet lets you apply those network security groups without disrupting connectivity to your managed domain.
-* You can't move your managed domain to a different virtual network after you enable Azure AD DS.
For more information on how to plan and configure the virtual network, see [networking considerations for Azure Active Directory Domain Services][network-considerations].
active-directory-domain-services Tutorial Create Instance https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory-domain-services/tutorial-create-instance.md
Previously updated : 06/16/2022 Last updated : 01/04/2023 #Customer intent: As an identity administrator, I want to create an Azure Active Directory Domain Services managed domain so that I can synchronize identity information with my Azure Active Directory tenant and provide Domain Services connectivity to virtual machines and applications in Azure.
To complete this tutorial, you need the following resources and privileges:
Although not required for Azure AD DS, it's recommended to [configure self-service password reset (SSPR)][configure-sspr] for the Azure AD tenant. Users can change their password without SSPR, but SSPR helps if they forget their password and need to reset it. > [!IMPORTANT]
-> You can't move the managed domain to a different subscription, resource group, region, virtual network, or subnet after you create it. Take care to select the most appropriate subscription, resource group, region, virtual network, and subnet when you deploy the managed domain.
+> You can't move the managed domain to a different subscription, resource group, or region after you create it. Take care to select the most appropriate subscription, resource group, and region when you deploy the managed domain.
## Sign in to the Azure portal
active-directory Concept Authentication Methods Manage https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/authentication/concept-authentication-methods-manage.md
Previously updated : 12/06/2022 Last updated : 01/07/2023 +
Tenants are set to either Pre-migration or Migration in Progress by default, dep
:::image type="content" border="true" source="./media/concept-authentication-methods-manage/reason.png" alt-text="Screenshot of reasons for rollback.":::
-## Known issues
-
-* Currently, all users must be enabled for at least one MFA method that isn't passwordless and the user can register in interrupt mode. Possible methods include Microsoft Authenticator, SMS, voice calls, and software OATH/mobile app code. The method(s) can be enabled in any policy. If a user is not eligible for at least one of those methods, the user will see an error during registration and when visiting My Security Info. We're working to improve this experience to enable fully passwordless configurations.
+>[!NOTE]
+>After all authentication methods are fully migrated, the following elements of the legacy SSPR policy remain active:
+> - The **Number of methods required to reset** control: admins can continue to change how many authentication methods must be verified before a user can perform SSPR.
+> - The SSPR administrator policy: admins can continue to register and use any methods listed under the legacy SSPR administrator policy or methods they're enabled to use in the Authentication methods policy.
+>
+> In the future, both of these features will be integrated with the Authentication methods policy.
## Next steps
active-directory Concept Authentication Passwordless https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/authentication/concept-authentication-passwordless.md
The following providers offer FIDO2 security keys of different form factors that
||:--:|::|::|::|:--:|--| | AuthenTrend | ![y] | ![y]| ![y]| ![y]| ![n] | https://authentrend.com/about-us/#pg-35-3 | | Ciright | ![n] | ![n]| ![y]| ![n]| ![n] | https://www.cyberonecard.com/ |
+| Crayonic | ![y] | ![n]| ![y]| ![y]| ![n] | https://www.crayonic.com/keyvault |
| Ensurity | ![y] | ![y]| ![n]| ![n]| ![n] | https://www.ensurity.com/contact | | Excelsecu | ![y] | ![y]| ![y]| ![y]| ![n] | https://www.excelsecu.com/productdetail/esecufido2secu.html | | Feitian | ![y] | ![y]| ![y]| ![y]| ![y] | https://shop.ftsafe.us/pages/microsoft |
The following providers offer FIDO2 security keys of different form factors that
| GoTrustID Inc. | ![n] | ![y]| ![y]| ![y]| ![n] | https://www.gotrustid.com/idem-key | | HID | ![n] | ![y]| ![y]| ![n]| ![n] | https://www.hidglobal.com/contact-us | | Hypersecu | ![n] | ![y]| ![n]| ![n]| ![n] | https://www.hypersecu.com/hyperfido |
+| Identiv | ![n] | ![y]| ![y]| ![n]| ![n] | https://www.identiv.com/products/logical-access-control/utrust-fido2-security-keys/nfc |
| IDmelon Technologies Inc. | ![y] | ![y]| ![y]| ![y]| ![n] | https://www.idmelon.com/#idmelon | | Kensington | ![y] | ![y]| ![n]| ![n]| ![n] | https://www.kensington.com/solutions/product-category/why-biometrics/ | | KONA I | ![y] | ![n]| ![y]| ![y]| ![n] | https://konai.com/business/security/fido |
+| Movenda | ![y] | ![n]| ![y]| ![y]| ![n] | https://www.movenda.com/en/authentication/fido2/overview |
| NeoWave | ![n] | ![y]| ![y]| ![n]| ![n] | https://neowave.fr/en/products/fido-range/ | | Nymi | ![y] | ![n]| ![y]| ![n]| ![n] | https://www.nymi.com/nymi-band | | Octatco | ![y] | ![y]| ![n]| ![n]| ![n] | https://octatco.com/ |
The following providers offer FIDO2 security keys of different form factors that
| Yubico | ![y] | ![y]| ![y]| ![n]| ![y] | https://www.yubico.com/solutions/passwordless/ | - <!--Image references--> [y]: ./media/fido2-compatibility/yes.png [n]: ./media/fido2-compatibility/no.png
active-directory Concept Mfa Licensing https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/authentication/concept-mfa-licensing.md
The following table provides a list of the features that are available in the va
| Access Reviews | | | | | ΓùÅ | | Entitlements Management | | | | | ΓùÅ | | Privileged Identity Management (PIM), just-in-time access | | | | | ΓùÅ |
+| Lifecycle Workflows (preview) | | | | | ΓùÅ |
## Compare multi-factor authentication policies
active-directory How To Authentication Methods Manage https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/authentication/how-to-authentication-methods-manage.md
Previously updated : 12/12/2022 Last updated : 01/07/2023 +
active-directory How To Mfa Number Match https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/authentication/how-to-mfa-number-match.md
description: Learn how to use number matching in MFA notifications
Previously updated : 12/14/2022 Last updated : 01/06/2023
To create the registry key that overrides push notifications:
Value = TRUE 1. Restart the NPS Service.
-If you're using Remote Desktop Gateway, the user account must be configured for phone verification, or Microsoft Authenticator push notifications. If neither option is configured, the user won't be able to meet the Azure AD MFA challenge, and Remote Desktop Gateway sign-in will fail. In this case, you can set OVERRIDE_NUMBER_MATCHING_WITH_OTP = FALSE.
+If you're using Remote Desktop Gateway and the user is registered for OTP code along with Microsoft Authenticator push notifications, the user won't be able to meet the Azure AD MFA challenge and Remote Desktop Gateway sign-in will fail. In this case, you can set OVERRIDE_NUMBER_MATCHING_WITH_TOP = FALSE to fall back to push notifications with Microsoft Authenticator.
### Apple Watch supported for Microsoft Authenticator
They'll see a prompt to supply a verification code. They must select their accou
### Can I opt out of number matching?
-Yes, currently you can disable number matching. We highly recommend that you enable number matching for all users in your tenant to protect yourself from MFA fatigue attacks. Microsoft will enable number matching for all tenants by February 27, 2023. After protection is enabled by default, users can't opt out of number matching in Microsoft Authenticator push notifications.
+Yes, currently you can disable number matching. We highly recommend that you enable number matching for all users in your tenant to protect yourself from MFA fatigue attacks. To protect the ecosystem and mitigate these threats, Microsoft will enable number matching for all tenants starting February 27, 2023. After protection is enabled by default, users can't opt out of number matching in Microsoft Authenticator push notifications.
### Does number matching only apply if Microsoft Authenticator is set as the default authentication method?
active-directory How To Mfa Registration Campaign https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/authentication/how-to-mfa-registration-campaign.md
Previously updated : 06/23/2022 Last updated : 01/05/2023
Yes. If they have been scoped for the nudge using the policy.
It's the same as snoozing.
+**Why donΓÇÖt some users see a nudge when there is a conditional access policy for "Register security information"?**
+
+A nudge won't appear if a user is in scope for a conditional access policy that blocks access to the **Register security information** page.
## Next steps
active-directory Troubleshoot Sspr Writeback https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/authentication/troubleshoot-sspr-writeback.md
Previously updated : 02/22/2022 Last updated : 01/05/2023
The following more specific issues may occur with password writeback. If you hav
| Federated, pass-through authentication, or password-hash-synchronized users who attempt to reset their passwords, see an error after they submit their password. The error indicates that there was a service problem. <br> <br> In addition to this problem, during password reset operations, you might see an error in your event logs from the Azure AD Connect service indicating an "Object could not be found" error. | This error usually indicates that the sync engine is unable to find either the user object in the Azure AD connector space or the linked metaverse (MV) or Azure AD connector space object. <br> <br> To troubleshoot this problem, make sure that the user is indeed synchronized from on-premises to Azure AD via the current instance of Azure AD Connect and inspect the state of the objects in the connector spaces and MV. Confirm that the Active Directory Certificate Services (AD CS) object is connected to the MV object via the "Microsoft.InfromADUserAccountEnabled.xxx" rule.| | Federated, pass-through authentication, or password-hash-synchronized users who attempt to reset their passwords see an error after they submit their password. The error indicates that there was a service problem. <br> <br> In addition to this problem, during password reset operations, you might see an error in your event logs from the Azure AD Connect service that indicates that there's a "Multiple matches found" error. | This indicates that the sync engine detected that the MV object is connected to more than one AD CS object via "Microsoft.InfromADUserAccountEnabled.xxx". This means that the user has an enabled account in more than one forest. This scenario isn't supported for password writeback. | | Password operations fail with a configuration error. The application event log contains Azure AD Connect error 6329 with the text "0x8023061f (The operation failed because password synchronization is not enabled on this Management Agent)". | This error occurs if the Azure AD Connect configuration is changed to add a new Active Directory forest (or to remove and readd an existing forest) after the password writeback feature has already been enabled. Password operations for users in these recently added forests fail. To fix the problem, disable and then re-enable the password writeback feature after the forest configuration changes have been completed.
-| SSPR_0029: We are unable to reset your password due to an error in your on-premises configuration. Please contact your admin and ask them to investigate. | Problem: Password writeback has been enabled following all of the required steps, but when attempting to change a password you receive "SSPR_0029: Your organization hasnΓÇÖt properly set up the on-premises configuration for password reset." Checking the event logs on the Azure AD Connect system shows that the management agent credential was denied access.Possible Solution: Use RSOP on the Azure AD Connect system and your domain controllers to see if the policy "Network access: Restrict clients allowed to make remote calls to SAM" found under Computer Configuration > Windows Settings > Security Settings > Local Policies > Security Options is enabled. Edit the policy to include the MSOL_XXXXXXX management account as an allowed user. |
+| SSPR_0029: We are unable to reset your password due to an error in your on-premises configuration. Please contact your admin and ask them to investigate. | Problem: Password writeback has been enabled following all of the required steps, but when attempting to change a password you receive "SSPR_0029: Your organization hasnΓÇÖt properly set up the on-premises configuration for password reset." Checking the event logs on the Azure AD Connect system shows that the management agent credential was denied access.Possible Solution: Use RSOP on the Azure AD Connect system and your domain controllers to see if the policy "Network access: Restrict clients allowed to make remote calls to SAM" found under Computer Configuration > Windows Settings > Security Settings > Local Policies > Security Options is enabled. Edit the policy to include the MSOL_XXXXXXX management account as an allowed user. For more information, see [Troubleshoot error SSPR_0029: Your organization hasn't properly set up the on-premises configuration for password reset](/troubleshoot/azure/active-directory/password-writeback-error-code-sspr-0029).|
## Password writeback event log error codes
active-directory Howto Conditional Access Policy Risk User https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/conditional-access/howto-conditional-access-policy-risk-user.md
Previously updated : 08/22/2022 Last updated : 01/06/2023
Organizations can choose to deploy this policy using the steps outlined below or
1. Under **Configure user risk levels needed for policy to be enforced**, select **High**. 1. Select **Done**. 1. Under **Access controls** > **Grant**.
- 1. Select **Grant access**, **Require password change**.
+ 1. Select **Grant access**, **Require multifactor authentication** and **Require password change**.
1. Select **Select**. 1. Under **Session**. 1. Select **Sign-in frequency**.
active-directory Howto Continuous Access Evaluation Troubleshoot https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/conditional-access/howto-continuous-access-evaluation-troubleshoot.md
Previously updated : 06/09/2022 Last updated : 01/05/2023
There are multiple sign-in requests for each authentication. Some will be shown
### Searching for specific sign-in attempts
-Use filters to narrow your search. For example, if a user signed in to Teams, use the Application filter and set it to Teams. Admins may need to check the sign-ins from both interactive and non-interactive tabs to locate the specific sign-in. To further narrow the search, admins may apply multiple filters.
+Sign in logs contain information on Success as well as failure events. Use filters to narrow your search. For example, if a user signed in to Teams, use the Application filter and set it to Teams. Admins may need to check the sign-ins from both interactive and non-interactive tabs to locate the specific sign-in. To further narrow the search, admins may apply multiple filters.
## Continuous access evaluation workbooks
active-directory Location Condition https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/conditional-access/location-condition.md
Previously updated : 08/15/2022 Last updated : 01/09/2023
If you select **Determine location by IP address (IPv4 only)**, the system will
If you select **Determine location by GPS coordinates**, the user will need to have the Microsoft Authenticator app installed on their mobile device. Every hour, the system will contact the userΓÇÖs Microsoft Authenticator app to collect the GPS location of the userΓÇÖs mobile device.
-The first time the user is required to share their location from the Microsoft Authenticator app, the user will receive a notification in the app. The user will need to open the app and grant location permissions.
+The first time the user is required to share their location from the Microsoft Authenticator app, the user will receive a notification in the app. The user will need to open the app and grant location permissions.
-For the next 24 hours, if the user is still accessing the resource and granted the app permission to run in the background, the device's location is shared silently once per hour.
--- After 24 hours, the user must open the app and approve the notification. -- Users who have number matching or additional context enabled in the Microsoft Authenticator app won't receive notifications silently and must open the app to approve notifications.
+Every hour the user is accessing resources covered by the policy they will need to approve a push notification from the app.
Every time the user shares their GPS location, the app does jailbreak detection (Using the same logic as the Intune MAM SDK). If the device is jailbroken, the location isn't considered valid, and the user isn't granted access.
active-directory Workload Identity https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/conditional-access/workload-identity.md
Previously updated : 11/21/2022 Last updated : 01/05/2023 -+ # Conditional Access for workload identities
-Conditional Access policies have historically applied only to users when they access apps and services like SharePoint online or the Azure portal. We are now extending support for Conditional Access policies to be applied to service principals owned by the organization. We call this capability Conditional Access for workload identities.
+Conditional Access policies have historically applied only to users when they access apps and services like SharePoint online or the Azure portal. We're now extending support for Conditional Access policies to be applied to service principals owned by the organization. We call this capability Conditional Access for workload identities.
A [workload identity](../develop/workload-identities-overview.md) is an identity that allows an application or service principal access to resources, sometimes in the context of a user. These workload identities differ from traditional user accounts as they:
A [workload identity](../develop/workload-identities-overview.md) is an identity
These differences make workload identities harder to manage and put them at higher risk for compromise. > [!IMPORTANT]
-> Conditional Access policies can be scoped to service principals in Azure AD with Workload Identities Premium licenses.
+> Workload Identities Premium licenses are required to create or modify Conditional Access policies scoped to service principals.
+> In directories without appropriate licenses, Conditional Access policies created prior to the release of Workload Identities Premium will be available for deletion only.
> [!NOTE] > Policy can be applied to single tenant service principals that have been registered in your tenant. Third party SaaS and multi-tenanted apps are out of scope. Managed identities are not covered by policy.
active-directory Access Tokens https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/access-tokens.md
Previously updated : 7/20/2022 Last updated : 12/28/2022 -
A *non-password-based* login is one where the user didn't type in a password to
- Voice - PIN
-Check out [Primary Refresh Tokens](../devices/concept-primary-refresh-token.md) for more details on primary refresh tokens.
+For more information, see [Primary Refresh Tokens](../devices/concept-primary-refresh-token.md).
## Next steps
active-directory Active Directory Claims Mapping https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/active-directory-claims-mapping.md
Previously updated : 10/21/2022 Last updated : 01/06/2023
In this article, we walk through a few common scenarios that can help you unders
In the following examples, you create, update, link, and delete policies for service principals. Claims-mapping policies can only be assigned to service principal objects. If you're new to Azure Active Directory (Azure AD), we recommend that you [learn about how to get an Azure AD tenant](quickstart-create-new-tenant.md) before you proceed with these examples.
-When creating a claims-mapping policy, you can also emit a claim from a directory extension attribute in tokens. Use _ExtensionID_ for the extension attribute instead of _ID_ in the `ClaimsSchema` element. For more info on extension attributes, see [Using directory extension attributes](active-directory-schema-extensions.md).
+When creating a claims-mapping policy, you can also emit a claim from a directory extension attribute in tokens. Use _ExtensionID_ for the extension attribute instead of _ID_ in the `ClaimsSchema` element. For more information about using extension attributes, see [Using directory extension attributes](active-directory-schema-extensions.md).
The [Azure AD PowerShell Module public preview release](https://www.powershellgallery.com/packages/AzureADPreview) is required to configure claims-mapping policies. The PowerShell module is in preview, while the claims mapping and token creation runtime in Azure is generally available. Updates to the preview PowerShell module could require you to update or change your configuration scripts.
active-directory Active Directory Jwt Claims Customization https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/active-directory-jwt-claims-customization.md
+
+ Title: Customize app JSON Web Token (JWT) claims (Preview)
+description: Learn how to customize the claims issued by Microsoft identity platform in the JSON web token (JWT) token for enterprise applications.
+++++++ Last updated : 12/19/2022++++
+# Customize claims issued in the JSON web token (JWT) for enterprise applications (Preview)
+
+The Microsoft identity platform supports single sign-on (SSO) with most enterprise applications, including both applications pre-integrated in the Azure AD app gallery and custom applications. When a user authenticates to an application through the Microsoft identity platform using the OIDC protocol, the Microsoft identity platform sends a token to the application. And then, the application validates and uses the token to log the user in instead of prompting for a username and password.
+
+These JSON Web tokens (JWT) used by OIDC & OAuth applications (preview) contain pieces of information about the user known as *claims*. A *claim* is information that an identity provider states about a user inside the token they issue for that user.
+
+In an [OIDC response](v2-protocols-oidc.md), *claims* data is typically contained in the ID Token issued by the identity provider in the form of a JWT.
+
+## View or edit claims
+
+Besides [optional claims](active-directory-optional-claims.md), you can view, create or edit the attributes and claims issued in the OIDC token to the application. To edit claims, open the application in Azure portal through the Enterprise Applications experience. Then select **Single sign-on** blade in the left-hand menu and open the **Attributes & Claims** section.
++
+Claims customization may be required for various reasons by an application. A good example is when an application has been written to require a different set of claim URIs or claim values. Using the **Attributes & Claims** section you can add or remove a claim for your application. You can also create a custom claim that is specific for an application based on the use case.
+
+You can also assign any constant (static) value to any claims, which you define in Azure AD. The following steps outline how to assign a constant value:
+
+1. In the [Azure portal](https://portal.azure.com/), on the **Attributes & Claims** section, Select **Edit** to edit the claims.
+1. Select the required claim that you want to modify.
+1. Enter the constant value without quotes in the **Source attribute** as per your organization, and then select **Save**.
++
+The constant value is displayed on the Attributes overview.
++
+## Special claims transformations
+
+You can use the following special claims transformations functions.
+
+| Function | Description |
+|-|-|
+| **ExtractMailPrefix()** | Removes the domain suffix from either the email address or the user principal name. This function extracts only the first part of the user name being passed through (for example, "joe_smith" instead of joe_smith@contoso.com). |
+| **ToLower()** | Converts the characters of the selected attribute into lowercase characters. |
+| **ToUpper()** | Converts the characters of the selected attribute into uppercase characters. |
+
+## Add application-specific claims
+
+To add application-specific claims:
+
+1. In **User Attributes & Claims**, select **Add new claim** to open the **Manage user claims** page.
+1. Enter the **name** of the claims. The value doesn't strictly need to follow a URI pattern. If you need a URI pattern, you can put that in the **Namespace** field.
+1. Select the **Source** where the claim is going to retrieve its value. You can select a user attribute from the source attribute dropdown or apply a transformation to the user attribute before emitting it as a claim.
+
+### Claim transformations
+
+To apply a transformation to a user attribute:
+
+1. In **Manage claim**, select *Transformation* as the claim source to open the **Manage transformation** page.
+1. Select the function from the transformation dropdown. Depending on the function selected, you'll have to provide parameters and a constant value to evaluate in the transformation. Refer to the following table for more information about the available functions.
+1. **Treat source as multivalued** is a checkbox indicating whether the transform should be applied to all values or just the first. By default, transformations are only applied to the first element in a multi-value claim, by checking this box it ensures it's applied to all. This checkbox is only be enabled for multi-valued attributes, for example `user.proxyaddresses`.
+1. To apply multiple transformations, select **Add transformation**. You can apply a maximum of two transformations to a claim. For example, you could first extract the email prefix of the `user.mail`. Then, make the string upper case.
+
+ :::image type="content" source="./media/active-directory-jwt-claims-customization/sso-saml-multiple-claims-transformation.png" alt-text="Screenshot of claims transformation.":::
+
+You can use the following functions to transform claims.
+
+| Function | Description |
+|-|-|
+| **ExtractMailPrefix()** | Removes the domain suffix from either the email address or the user principal name. This function extracts only the first part of the user name being passed through (for example, "joe_smith" instead of joe_smith@contoso.com). |
+| **Join()** | Creates a new value by joining two attributes. Optionally, you can use a separator between the two attributes. For NameID claim transformation, the Join() function has specific behavior when the transformation input has a domain part. It removes the domain part from input before joining it with the separator and the selected parameter. For example, if the input of the transformation is 'joe_smith@contoso.com' and the separator is '@' and the parameter is 'fabrikam.com', this input combination results in 'joe_smith@fabrikam.com'. |
+| **ToLowercase()** | Converts the characters of the selected attribute into lowercase characters. |
+| **ToUppercase()** | Converts the characters of the selected attribute into uppercase characters. |
+| **Contains()** | Outputs an attribute or constant if the input matches the specified value. Otherwise, you can specify another output if there's no match. <br/>For example, if you want to emit a claim where the value is the user's email address if it contains the domain "@contoso.com", otherwise you want to output the user principal name. To perform this function, you configure the following values:<br/>*Parameter 1(input)*: user.email<br/>*Value*: "@contoso.com"<br/>Parameter 2 (output): user.email<br/>Parameter 3 (output if there's no match): user.userprincipalname |
+| **EndWith()** | Outputs an attribute or constant if the input ends with the specified value. Otherwise, you can specify another output if there's no match.<br/>For example, if you want to emit a claim where the value is the user's employee ID if the employee ID ends with "000", otherwise you want to output an extension attribute. To perform this function, you configure the following values:<br/>*Parameter 1(input)*: user.employeeid<br/>*Value*: "000"<br/>Parameter 2 (output): user.employeeid<br/>Parameter 3 (output if there's no match): user.extensionattribute1 |
+| **StartWith()** | Outputs an attribute or constant if the input starts with the specified value. Otherwise, you can specify another output if there's no match.<br/>For example, if you want to emit a claim where the value is the user's employee ID if the country/region starts with "US", otherwise you want to output an extension attribute. To perform this function, you configure the following values:<br/>*Parameter 1(input)*: user.country<br/>*Value*: "US"<br/>Parameter 2 (output): user.employeeid<br/>Parameter 3 (output if there's no match): user.extensionattribute1 |
+| **Extract() - After matching** | Returns the substring after it matches the specified value.<br/>For example, if the input's value is "Finance_BSimon", the matching value is "Finance_", then the claim's output is "BSimon". |
+| **Extract() - Before matching** | Returns the substring until it matches the specified value.<br/>For example, if the input's value is "BSimon_US", the matching value is "_US", then the claim's output is "BSimon". |
+| **Extract() - Between matching** | Returns the substring until it matches the specified value.<br/>For example, if the input's value is "Finance_BSimon_US", the first matching value is "Finance\_", the second matching value is "\_US", then the claim's output is "BSimon". |
+| **ExtractAlpha() - Prefix** | Returns the prefix alphabetical part of the string.<br/>For example, if the input's value is "BSimon_123", then it returns "BSimon". |
+| **ExtractAlpha() - Suffix** | Returns the suffix alphabetical part of the string.<br/>For example, if the input's value is "123_Simon", then it returns "Simon". |
+| **ExtractNumeric() - Prefix** | Returns the prefix numerical part of the string.<br/>For example, if the input's value is "123_BSimon", then it returns "123". |
+| **ExtractNumeric() - Suffix** | Returns the suffix numerical part of the string.<br/>For example, if the input's value is "BSimon_123", then it returns "123". |
+| **IfEmpty()** | Outputs an attribute or constant if the input is null or empty.<br/>For example, if you want to output an attribute stored in an extensionattribute if the employee ID for a given user is empty. To perform this function, you configure the following values:<br/>Parameter 1(input): user.employeeid<br/>Parameter 2 (output): user.extensionattribute1<br/>Parameter 3 (output if there's no match): user.employeeid |
+| **IfNotEmpty()** | Outputs an attribute or constant if the input isn't null or empty.<br/>For example, if you want to output an attribute stored in an extensionattribute if the employee ID for a given user isn't empty. To perform this function, you configure the following values:<br/>Parameter 1(input): user.employeeid<br/>Parameter 2 (output): user.extensionattribute1 |
+| **Substring() - Fixed Length** (Preview)| Extracts parts of a string claim type, beginning at the character at the specified position, and returns the specified number of characters.<br/>SourceClaim - The claim source of the transform that should be executed.<br/>StartIndex - The zero-based starting character position of a substring in this instance.<br/>Length - The length in characters of the substring.<br/>For example:<br/>sourceClaim - PleaseExtractThisNow<br/>StartIndex - 6<br/>Length - 11<br/>Output: ExtractThis |
+| **Substring() - EndOfString** (Preview) | Extracts parts of a string claim type, beginning at the character at the specified position, and returns the rest of the claim from the specified start index. <br/>SourceClaim - The claim source of the transform that should be executed.<br/>StartIndex - The zero-based starting character position of a substring in this instance.<br/>For example:<br/>sourceClaim - PleaseExtractThisNow<br/>StartIndex - 6<br/>Output: ExtractThisNow |
+| **RegexReplace()** (Preview) | RegexReplace() transformation accepts as input parameters:<br/>- Parameter 1: a user attribute as regex input<br/>- An option to trust the source as multivalued<br/>- Regex pattern<br/>- Replacement pattern. The replacement pattern may contain static text format along with a reference that points to regex output groups and more input parameters.<br/><br/>More instructions about how to use the RegexReplace() transformation are described later in this article. |
+
+If you need other transformations, submit your idea in the [feedback forum in Azure AD](https://feedback.azure.com/d365community/forum/22920db1-ad25-ec11-b6e6-000d3a4f0789) under the *SaaS application* category.
+
+## Regex-based claims transformation
+
+The following image shows an example of the first level of transformation:
++
+The following table provides information about the first level of transformations. The actions listed in the table correspond to the labels in the previous image. Select **Edit** to open the claims transformation blade.
+
+| Action | Field | Description |
+| :-- | :- | :- |
+| 1 | Transformation | Select the **RegexReplace()** option from the **Transformation** options to use the regex-based claims transformation method for claims transformation. |
+| 2 | Parameter 1 | The input for the regular expression transformation. For example, user.mail that has a user email address such as `admin@fabrikam.com`. |
+| 3 | Treat source as multivalued | Some input user attributes can be multi-value user attributes. If the selected user attribute supports multiple values and the user wants to use multiple values for the transformation, they need to select **Treat source as multivalued**. If selected, all values are used for the regex match, otherwise only the first value is used. |
+| 4 | Regex pattern | A regular expression that is evaluated against the value of user attribute selected as *Parameter 1*. For example a regular expression to extract the user alias from the user's email address would be represented as `(?'domain'^.*?)(?i)(\@fabrikam\.com)$`. |
+| 5 | Add additional parameter | More than one user attribute can be used for the transformation. The values of the attributes would then be merged with regex transformation output. Up to five additional parameters are supported. |
+| 6 | Replacement pattern | The replacement pattern is the text template, which contains placeholders for regex outcome. All group names must be wrapped inside the curly braces such as {group-name}. Let's say the administration wants to use user alias with some other domain name, for example `xyz.com` and merge country name with it. In this case, the replacement pattern would be `{country}.{domain}@xyz.com`, where `{country}` is the value of input parameter and `{domain}` is the group output from the regular expression evaluation. In such a case, the expected outcome is `US.swmal@xyz.com`. |
+
+The following image shows an example of the second level of transformation:
++
+The following table provides information about the second level of transformations. The actions listed in the table correspond to the labels in the previous image.
+
+| Action | Field | Description |
+| :-- | :- | :- |
+| 1 | Transformation | Regex-based claims transformations aren't limited to the first transformation and can be used as the second level transformation as well. Any other transformation method can be used as the first transformation. |
+| 2 | Parameter 1 | If **RegexReplace()** is selected as a second level transformation, output of first level transformation is used as an input for the second level transformation. The second level regex expression should match the output of the first transformation or the transformation won't be applied. |
+| 3 | Regex pattern | **Regex pattern** is the regular expression for the second level transformation. |
+| 4 | Parameter input | User attribute inputs for the second level transformations. |
+| 5 | Parameter input | Administrators can delete the selected input parameter if they don't need it anymore. |
+| 6 | Replacement pattern | The replacement pattern is the text template, which contains placeholders for regex outcome group name, input parameter group name, and static text value. All group names must be wrapped inside the curly braces such as `{group-name}`. Let's say the administration wants to use user alias with some other domain name, for example `xyz.com` and merge country name with it. In this case, the replacement pattern would be `{country}.{domain}@xyz.com`, where `{country}` is the value of input parameter and `{domain}` is the group output from the regular expression evaluation. In such a case, the expected outcome is `US.swmal@xyz.com`. |
+| 7 | Test transformation | The RegexReplace() transformation is evaluated only if the value of the selected user attribute for *Parameter 1* matches with the regular expression provided in the **Regex pattern** textbox. If they don't match, the default claim value is added to the token. To validate regular expression against the input parameter value, a test experience is available within the transform blade. This test experience operates on dummy values only. When additional input parameters are used, the name of the parameter is added to the test result instead of the actual value. To access the test section, select **Test transformation**. |
+
+The following image shows an example of testing the transformations:
++
+The following table provides information about testing the transformations. The actions listed in the table correspond to the labels in the previous image.
+
+| Action | Field | Description |
+| :-- | :- | :- |
+| 1 | Test transformation | Select the close or (X) button to hide the test section and re-render the **Test transformation** button again on the blade. |
+| 2 | Test regex input | Accepts input that is used for the regular expression test evaluation. In case regex-based claims transformation is configured as a second level transformation, a value is provided that would be the expected output of the first transformation. |
+| 3 | Run test | After the test regex input is provided and the **Regex pattern**, **Replacement pattern** and **Input parameters** are configured, the expression can be evaluated by selecting **Run test**. |
+| 4 | Test transformation result | If evaluation succeeds, an output of test transformation will be rendered against the **Test transformation result** label. |
+| 5 | Remove transformation | The second level transformation can be removed by selecting **Remove transformation**. |
+| 6 | Specify output if no match | When a regex input value is configured against the *Parameter 1* that doesn't match the **Regular expression**, the transformation is skipped. In such cases, the alternate user attribute can be configured, which is added to the token for the claim by checking **Specify output if no match**. |
+| 7 | Parameter 3 | If an alternate user attribute needs to be returned when there's no match and **Specify output if no match** is checked, an alternate user attribute can be selected using the dropdown. This dropdown is available against **Parameter 3 (output if no match)**. |
+| 8 | Summary | At the bottom of the blade, a full summary of the format is displayed that explains the meaning of the transformation in simple text. |
+| 9 | Add | After the configuration settings for the transformation are verified, it can be saved to a claims policy by selecting **Add**. Changes won't be saved unless **Save** is selected on the **Manage Claim** blade. |
+
+RegexReplace() transformation is also available for the group claims transformations.
+
+### Transformation validations
+
+When the following conditions occur after **Add** or **Run test** is selected, a message is displayed that provides more information about the issue:
+
+* Input parameters with duplicate user attributes aren't allowed.
+* Unused input parameters found. Defined input parameters should have respective usage into the Replacement pattern text.
+* The provided test regex input doesn't match with the provided regular expression.
+* The source for the groups into the replacement pattern isn't found.
+
+## Emit claims based on conditions
+
+You can specify the source of a claim based on user type and the group to which the user belongs.
+
+The user type can be:
+
+* **Any** - All users are allowed to access the application.
+* **Members**: Native member of the tenant
+* **All guests**: User is brought over from an external organization with or without Azure AD.
+* **AAD guests**: Guest user belongs to another organization using Azure AD.
+* **External guests**: Guest user belongs to an external organization that doesn't have Azure AD.
+
+One scenario where the user type is helpful is when the source of a claim is different for a guest and an employee accessing an application. You can specify that if the user is an employee, the NameID is sourced from user.email. If the user is a guest, then the NameID is sourced from user.extensionattribute1.
+
+To add a claim condition:
+
+1. In **Manage claim**, expand the Claim conditions.
+1. Select the user type.
+1. Select the group(s) to which the user should belong. You can select up to 50 unique groups across all claims for a given application.
+1. Select the **Source** where the claim is going to retrieve its value. You can select a user attribute from the source attribute dropdown or apply a transformation to the user attribute before emitting it as a claim.
+
+The order in which you add the conditions are important. Azure AD first evaluates all conditions with source `Attribute` and then evaluates all conditions with source `Transformation` to decide which value to emit in the claim. Conditions with the same source are evaluated from top to bottom. The last value, which matches the expression is emitted in the claim. Transformations such as `IsNotEmpty` and `Contains` act like restrictions.
+
+For example, Britta Simon is a guest user in the Contoso tenant. Britta belongs to another organization that also uses Azure AD. Given the following configuration for the Fabrikam application, when Britta tries to sign in to Fabrikam, the Microsoft identity platform evaluates the conditions.
+
+First, the Microsoft identity platform verifies whether Britta's user type is **All guests**. Because this is true, the Microsoft identity platform assigns the source for the claim to `user.extensionattribute1`. Second, the Microsoft identity platform verifies whether Britta's user type is **AAD guests**, because this is also true, the Microsoft identity platform assigns the source for the claim to `user.mail`. Finally, the claim is emitted with a value of `user.mail` for Britta.
++
+As another example, consider when Britta Simon tries to sign in and the following configuration is used. Azure AD first evaluates all conditions with source `Attribute`. Because Britta's user type is **AAD guests**, `user.mail` is assigned as the source for the claim. Next, Azure AD evaluates the transformations. Because Britta is a guest, `user.extensionattribute1` is now the new source for the claim. Because Britta is in **AAD guests**, `user.othermail` is now the source for this claim. Finally, the claim is emitted with a value of `user.othermail` for Britta.
++
+As a final example, consider what happens if Britta has no `user.othermail` configured or it's empty. In both cases the condition entry is ignored, and the claim falls back to `user.extensionattribute1` instead.
+
+## Advanced claims options
+
+Advanced claims options can be configured for OIDC applications to expose the same claim as SAML tokens and vice versa for applications that intend to use the same claim for both SAML2.0 and OIDC response tokens.
+
+Advanced claim options can be configured by checking the box under **Advanced Claims Options** in the **Manage claims** blade.
+
+## Next steps
+
+* [Configure single sign-on on applications that aren't in the Azure AD application gallery](../manage-apps/configure-saml-single-sign-on.md)
active-directory Active Directory Optional Claims https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/active-directory-optional-claims.md
Title: Provide optional claims to Azure AD apps
description: How to add custom or additional claims to the SAML 2.0 and JSON Web Tokens (JWT) tokens issued by Microsoft identity platform. - Previously updated : 04/04/2022 Last updated : 12/28/2022 - + # Provide optional claims to your app
This section covers the configuration options under optional claims for changing
] } ```
-3) Emit group names in the format of samAccountName for on-prem synced groups and display name for cloud groups in SAML and OIDC ID Tokens for the groups assigned to the application:
+3) Emit group names in the format of samAccountName for on-premises synced groups and display name for cloud groups in SAML and OIDC ID Tokens for the groups assigned to the application:
**Application manifest entry:**
active-directory Active Directory Saml Claims Customization https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/active-directory-saml-claims-customization.md
Title: Customize app SAML token claims
+ Title: Customize SAML token claims
description: Learn how to customize the claims issued by Microsoft identity platform in the SAML token for enterprise applications.
Previously updated : 06/28/2022 Last updated : 12/19/2022 - # Customize claims issued in the SAML token for enterprise applications
-Today, the Microsoft identity platform supports single sign-on (SSO) with most enterprise applications, including both applications pre-integrated in the Azure AD app gallery and custom applications. When a user authenticates to an application through the Microsoft identity platform using the SAML 2.0 protocol, the Microsoft identity platform sends a token to the application (via an HTTP POST). And then, the application validates and uses the token to log the user in instead of prompting for a username and password. These SAML tokens contain pieces of information about the user known as *claims*.
+The Microsoft identity platform supports single sign-on (SSO) with most enterprise applications, including both applications pre-integrated in the Azure Active Directory (Azure AD) application gallery and custom applications. When a user authenticates to an application through the Microsoft identity platform using the SAML 2.0 protocol, the Microsoft identity platform sends a token to the application. And then, the application validates and uses the token to log the user in instead of prompting for a username and password.
-A *claim* is information that an identity provider states about a user inside the token they issue for that user. In [SAML token](https://en.wikipedia.org/wiki/SAML_2.0), this data is typically contained in the SAML Attribute Statement. The userΓÇÖs unique ID is typically represented in the SAML Subject also called as Name Identifier.
+These SAML tokens contain pieces of information about the user known as *claims*. A *claim* is information that an identity provider states about a user inside the token they issue for that user. In a [SAML token](https://en.wikipedia.org/wiki/SAML_2.0), *claims* data is typically contained in the SAML Attribute Statement. The user's unique ID is typically represented in the SAML Subject also referred to as the name identifier (nameID).
-By default, the Microsoft identity platform issues a SAML token to your application that contains a `NameIdentifier` claim with a value of the userΓÇÖs username (also known as the user principal name) in Azure AD, which can uniquely identify the user. The SAML token also contains other claims that include the userΓÇÖs email address, first name, and last name.
+By default, the Microsoft identity platform issues a SAML token to an application that contains a `NameIdentifier` claim with a value of the user's username (also known as the user principal name) in Azure AD, which can uniquely identify the user. The SAML token also contains other claims that include the user's email address, first name, and last name.
-To view or edit the claims issued in the SAML token to the application, open the application in Azure portal. Then open the **User Attributes & Claims** section.
+## View or edit claims
-![Open the User Attributes & Claims section in the Azure portal](./media/active-directory-saml-claims-customization/sso-saml-user-attributes-claims.png)
+To view or edit the claims issued in the SAML token to the application, open the application in Azure portal. Then open the **Attributes & Claims** section.
+ There are two possible reasons why you might need to edit the claims issued in the SAML token: * The application requires the `NameIdentifier` or NameID claim to be something other than the username (or user principal name) stored in Azure AD. * The application has been written to require a different set of claim URIs or claim values.
-## Editing nameID
+## Edit nameID
To edit the NameID (name identifier value): 1. Open the **Name identifier value** page. 1. Select the attribute or transformation you want to apply to the attribute. Optionally, you can specify the format you want the NameID claim to have.
- ![Edit the NameID (name identifier) value](./media/active-directory-saml-claims-customization/saml-sso-manage-user-claims.png)
+ :::image type="content" source="./media/active-directory-saml-claims-customization/saml-sso-manage-user-claims.png" alt-text="Screenshot of editing the NameID (name identifier) value in the Azure portal.":::
### NameID format
-If the SAML request contains the element NameIDPolicy with a specific format, then the Microsoft identity platform will honor the format in the request.
+If the SAML request contains the element NameIDPolicy with a specific format, then the Microsoft identity platform honors the format in the request.
-If the SAML request doesn't contain an element for NameIDPolicy, then the Microsoft identity platform will issue the NameID with the format you specify. If no format is specified, the Microsoft identity platform will use the default source format associated with the claim source selected. If a transformation results in a null or illegal value, Azure AD will send a persistent pairwise identifier in the nameIdentifier.
+If the SAML request doesn't contain an element for NameIDPolicy, then the Microsoft identity platform issues the NameID with the format you specify. If no format is specified, the Microsoft identity platform uses the default source format associated with the claim source selected. If a transformation results in a null or illegal value, Azure AD sends a persistent pairwise identifier in the nameIdentifier.
-From the **Choose name identifier format** dropdown, you can select one of the following options.
+From the **Choose name identifier format** dropdown, select one of the options in the following table.
| NameID format | Description | ||-|
-| **Default** | Microsoft identity platform will use the default source format. |
-| **Persistent** | Microsoft identity platform will use Persistent as the NameID format. |
-| **Email address** | Microsoft identity platform will use EmailAddress as the NameID format. |
-| **Unspecified** | Microsoft identity platform will use Unspecified as the NameID format. |
-|**Windows domain qualified name**| Microsoft identity platform will use the WindowsDomainQualifiedName format.|
+| **Default** | Microsoft identity platform uses the default source format. |
+| **Persistent** | Microsoft identity platform uses Persistent as the NameID format. |
+| **Email address** | Microsoft identity platform uses EmailAddress as the NameID format. |
+| **Unspecified** | Microsoft identity platform uses Unspecified as the NameID format. |
+|**Windows domain qualified name**| Microsoft identity platform uses the WindowsDomainQualifiedName format.|
Transient NameID is also supported, but isn't available in the dropdown and can't be configured on Azure's side. To learn more about the NameIDPolicy attribute, see [Single sign-On SAML protocol](single-sign-on-saml-protocol.md).
Select the desired source for the `NameIdentifier` (or NameID) claim. You can se
| employeeid | Employee ID of the user | | Directory extensions | Directory extensions [synced from on-premises Active Directory using Azure AD Connect Sync](../hybrid/how-to-connect-sync-feature-directory-extensions.md) | | Extension Attributes 1-15 | On-premises extension attributes used to extend the Azure AD schema |
-| pairwiseidΓÇï | Persistent form of user identifier |
+| pairwiseid | Persistent form of user identifier |
-For more info, see [Table 3: Valid ID values per source](reference-claims-mapping-policy-type.md#table-3-valid-id-values-per-source).
+For more information about identifier values, see [Table 3: Valid ID values per source](reference-claims-mapping-policy-type.md#table-3-valid-id-values-per-source).
-You can also assign any constant (static) value to any claims, which you define in Azure AD. The steps below outline how to assign a constant value:
+Any constant (static) value can be assigned to any claim that is defined in Azure AD. The following steps outline how to assign a constant value:
-1. In the <a href="https://portal.azure.com/" target="_blank">Azure portal</a>, on the **User Attributes & Claims** section, click on the **Edit** icon to edit the claims.
-1. Click on the required claim which you want to modify.
+1. In the [Azure portal](https://portal.azure.com/), in the **User Attributes & Claims** section, select **Edit** to edit the claims.
+1. Select the required claim that you want to modify.
1. Enter the constant value without quotes in the **Source attribute** as per your organization and click **Save**.
- ![Org Attributes & Claims section in the Azure portal](./media/active-directory-saml-claims-customization/organization-attribute.png)
+ :::image type="content" source="./media/active-directory-saml-claims-customization/organization-attribute.png" alt-text="Screenshot of the organization Attributes & Claims section in the Azure portal.":::
-1. The constant value will be displayed as below.
+1. The constant value will be displayed as shown in the following image.
- ![Edit Attributes & Claims section in the Azure portal](./media/active-directory-saml-claims-customization/edit-attributes-claims.png)
+ :::image type="content" source="./media/active-directory-saml-claims-customization/edit-attributes-claims.png" alt-text="Screenshot of editing in the Attributes & Claims section in the Azure portal.":::
-### Special claims - transformations
+## Special claims transformations
-You can also use the claims transformations functions.
+You can use the following special claims transformations functions.
| Function | Description | |-|-|
-| **ExtractMailPrefix()** | Removes the domain suffix from either the email address or the user principal name. This extracts only the first part of the user name being passed through (for example, "joe_smith" instead of joe_smith@contoso.com). |
+| **ExtractMailPrefix()** | Removes the domain suffix from either the email address or the user principal name. This function extracts only the first part of the user name being passed through (for example, "joe_smith" instead of joe_smith@contoso.com). |
| **ToLower()** | Converts the characters of the selected attribute into lowercase characters. | | **ToUpper()** | Converts the characters of the selected attribute into uppercase characters. |
-## Adding application-specific claims
+## Add application-specific claims
To add application-specific claims:
To add application-specific claims:
To apply a transformation to a user attribute: 1. In **Manage claim**, select *Transformation* as the claim source to open the **Manage transformation** page.
-2. Select the function from the transformation dropdown. Depending on the function selected, you'll have to provide parameters and a constant value to evaluate in the transformation. Refer to the table below for more information about the available functions.
-3. (preview) `Treat source as multivalued` is a checkbox indicating if the transform should be applied to all values or just the first. By default, transformations will only be applied to the first element in a multi value claim, by checking this box it ensures it's applied to all. This checkbox will only be enabled for multivalued attributes, for example `user.proxyaddresses`.
-4. To apply multiple transformations, click on **Add transformation**. You can apply a maximum of two transformations to a claim. For example, you could first extract the email prefix of the `user.mail`. Then, make the string upper case.
+1. Select the function from the transformation dropdown. Depending on the function selected, you'll have to provide parameters and a constant value to evaluate in the transformation. Refer to the following table for more information about the available functions.
+1. **Treat source as multivalued** is a checkbox indicating whether the transform should be applied to all values or just the first. By default, transformations are only applied to the first element in a multi-value claim, by checking this box it ensures it's applied to all. This checkbox is only be enabled for multi-valued attributes, for example `user.proxyaddresses`.
+1. To apply multiple transformations, select **Add transformation**. You can apply a maximum of two transformations to a claim. For example, you could first extract the email prefix of the `user.mail`. Then, make the string upper case.
- ![Multiple claims transformation](./media/active-directory-saml-claims-customization/sso-saml-multiple-claims-transformation.png)
+ :::image type="content" source="./media/active-directory-saml-claims-customization/sso-saml-multiple-claims-transformation.png" alt-text="Screenshot of claims transformation.":::
You can use the following functions to transform claims. | Function | Description | |-|-|
-| **ExtractMailPrefix()** | Removes the domain suffix from either the email address or the user principal name. This extracts only the first part of the user name being passed through (for example, "joe_smith" instead of joe_smith@contoso.com). |
-| **Join()** | Creates a new value by joining two attributes. Optionally, you can use a separator between the two attributes. For NameID claim transformation, the Join() function has specific behavior when the transformation input has a domain part. It will remove the domain part from input before joining it with the separator and the selected parameter. For example, if the input of the transformation is ΓÇÿjoe_smith@contoso.comΓÇÖ and the separator is ΓÇÿ@ΓÇÖ and the parameter is ΓÇÿfabrikam.comΓÇÖ, this will result in joe_smith@fabrikam.com. |
+| **ExtractMailPrefix()** | Removes the domain suffix from either the email address or the user principal name. This function extracts only the first part of the user name being passed through (for example, "joe_smith" instead of joe_smith@contoso.com). |
+| **Join()** | Creates a new value by joining two attributes. Optionally, you can use a separator between the two attributes. For NameID claim transformation, the Join() function has specific behavior when the transformation input has a domain part. It removes the domain part from input before joining it with the separator and the selected parameter. For example, if the input of the transformation is 'joe_smith@contoso.com' and the separator is '@' and the parameter is 'fabrikam.com', this input combination results in 'joe_smith@fabrikam.com'. |
| **ToLowercase()** | Converts the characters of the selected attribute into lowercase characters. | | **ToUppercase()** | Converts the characters of the selected attribute into uppercase characters. |
-| **Contains()** | Outputs an attribute or constant if the input matches the specified value. Otherwise, you can specify another output if thereΓÇÖs no match.<br/>For example, if you want to emit a claim where the value is the userΓÇÖs email address if it contains the domain ΓÇ£@contoso.comΓÇ¥, otherwise you want to output the user principal name. To do this, you would configure the following values:<br/>*Parameter 1(input)*: user.email<br/>*Value*: "@contoso.com"<br/>Parameter 2 (output): user.email<br/>Parameter 3 (output if there's no match): user.userprincipalname |
-| **EndWith()** | Outputs an attribute or constant if the input ends with the specified value. Otherwise, you can specify another output if thereΓÇÖs no match.<br/>For example, if you want to emit a claim where the value is the userΓÇÖs employee ID if the employee ID ends with ΓÇ£000ΓÇ¥, otherwise you want to output an extension attribute. To do this, you would configure the following values:<br/>*Parameter 1(input)*: user.employeeid<br/>*Value*: "000"<br/>Parameter 2 (output): user.employeeid<br/>Parameter 3 (output if there's no match): user.extensionattribute1 |
-| **StartWith()** | Outputs an attribute or constant if the input starts with the specified value. Otherwise, you can specify another output if thereΓÇÖs no match.<br/>For example, if you want to emit a claim where the value is the userΓÇÖs employee ID if the country/region starts with "US", otherwise you want to output an extension attribute. To do this, you would configure the following values:<br/>*Parameter 1(input)*: user.country<br/>*Value*: "US"<br/>Parameter 2 (output): user.employeeid<br/>Parameter 3 (output if there's no match): user.extensionattribute1 |
+| **Contains()** | Outputs an attribute or constant if the input matches the specified value. Otherwise, you can specify another output if there's no match. <br/>For example, if you want to emit a claim where the value is the user's email address if it contains the domain "@contoso.com", otherwise you want to output the user principal name. To perform this function, you configure the following values:<br/>*Parameter 1(input)*: user.email<br/>*Value*: "@contoso.com"<br/>Parameter 2 (output): user.email<br/>Parameter 3 (output if there's no match): user.userprincipalname |
+| **EndWith()** | Outputs an attribute or constant if the input ends with the specified value. Otherwise, you can specify another output if there's no match.<br/>For example, if you want to emit a claim where the value is the user's employee ID if the employee ID ends with "000", otherwise you want to output an extension attribute. To perform this function, you configure the following values:<br/>*Parameter 1(input)*: user.employeeid<br/>*Value*: "000"<br/>Parameter 2 (output): user.employeeid<br/>Parameter 3 (output if there's no match): user.extensionattribute1 |
+| **StartWith()** | Outputs an attribute or constant if the input starts with the specified value. Otherwise, you can specify another output if there's no match.<br/>For example, if you want to emit a claim where the value is the user's employee ID if the country/region starts with "US", otherwise you want to output an extension attribute. To perform this function, you configure the following values:<br/>*Parameter 1(input)*: user.country<br/>*Value*: "US"<br/>Parameter 2 (output): user.employeeid<br/>Parameter 3 (output if there's no match): user.extensionattribute1 |
| **Extract() - After matching** | Returns the substring after it matches the specified value.<br/>For example, if the input's value is "Finance_BSimon", the matching value is "Finance_", then the claim's output is "BSimon". | | **Extract() - Before matching** | Returns the substring until it matches the specified value.<br/>For example, if the input's value is "BSimon_US", the matching value is "_US", then the claim's output is "BSimon". | | **Extract() - Between matching** | Returns the substring until it matches the specified value.<br/>For example, if the input's value is "Finance_BSimon_US", the first matching value is "Finance\_", the second matching value is "\_US", then the claim's output is "BSimon". |
You can use the following functions to transform claims.
| **ExtractAlpha() - Suffix** | Returns the suffix alphabetical part of the string.<br/>For example, if the input's value is "123_Simon", then it returns "Simon". | | **ExtractNumeric() - Prefix** | Returns the prefix numerical part of the string.<br/>For example, if the input's value is "123_BSimon", then it returns "123". | | **ExtractNumeric() - Suffix** | Returns the suffix numerical part of the string.<br/>For example, if the input's value is "BSimon_123", then it returns "123". |
-| **IfEmpty()** | Outputs an attribute or constant if the input is null or empty.<br/>For example, if you want to output an attribute stored in an extensionattribute if the employee ID for a given user is empty. To do this, you would configure the following values:<br/>Parameter 1(input): user.employeeid<br/>Parameter 2 (output): user.extensionattribute1<br/>Parameter 3 (output if there's no match): user.employeeid |
-| **IfNotEmpty()** | Outputs an attribute or constant if the input isn't null or empty.<br/>For example, if you want to output an attribute stored in an extensionattribute if the employee ID for a given user is not empty. To do this, you would configure the following values:<br/>Parameter 1(input): user.employeeid<br/>Parameter 2 (output): user.extensionattribute1 |
-| **Substring() ΓÇô Fixed Length** (Preview)| Extracts parts of a string claim type, beginning at the character at the specified position, and returns the specified number of characters.<br/>SourceClaim - The claim source which the transform should be executed.<br/>StartIndex - The zero-based starting character position of a substring in this instance.<br/>Length - The length in characters of the substring.<br/>For example:<br/>sourceClaim ΓÇô PleaseExtractThisNow<br/>StartIndex ΓÇô 6<br/>Length ΓÇô 11<br/>Output: ExtractThis |
-| **Substring() ΓÇô EndOfString** (Preview) | Extracts parts of a string claim type, beginning at the character at the specified position, and returns the rest of the claim from the specified start index. <br/>SourceClaim - The claim source which the transform should be executed.<br/>StartIndex - The zero-based starting character position of a substring in this instance.<br/>For example:<br/>sourceClaim ΓÇô PleaseExtractThisNow<br/>StartIndex ΓÇô 6<br/>Output: ExtractThisNow |
-| **RegexReplace()** (Preview) | RegexReplace() transformation accepts as input parameters:<br />- Parameter 1: a user attribute as regex input<br />- An option to trust the source as multivalued<br />- Regex pattern<br />- Replacement pattern. The replacement pattern may contain static text format along with reference pointing to regex output groups and additional input parameters.<br /><br/>Additional instructions on how to use RegexReplace() Transformation described below. |
-
-If you need additional transformations, submit your idea in the [feedback forum in Azure AD](https://feedback.azure.com/d365community/forum/22920db1-ad25-ec11-b6e6-000d3a4f0789) under the *SaaS application* category.
-
-## How to use the RegexReplace() Transformation
-
-1. Select the edit button (pencil icon) to open the claims transformation blade.
-1. Select the ΓÇ£RegexReplace()ΓÇ¥ option from the ΓÇ£TransformationΓÇ¥ options to use regex-based claims transformation method for claims transformation.
-1. ΓÇ£Parameter 1ΓÇ¥ is the source user input attribute which will be an input for the regular expression transformation. For example, user.mail which will have user email address such as admin@contoso.com.
-1. Some input user attributes can be multi-value user attributes. If the selected user attribute supports multiple values and the user wants to use multiple values for the transformation, they need to check the ΓÇ£Treat source as multivaluedΓÇ¥ checkbox. If an administrator checks the checkbox, all values will be used for regex match, otherwise only the first value will be used.
-1. The ΓÇ£Regex patternΓÇ¥ textbox accepts a regular expression which will be evaluated against the value of user attribute selected as ΓÇ£parameter 1ΓÇ¥. For example a regular expression to extract user alias from the userΓÇÖs email address would be represented as: ΓÇ£(?'domain'^.*?)(?i)(\@contoso\.com)$ΓÇ¥
-1. By using the ΓÇ£Add additional parameterΓÇ¥ button, an administrator can choose more user attributes, which can be used for the transformation. The values of the additional attributes would then be merged with regex transformation output. Currently, up to five additional parameters are supported.
- <br />To illustrate, let's use user.country attribute as an input parameter. The value of this attribute is ΓÇ£USΓÇ¥. To merge this into the replacement pattern the administrator needs to refer to it as {country} inside the replacement pattern. Once the administrator selects the user attribute for the parameter, an info balloon for the parameter will explain how the parameter can be used inside the replacement pattern.
-1. The ΓÇ£Replacement patternΓÇ¥ textbox accepts the replacement pattern. Replacement pattern is the text template, which contains placeholders for regex outcome group name, input parameter group name, and static text value. All group names must be wrapped inside the curly braces such as {group-name}. LetΓÇÖs say the administration wants to use user alias with some other domain name e.g. xyz.com and merge country name with it. In this case the replacement pattern would be ΓÇ£{country}.{domain}@xyz.comΓÇ¥, where {country} will be the value of input parameter and {domain} will be the group output from the regular expression evaluation. In such a case, the expected outcome will be ΓÇ£US.swmal@xyz.comΓÇ¥
-
-1. RegexReplace() transformation will be evaluated only if the value of the selected user attribute for ΓÇ£Parameter 1ΓÇ¥ matches with the regular expression provided in ΓÇ£Regex patternΓÇ¥ textbox. If they do not match, the default claim value will be added to the token. To validate regular expression against the input parameter value, a test experience is available within the transform blade. This test experience operates on dummy values only. When additional input parameters are used, the name of the parameter will be added to the test result instead of the actual value. You can see a sample output in point 18. To access the test section an administrator can select the ΓÇ£Test transformationΓÇ¥ button.
-
-1. Regex-based claims transformations are not limited to the first transformation and can be used as the second level transformation as well. Any other transformation method can be used as the first transformation.
-
-1. If RegexReplace() is selected as a second level transformation, output of first level transformation will be used as an input for the second level transformation. The second level regex expression should match the output of the first transformation else the transformation won't be applied.
-
-1. Same as point 5 above, ΓÇ£Regex patternΓÇ¥ is the regular expression for the second level transformation.
-
-1. These are the inputs user attributes for the second level transformations.
+| **IfEmpty()** | Outputs an attribute or constant if the input is null or empty.<br/>For example, if you want to output an attribute stored in an extensionattribute if the employee ID for a given user is empty. To perform this function, you configure the following values:<br/>Parameter 1(input): user.employeeid<br/>Parameter 2 (output): user.extensionattribute1<br/>Parameter 3 (output if there's no match): user.employeeid |
+| **IfNotEmpty()** | Outputs an attribute or constant if the input isn't null or empty.<br/>For example, if you want to output an attribute stored in an extensionattribute if the employee ID for a given user isn't empty. To perform this function, you configure the following values:<br/>Parameter 1(input): user.employeeid<br/>Parameter 2 (output): user.extensionattribute1 |
+| **Substring() - Fixed Length** (Preview)| Extracts parts of a string claim type, beginning at the character at the specified position, and returns the specified number of characters.<br/>SourceClaim - The claim source of the transform that should be executed.<br/>StartIndex - The zero-based starting character position of a substring in this instance.<br/>Length - The length in characters of the substring.<br/>For example:<br/>sourceClaim - PleaseExtractThisNow<br/>StartIndex - 6<br/>Length - 11<br/>Output: ExtractThis |
+| **Substring() - EndOfString** (Preview) | Extracts parts of a string claim type, beginning at the character at the specified position, and returns the rest of the claim from the specified start index. <br/>SourceClaim - The claim source of the transform that should be executed.<br/>StartIndex - The zero-based starting character position of a substring in this instance.<br/>For example:<br/>sourceClaim - PleaseExtractThisNow<br/>StartIndex - 6<br/>Output: ExtractThisNow |
+| **RegexReplace()** (Preview) | RegexReplace() transformation accepts as input parameters:<br/>- Parameter 1: a user attribute as regex input<br/>- An option to trust the source as multivalued<br/>- Regex pattern<br/>- Replacement pattern. The replacement pattern may contain static text format along with a reference that points to regex output groups and more input parameters.<br/><br/>More instructions about how to use the RegexReplace() transformation are described later in this article. |
-1. Administrators can delete the selected input parameter if they donΓÇÖt need it anymore.
+If you need other transformations, submit your idea in the [feedback forum in Azure AD](https://feedback.azure.com/d365community/forum/22920db1-ad25-ec11-b6e6-000d3a4f0789) under the *SaaS application* category.
-1. Once administrator selects ΓÇ£Test transformationΓÇ¥, the ΓÇ£Test transformationΓÇ¥ section will be displayed, and ΓÇ£Test transformationΓÇ¥ button goes away.
+## Regex-based claims transformation
-1. Select the close or (X) button to hide the test section and re-render the ΓÇ£Test transformationΓÇ¥ button again on the blade.
+The following image shows an example of the first level of transformation:
-1. The ΓÇ£Test regex inputΓÇ¥ textbox accepts the dummy input, which will be used as an input for regular expression test evaluation. In case regex-based claims transformation is configured as a second level transformation, the administrator needs to provided a dummy value, which would be the expected output of the first transformation.
-1. Once the administrator provides the test regex input and configures the ΓÇ£Regex patternΓÇ¥, ΓÇ£Replacement patternΓÇ¥ and ΓÇ£Input parametersΓÇ¥, they can evaluate the expression by clicking on the ΓÇ£Run testΓÇ¥ button.
+The following table provides information about the first level of transformations. The actions listed in the table correspond to the labels in the previous image. Select **Edit** to open the claims transformation blade.
-1. If evaluation succeeds, an output of test transformation will be rendered against the ΓÇ£Test transformation resultΓÇ¥ label.
+| Action | Field | Description |
+| :-- | :- | :- |
+| 1 | Transformation | Select the **RegexReplace()** option from the **Transformation** options to use the regex-based claims transformation method for claims transformation. |
+| 2 | Parameter 1 | The input for the regular expression transformation. For example, user.mail that has a user email address such as `admin@fabrikam.com`. |
+| 3 | Treat source as multivalued | Some input user attributes can be multi-value user attributes. If the selected user attribute supports multiple values and the user wants to use multiple values for the transformation, they need to select **Treat source as multivalued**. If selected, all values are used for the regex match, otherwise only the first value is used. |
+| 4 | Regex pattern | A regular expression that is evaluated against the value of user attribute selected as *Parameter 1*. For example a regular expression to extract the user alias from the user's email address would be represented as `(?'domain'^.*?)(?i)(\@fabrikam\.com)$`. |
+| 5 | Add additional parameter | More than one user attribute can be used for the transformation. The values of the attributes would then be merged with regex transformation output. Up to five additional parameters are supported. |
+| 6 | Replacement pattern | The replacement pattern is the text template, which contains placeholders for regex outcome. All group names must be wrapped inside the curly braces such as `{group-name}`. Let's say the administration wants to use user alias with some other domain name, for example `xyz.com` and merge country name with it. In this case, the replacement pattern would be `{country}.{domain}@xyz.com`, where `{country}` is the value of input parameter and `{domain}` is the group output from the regular expression evaluation. In such a case, the expected outcome is `US.swmal@xyz.com`. |
-1. The administrator can remove the second level transformation by using ΓÇ£Remove transformationΓÇ¥ button.
+The following image shows an example of the second level of transformation:
-1. When a regex input value is configured against the ΓÇ£Parameter 1ΓÇ¥ which doesn't matches the ΓÇ£Regular expressionΓÇ¥, the transformation is skipped. In such cases, the administrator can configure the alternate user attribute, which will be added to the token for the claim by checking the checkbox for ΓÇ£Specify output if no matchΓÇ¥.
-1. If an administrator wants to return alternate user attribute in case of no match and checked the ΓÇ£Specify output if no matchΓÇ¥ checkbox, they can select alternate user attribute by using the dropdown. This dropdown is available against ΓÇ£Parameter 3 (output if no match)ΓÇ¥.
+The following table provides information about the second level of transformations. The actions listed in the table correspond to the labels in the previous image.
-1. At the bottom of the blade a full summary of the format is displayed which explains the meaning of transformation in simple text.
+| Action | Field | Description |
+| :-- | :- | :- |
+| 1 | Transformation | Regex-based claims transformations aren't limited to the first transformation and can be used as the second level transformation as well. Any other transformation method can be used as the first transformation. |
+| 2 | Parameter 1 | If **RegexReplace()** is selected as a second level transformation, output of first level transformation is used as an input for the second level transformation. The second level regex expression should match the output of the first transformation or the transformation won't be applied. |
+| 3 | Regex pattern | **Regex pattern** is the regular expression for the second level transformation. |
+| 4 | Parameter input | User attribute inputs for the second level transformations. |
+| 5 | Parameter input | Administrators can delete the selected input parameter if they don't need it anymore. |
+| 6 | Replacement pattern | The replacement pattern is the text template, which contains placeholders for regex outcome group name, input parameter group name, and static text value. All group names must be wrapped inside the curly braces such as `{group-name}`. Let's say the administration wants to use user alias with some other domain name, for example `xyz.com` and merge country name with it. In this case, the replacement pattern would be `{country}.{domain}@xyz.com`, where `{country}` is the value of input parameter and {domain} is the group output from the regular expression evaluation. In such a case, the expected outcome is `US.swmal@xyz.com`. |
+| 7 | Test transformation | The RegexReplace() transformation is evaluated only if the value of the selected user attribute for *Parameter 1* matches with the regular expression provided in the **Regex pattern** textbox. If they don't match, the default claim value is added to the token. To validate regular expression against the input parameter value, a test experience is available within the transform blade. This test experience operates on dummy values only. When additional input parameters are used, the name of the parameter is added to the test result instead of the actual value. To access the test section, select **Test transformation**. |
-1. Once the administrator is satisfied with the configuration settings for the transformation, they can save it to claims policy by selecting the ΓÇ£AddΓÇ¥ button. Changes wonΓÇÖt be saved unless the administrator manually selects the ΓÇ£SaveΓÇ¥ toolbar button available on ΓÇ£Manage ClaimΓÇ¥ blade.
+The following image shows an example of testing the transformations:
-RegexReplace() transformation is also available for the group claims transformations.
-### RegexReplace() Transform Validations
-Input parameters with duplicate user attributes aren't allowed. If duplicate user attributes are selected, the following validation message will be rendered after the administrator selects ΓÇ£AddΓÇ¥ or ΓÇ£Run testΓÇ¥ button.
+The following table provides information about testing the transformations. The actions listed in the table correspond to the labels in the previous image.
+| Action | Field | Description |
+| :-- | :- | :- |
+| 1 | Test transformation | Select the close or (X) button to hide the test section and re-render the **Test transformation** button again on the blade. |
+| 2 | Test regex input | Accepts input that is used for the regular expression test evaluation. In case regex-based claims transformation is configured as a second level transformation, a value is provided that would be the expected output of the first transformation. |
+| 3 | Run test | After the test regex input is provided and the **Regex pattern**, **Replacement pattern** and **Input parameters** are configured, the expression can be evaluated by selecting **Run test**. |
+| 4 | Test transformation result | If evaluation succeeds, an output of test transformation will be rendered against the **Test transformation result** label. |
+| 5 | Remove transformation | The second level transformation can be removed by selecting **Remove transformation**. |
+| 6 | Specify output if no match | When a regex input value is configured against the *Parameter 1* that doesn't match the **Regular expression**, the transformation is skipped. In such cases, the alternate user attribute can be configured, which is added to the token for the claim by checking **Specify output if no match**. |
+| 7 | Parameter 3 | If an alternate user attribute needs to be returned when there's no match and **Specify output if no match** is checked, an alternate user attribute can be selected using the dropdown. This dropdown is available against **Parameter 3 (output if no match)**. |
+| 8 | Summary | At the bottom of the blade, a full summary of the format is displayed that explains the meaning of the transformation in simple text. |
+| 9 | Add | After the configuration settings for the transformation are verified, it can be saved to a claims policy by selecting **Add**. Changes won't be saved unless **Save** is selected on the **Manage Claim** blade. |
-When unused input parameters found, the following message will be rendered on click of ΓÇ£AddΓÇ¥ and ΓÇ£Run testΓÇ¥ button click. Defined input parameters should have respective usage into the Replacement pattern text.
+RegexReplace() transformation is also available for the group claims transformations.
+### RegexReplace() transformation validations
-With test experience, if provided test regex input doesn't match with the provided regular expression then following message will be displayed. This validation needs input value hence it wonΓÇÖt be applied when user clicks on ΓÇ£AddΓÇ¥ button.
+When the following conditions occur after **Add** or **Run test** is selected, a message is displayed that provides more information about the issue:
-
-With test experience, when source for the groups into the replacement pattern not found user will receive following message. This validation wonΓÇÖt be applied when user clicks on ΓÇ£AddΓÇ¥ button.
-
+* Input parameters with duplicate user attributes aren't allowed.
+* Unused input parameters found. Defined input parameters should have respective usage into the Replacement pattern text.
+* The provided test regex input doesn't match with the provided regular expression.
+* The source for the groups into the replacement pattern isn't found.
## Add the UPN claim to SAML tokens
-The `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn` claim is part of the [SAML restricted claim set](reference-claims-mapping-policy-type.md#table-2-saml-restricted-claim-set), so you can't add it in the **User Attributes & Claims** section. As a workaround, you can add it as an [optional claim](active-directory-optional-claims.md) through **App registrations** in the Azure portal.
-
-Open the app in **App registrations** and select **Token configuration** and then **Add optional claim**. Select the **SAML** token type, choose **upn** from the list, and click **Add** to get the claim in the token.
+The `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn` claim is part of the [SAML restricted claim set](reference-claims-mapping-policy-type.md#table-2-saml-restricted-claim-set), so you can't add it in the **Attributes & Claims** section. As a workaround, you can add it as an [optional claim](active-directory-optional-claims.md) through **App registrations** in the Azure portal.
+Open the application in **App registrations**, select **Token configuration**, and then select **Add optional claim**. Select the **SAML** token type, choose **upn** from the list, and then click **Add** to add the claim to the token.
-## Emitting claims based on conditions
+## Emit claims based on conditions
-You can specify the source of a claim based on user type and the group to which the user belongs.
+You can specify the source of a claim based on user type and the group to which the user belongs.
The user type can be:-- **Any**: All users are allowed to access the application.-- **Members**: Native member of the tenant-- **All guests**: User is brought over from an external organization with or without Azure AD.-- **AAD guests**: Guest user belongs to another organization using Azure AD.-- **External guests**: Guest user belongs to an external organization that doesn't have Azure AD.
+* **Any** - All users are allowed to access the application.
+* **Members**: Native member of the tenant
+* **All guests**: User is brought over from an external organization with or without Azure AD.
+* **AAD guests**: Guest user belongs to another organization using Azure AD.
+* **External guests**: Guest user belongs to an external organization that doesn't have Azure AD.
-One scenario where this is helpful is when the source of a claim is different for a guest and an employee accessing an application. You may want to specify that if the user is an employee the NameID is sourced from user.email, but if the user is a guest then the NameID is sourced from user.extensionattribute1.
+One scenario where the user type is helpful is when the source of a claim is different for a guest and an employee accessing an application. You can specify that if the user is an employee, the NameID is sourced from user.email. If the user is a guest, then the NameID is sourced from user.extensionattribute1.
To add a claim condition: 1. In **Manage claim**, expand the Claim conditions.
-2. Select the user type.
-3. Select the group(s) to which the user should belong. You can select up to 50 unique groups across all claims for a given application.
-4. Select the **Source** where the claim is going to retrieve its value. You can select a user attribute from the source attribute dropdown or apply a transformation to the user attribute before emitting it as a claim.
+1. Select the user type.
+1. Select the group(s) to which the user should belong. You can select up to 50 unique groups across all claims for a given application.
+1. Select the **Source** where the claim is going to retrieve its value. You can select a user attribute from the source attribute dropdown or apply a transformation to the user attribute before emitting it as a claim.
+
+The order in which you add the conditions are important. Azure AD first evaluates all conditions with source `Attribute` and then evaluates all conditions with source `Transformation` to decide which value to emit in the claim. Conditions with the same source are evaluated from top to bottom. The last value, which matches the expression is emitted in the claim. Transformations such as `IsNotEmpty` and `Contains` act like restrictions.
-The order in which you add the conditions are important. Azure AD first evaluates all conditions with source `Attribute` and then evaluates all conditions with source `Transformation` to decide which value to emit in the claim. Conditions with the same source are evaluated from top to bottom. The last value, which matches the expression will be emitted in the claim. Transformations such as `IsNotEmpty` and `Contains` act like additional restrictions.
+For example, Britta Simon is a guest user in the Contoso tenant. Britta belongs to another organization that also uses Azure AD. Given the following configuration for the Fabrikam application, when Britta tries to sign in to Fabrikam, the Microsoft identity platform evaluates the conditions.
-For example, Britta Simon is a guest user in the Contoso tenant. Britta belongs to another organization that also uses Azure AD. Given the below configuration for the Fabrikam application, when Britta tries to sign in to Fabrikam, the Microsoft identity platform will evaluate the conditions as follows.
+First, the Microsoft identity platform verifies whether Britta's user type is **All guests**. Because this is true, the Microsoft identity platform assigns the source for the claim to `user.extensionattribute1`. Second, the Microsoft identity platform verifies whether Britta's user type is **AAD guests**, because this is also true, the Microsoft identity platform assigns the source for the claim to `user.mail`. Finally, the claim is emitted with a value of `user.mail` for Britta.
-First, the Microsoft identity platform verifies if Britta's user type is **All guests**. Since, this is true then the Microsoft identity platform assigns the source for the claim to `user.extensionattribute1`. Second, the Microsoft identity platform verifies if Britta's user type is **AAD guests**, since this is also true then the Microsoft identity platform assigns the source for the claim to `user.mail`. Finally, the claim is emitted with value `user.mail` for Britta.
+As another example, consider when Britta Simon tries to sign in and the following configuration is used. Azure AD first evaluates all conditions with source `Attribute`. Because Britta's user type is **AAD guests**, `user.mail` is assigned as the source for the claim. Next, Azure AD evaluates the transformations. Because Britta is a guest, `user.extensionattribute1` is now the new source for the claim. Because Britta is in **AAD guests**, `user.othermail` is now the source for this claim. Finally, the claim is emitted with a value of `user.othermail` for Britta.
-As another example, consider when Britta Simon tries to sign in and the following configuration is used. Azure AD first evaluates all conditions with source `Attribute`. Because Britta's user type is **AAD guests**, `user.mail` is assigned as the source for the claim. Next, Azure AD evaluates the transformations. Because Britta is a guest, `user.extensionattribute1` is now the new source for the claim. Because Britta is in **AAD guests**, `user.othermail` is now the source for this claim. Finally, the claim is emitted with value `user.othermail` for Britta.
+As a final example, consider what happens if Britta has no `user.othermail` configured or it's empty. In both cases the condition entry is ignored, and the claim falls back to `user.extensionattribute1` instead.
-As a final example, letΓÇÖs consider what happens if Britta has no `user.othermail` configured or it's empty. In both cases the condition entry is ignored, and the claim will fall back to `user.extensionattribute1` instead.
+## Advanced SAML claims options
-## Advanced SAML Claims Options
-The following table lists advanced options that can be configured for an application.
+Advanced claims options can be configured for SAML2.0 applications to expose the same claim to OIDC tokens and vice versa for applications that intend to use the same claim for both SAML2.0 and OIDC response tokens.
+
+Advanced claim options can be configured by checking the box under **Advanced SAML Claims Options** in the **Manage claims** blade.
+
+The following table lists other advanced options that can be configured for an application.
| Option | Description | |--|-|
-| Append application ID to issuer | Automatically adds the application ID to the issuer claim. This option ensures a unique claim value for each instance when there are multiple instances of the same application. This setting is ignored if a custom signing key isn't configured for the application. |ΓÇ»
+| Append application ID to issuer | Automatically adds the application ID to the issuer claim. This option ensures a unique claim value for each instance when there are multiple instances of the same application. This setting is ignored if a custom signing key isn't configured for the application. |
| Override audience claim | Allows for the overriding of the audience claim sent to the application. The value provided must be a valid absolute URI. This setting is ignored if a custom signing key isn't configured for the application. |
-| Include attribute name format | If selected, Azure Active Directory adds an additional attribute called `NameFormat` that describes the format of the name to restricted, core, and optional claims for the application. For more information, see, [Claims mapping policy type](reference-claims-mapping-policy-type.md#claim-sets) |
--
+| Include attribute name format | If selected, Azure Active Directory adds an attribute called `NameFormat` that describes the format of the name to restricted, core, and optional claims for the application. For more information, see, [Claims mapping policy type](reference-claims-mapping-policy-type.md#claim-sets) |
## Next steps
-* [Application management in Azure AD](../manage-apps/what-is-application-management.md)
-* [Configure single sign-on on applications that aren't in the Azure AD application gallery](../manage-apps/configure-saml-single-sign-on.md)
-* [Troubleshoot SAML-based single sign-on](../manage-apps/debug-saml-sso-issues.md)
+* [Configure single sign-on for applications that aren't in the Azure AD application gallery](../manage-apps/configure-saml-single-sign-on.md)
active-directory Active Directory Schema Extensions https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/active-directory-schema-extensions.md
Previously updated : 07/29/2020 Last updated : 01/06/2023 -+ # Using directory extension attributes in claims
active-directory Authentication Vs Authorization https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/authentication-vs-authorization.md
Title: Authentication vs. authorization description: Learn about the basics of authentication and authorization in the Microsoft identity platform. -+
Last updated 11/02/2022-+ -+ #Customer intent: As an application developer, I want to understand the basic concepts of authentication and authorization in the Microsoft identity platform.
active-directory Authorization Basics https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/authorization-basics.md
description: Learn about the basics of authorization in the Microsoft identity p
-
Previously updated : 06/16/2022 Last updated : 01/06/2023 --+ #Customer intent: As an application developer, I want to understand the basic concepts of authorization in the Microsoft identity platform.
active-directory Custom Rbac For Developers https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/custom-rbac-for-developers.md
description: Learn about what custom RBAC is and why it's important to implement
-
Previously updated : 08/19/2022 Last updated : 01/06/2023 -+ #Customer intent: As a developer, I want to learn about custom RBAC and why I need to use it in my application. # Role-based access control for application developers
-Role-based access control (RBAC) allows certain users or groups to have specific permissions to access and manage resources. Application RBAC differs from [Azure role-based access control](../../role-based-access-control/overview.md) and [Azure AD role-based access control](../roles/custom-overview.md#understand-azure-ad-role-based-access-control). Azure custom roles and built-in roles are both part of Azure RBAC, which is used to help manage Azure resources. Azure AD RBAC is used to manage Azure AD resources. This article explains application-specific RBAC.
+Role-based access control (RBAC) allows certain users or groups to have specific permissions to access and manage resources. Application RBAC differs from [Azure role-based access control](../../role-based-access-control/overview.md) and [Azure AD role-based access control](../roles/custom-overview.md#understand-azure-ad-role-based-access-control). Azure custom roles and built-in roles are both part of Azure RBAC, which is used to help manage Azure resources. Azure AD RBAC is used to manage Azure AD resources. This article explains application-specific RBAC. For information about implementing application-specific RBAC, see [How to add app roles to your application and receive them in the token](./howto-add-app-roles-in-azure-ad-apps.md).
## Roles definitions
Although either app roles or groups can be used for authorization, key differenc
## Next steps -- [How to add app roles to your application and receive them in the token](./howto-add-app-roles-in-azure-ad-apps.md) - [Azure Identity Management and access control security best practices](../../security/fundamentals/identity-management-best-practices.md)
active-directory Developer Support Help Options https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/developer-support-help-options.md
description: Learn where to get help and find answers to your questions as you b
- Previously updated : 03/09/2022 Last updated : 12/29/2022
If you need help with one of the Microsoft Authentication Libraries (MSAL), open
## Share your product ideas
-Have an idea for improving the for the Microsoft identity platform? Browse and vote for ideas submitted by others or submit your own:
+Have an idea for improving the Microsoft identity platform? Browse and vote for ideas submitted by others or submit your own:
https://feedback.azure.com/d365community/forum/22920db1-ad25-ec11-b6e6-000d3a4f0789
active-directory Howto Configure Publisher Domain https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/howto-configure-publisher-domain.md
Title: Configure an app's publisher domain description: Learn how to configure an app's publisher domain to let users know where their information is being sent. -+ Previously updated : 11/11/2022- Last updated : 01/05/2023+ # Configure an app's publisher domain
-An appΓÇÖs publisher domain informs users where their information is being sent. The publisher domain also acts as an input or prerequisite for [publisher verification](publisher-verification-overview.md).
+An appΓÇÖs publisher domain informs users where their information is being sent. The publisher domain also acts as an input or prerequisite for [publisher verification](publisher-verification-overview.md). Depending on when the app was registered and the status of the Publisher Verification, it would be displayed directly to the user on the [application's consent prompt](application-consent-experience.md). An applicationΓÇÖs publisher domain is displayed to users (depending on the state of Publisher Verification) on the consent UX to let users know where their information is being sent for trustworthiness.
-In an app's [consent prompt](application-consent-experience.md), either the publisher domain or the publisher verification status appears. Which information is shown depends on whether the app is a [multitenant app](/azure/architecture/guide/multitenant/overview), when the app was registered, and the app's publisher verification status.
+In an app's consent prompt, either the publisher domain or the publisher verification status appears. Which information is shown depends on whether the app is a [multitenant app](/azure/architecture/guide/multitenant/overview), when the app was registered, and the app's publisher verification status.
+
+## Understand multitenant apps
A *multitenant app* is an app that supports user accounts that are outside a single organizational directory. For example, a multitenant app might support all Azure Active Directory (Azure AD) work or school accounts, or it might support both Azure AD work or school accounts and personal Microsoft accounts.
active-directory Howto Implement Rbac For Apps https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/howto-implement-rbac-for-apps.md
description: Learn how to implement role-based access control in your applicatio
-
Previously updated : 06/16/2022 Last updated : 01/06/2023 --+ #Customer intent: As an application developer, I want to learn how to implement role-based access control in my applications so I can make sure that only those users with the right access privileges can access the functionality of them.
active-directory Identity Videos https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/identity-videos.md
description: A list of videos about modern authentication and the Microsoft iden
- Previously updated : 08/03/2020 Last updated : 01/06/2023
active-directory Msal Acquire Cache Tokens https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/msal-acquire-cache-tokens.md
The format of the scope value varies depending on the resource (the API) receivi
For Microsoft Graph only, the `user.read` scope maps to `https://graph.microsoft.com/User.Read`, and both scope formats can be used interchangeably.
-Certain web APIs such as the Azure Resource Manager API (https://management.core.windows.net/) expect a trailing forward slash ('/') in the audience claim (`aud`) of the access token. In this case, pass the scope as `https://management.core.windows.net//user_impersonation`, including the double forward slash ('//').
+Certain web APIs such as the Azure Resource Manager API (`https://management.core.windows.net/`) expect a trailing forward slash ('/') in the audience claim (`aud`) of the access token. In this case, pass the scope as `https://management.core.windows.net//user_impersonation`, including the double forward slash ('//').
Other APIs might require that *no scheme or host* is included in the scope value, and expect only the app ID (a GUID) and the scope name, for example:
active-directory Msal Logging Java https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/msal-logging-java.md
This article shows how to enable MSAL4J logging using the logback framework in a
} ```
-In your tenant, you'll need separate app registrations for the web app and the web API. For app registration and exposing the web API scope, follow the steps in the scenario [A web app that authenticates users and calls web APIs](/scenario-web-app-call-api-overview).
+In your tenant, you'll need separate app registrations for the web app and the web API. For app registration and exposing the web API scope, follow the steps in the scenario [A web app that authenticates users and calls web APIs](/azure/active-directory/develop/scenario-web-app-call-api-overview).
For instructions on how to bind to other logging frameworks, see the [SLF4J manual](http://www.slf4j.org/manual.html).
active-directory Reference Aadsts Error Codes https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/reference-aadsts-error-codes.md
The `error` field has several possible values - review the protocol documentatio
| AADSTS50000 | TokenIssuanceError - There's an issue with the sign-in service. [Open a support ticket](../fundamentals/active-directory-troubleshooting-support-howto.md) to resolve this issue. | | AADSTS50001 | InvalidResource - The resource is disabled or doesn't exist. Check your app's code to ensure that you have specified the exact resource URL for the resource you're trying to access. | | AADSTS50002 | NotAllowedTenant - Sign-in failed because of a restricted proxy access on the tenant. If it's your own tenant policy, you can change your restricted tenant settings to fix this issue. |
+| AADSTS500011 | InvalidResourceServicePrincipalNotFound - The resource principal named {name} was not found in the tenant named {tenant}. This can happen if the application has not been installed by the administrator of the tenant or consented to by any user in the tenant. You might have sent your authentication request to the wrong tenant. If you expect the app to be installed, you may need to provide administrator permissions to add it. Check with the developers of the resource and application to understand what the right setup for your tenant is. |
| AADSTS500021 | Access to '{tenant}' tenant is denied. AADSTS500021 indicates that the tenant restriction feature is configured and that the user is trying to access a tenant that isn't in the list of allowed tenants specified in the header `Restrict-Access-To-Tenant`. For more information, see [Use tenant restrictions to manage access to SaaS cloud applications](../manage-apps/tenant-restrictions.md).| | AADSTS500022 | Access to '{tenant}' tenant is denied. AADSTS500022 indicates that the tenant restriction feature is configured and that the user is trying to access a tenant that isn't in the list of allowed tenants specified in the header `Restrict-Access-To-Tenant`. For more information, see [Use tenant restrictions to manage access to SaaS cloud applications](../manage-apps/tenant-restrictions.md).| | AADSTS50003 | MissingSigningKey - Sign-in failed because of a missing signing key or certificate. This might be because there was no signing key configured in the app. To learn more, see the troubleshooting article for error [AADSTS50003](/troubleshoot/azure/active-directory/error-code-aadsts50003-cert-or-key-not-configured). If you still see issues, contact the app owner or an app admin. |
The `error` field has several possible values - review the protocol documentatio
| AADSTS50010 | AudienceUriValidationFailed - Audience URI validation for the app failed since no token audiences were configured. | | AADSTS50011 | InvalidReplyTo - The reply address is missing, misconfigured, or doesn't match reply addresses configured for the app. As a resolution ensure to add this missing reply address to the Azure Active Directory application or have someone with the permissions to manage your application in Active Directory do this for you. To learn more, see the troubleshooting article for error [AADSTS50011](/troubleshoot/azure/active-directory/error-code-aadsts50011-reply-url-mismatch).| | AADSTS50012 | AuthenticationFailed - Authentication failed for one of the following reasons:<ul><li>The subject name of the signing certificate isn't authorized</li><li>A matching trusted authority policy was not found for the authorized subject name</li><li>The certificate chain isn't valid</li><li>The signing certificate isn't valid</li><li>Policy isn't configured on the tenant</li><li>Thumbprint of the signing certificate isn't authorized</li><li>Client assertion contains an invalid signature</li></ul> |
-| AADSTS50013 | InvalidAssertion - Assertion is invalid because of various reasons - The token issuer doesn't match the api version within its valid time range -expired -malformed - Refresh token in the assertion isn't a primary refresh token. |
-| AADSTS50014 | GuestUserInPendingState - The user's redemption is in a pending state. The guest user account isn't fully created yet. |
+| AADSTS50013 | InvalidAssertion - Assertion is invalid because of various reasons - The token issuer doesn't match the api version within its valid time range -expired -malformed - Refresh token in the assertion isn't a primary refresh token. Contact the app developer. |
+| AADSTS50014 | GuestUserInPendingState - The user account doesnΓÇÖt exist in the directory. An application likely chose the wrong tenant to sign into, and the currently logged in user was prevented from doing so since they did not exist in your tenant. If this user should be able to log in, add them as a guest. For further information, please visit [add B2B users](/azure/active-directory/b2b/add-users-administrator). |
| AADSTS50015 | ViralUserLegalAgeConsentRequiredState - The user requires legal age group consent. | | AADSTS50017 | CertificateValidationFailed - Certification validation failed, reasons for the following reasons:<ul><li>Cannot find issuing certificate in trusted certificates list</li><li>Unable to find expected CrlSegment</li><li>Cannot find issuing certificate in trusted certificates list</li><li>Delta CRL distribution point is configured without a corresponding CRL distribution point</li><li>Unable to retrieve valid CRL segments because of a timeout issue</li><li>Unable to download CRL</li></ul>Contact the tenant admin. |
-| AADSTS50020 | UserUnauthorized - Users are unauthorized to call this endpoint. |
+| AADSTS50020 | UserUnauthorized - Users are unauthorized to call this endpoint. User account '{email}' from identity provider '{idp}' does not exist in tenant '{tenant}' and cannot access the application '{appid}'({appName}) in that tenant. This account needs to be added as an external user in the tenant first. Sign out and sign in again with a different Azure Active Directory user account. If this user should be a member of the tenant, they should be invited via the [B2B system](/azure/active-directory/b2b/add-users-administrator). For additional information, visit [AADSTS50020](/troubleshoot/azure/active-directory/error-code-aadsts50020-user-account-identity-provider-does-not-exist). |
| AADSTS500212 | NotAllowedByOutboundPolicyTenant - The user's administrator has set an outbound access policy that doesn't allow access to the resource tenant. | | AADSTS500213 | NotAllowedByInboundPolicyTenant - The resource tenant's cross-tenant access policy doesn't allow this user to access this tenant. | | AADSTS50027 | InvalidJwtToken - Invalid JWT token because of the following reasons:<ul><li>doesn't contain nonce claim, sub claim</li><li>subject identifier mismatch</li><li>duplicate claim in idToken claims</li><li>unexpected issuer</li><li>unexpected audience</li><li>not within its valid time range </li><li>token format isn't proper</li><li>External ID token from issuer failed signature verification.</li></ul> | | AADSTS50029 | Invalid URI - domain name contains invalid characters. Contact the tenant admin. | | AADSTS50032 | WeakRsaKey - Indicates the erroneous user attempt to use a weak RSA key. | | AADSTS50033 | RetryableError - Indicates a transient error not related to the database operations. |
-| AADSTS50034 | UserAccountNotFound - To sign into this application, the account must be added to the directory. |
+| AADSTS50034 | UserAccountNotFound - To sign into this application, the account must be added to the directory. This error can occur because the user mis-typed their username, or isn't in the tenant. An application may have chosen the wrong tenant to sign into, and the currently logged in user was prevented from doing so since they did not exist in your tenant. If this user should be able to log in, add them as a guest. See docs here: [Add B2B users](/azure/active-directory/external-identities/add-users-administrator). |
| AADSTS50042 | UnableToGeneratePairwiseIdentifierWithMissingSalt - The salt required to generate a pairwise identifier is missing in principle. Contact the tenant admin. | | AADSTS50043 | UnableToGeneratePairwiseIdentifierWithMultipleSalts | | AADSTS50048 | SubjectMismatchesIssuer - Subject mismatches Issuer claim in the client assertion. Contact the tenant admin. |
The `error` field has several possible values - review the protocol documentatio
| AADSTS50071 | SignoutMessageExpired - The logout request has expired. | | AADSTS50072 | UserStrongAuthEnrollmentRequiredInterrupt - User needs to enroll for second factor authentication (interactive). | | AADSTS50074 | UserStrongAuthClientAuthNRequiredInterrupt - Strong authentication is required and the user did not pass the MFA challenge. |
-| AADSTS50076 | UserStrongAuthClientAuthNRequired - Due to a configuration change made by the admin, or because you moved to a new location, the user must use multi-factor authentication to access the resource. Retry with a new authorize request for the resource. |
+| AADSTS50076 | UserStrongAuthClientAuthNRequired - Due to a configuration change made by the admin such as a Conditional Access policy, per-user enforcement, or because you moved to a new location, the user must use multi-factor authentication to access the resource. Retry with a new authorize request for the resource. |
| AADSTS50078 | UserStrongAuthExpired- Presented multi-factor authentication has expired due to policies configured by your administrator, you must refresh your multi-factor authentication to access '{resource}'.|
-| AADSTS50079 | UserStrongAuthEnrollmentRequired - Due to a configuration change made by the administrator, or because the user moved to a new location, the user is required to use multi-factor authentication. |
+| AADSTS50079 | UserStrongAuthEnrollmentRequired - Due to a configuration change made by the admin such as a Conditional Access policy, per-user enforcement, or because the user moved to a new location, the user is required to use multi-factor authentication. Either a managed user needs to register security info to complete multi-factor authentication, or a federated user needs to get the multi-factor claim from the federated identity provider. |
| AADSTS50085 | Refresh token needs social IDP login. Have user try signing-in again with username -password | | AADSTS50086 | SasNonRetryableError | | AADSTS50087 | SasRetryableError - A transient error has occurred during strong authentication. Please try again. |
The `error` field has several possible values - review the protocol documentatio
| AADSTS50124 | ClaimsTransformationInvalidInputParameter - Claims Transformation contains invalid input parameter. Contact the tenant admin to update the policy. | | AADSTS501241 | Mandatory Input '{paramName}' missing from transformation ID '{transformId}'. This error is returned while Azure AD is trying to build a SAML response to the application. NameID claim or NameIdentifier is mandatory in SAML response and if Azure AD failed to get source attribute for NameID claim, it will return this error. As a resolution, ensure you add claim rules in *Azure portal* > *Azure Active Directory* > *Enterprise Applications* > *Select your application* > *Single Sign-On* > *User Attributes & Claims* > *Unique User Identifier (Name ID)*. | | AADSTS50125 | PasswordResetRegistrationRequiredInterrupt - Sign-in was interrupted because of a password reset or password registration entry. |
-| AADSTS50126 | InvalidUserNameOrPassword - Error validating credentials due to invalid username or password. |
+| AADSTS50126 | InvalidUserNameOrPassword - Error validating credentials due to invalid username or password. The user didn't enter the right credentials. It's expected to see some number of these errors in your logs due to users making mistakes. |
| AADSTS50127 | BrokerAppNotInstalled - User needs to install a broker app to gain access to this content. | | AADSTS50128 | Invalid domain name - No tenant-identifying information found in either the request or implied by any provided credentials. | | AADSTS50129 | DeviceIsNotWorkplaceJoined - Workplace join is required to register the device. |
The `error` field has several possible values - review the protocol documentatio
| AADSTS50140 | KmsiInterrupt - This error occurred due to "Keep me signed in" interrupt when the user was signing-in. This is an expected part of the login flow, where a user is asked if they want to remain signed into their current browser to make further logins easier. For more information, see [The new Azure AD sign-in and “Keep me signed in” experiences rolling out now!](https://techcommunity.microsoft.com/t5/azure-active-directory-identity/the-new-azure-ad-sign-in-and-keep-me-signed-in-experiences/m-p/128267). You can [open a support ticket](../fundamentals/active-directory-troubleshooting-support-howto.md) with Correlation ID, Request ID, and Error code to get more details.| | AADSTS50143 | Session mismatch - Session is invalid because user tenant doesn't match the domain hint due to different resource. [Open a support ticket](../fundamentals/active-directory-troubleshooting-support-howto.md) with Correlation ID, Request ID, and Error code to get more details. | | AADSTS50144 | InvalidPasswordExpiredOnPremPassword - User's Active Directory password has expired. Generate a new password for the user or have the user use the self-service reset tool to reset their password. |
-| AADSTS50146 | MissingCustomSigningKey - This app is required to be configured with an app-specific signing key. It is either not configured with one, or the key has expired or isn't yet valid. |
+| AADSTS50146 | MissingCustomSigningKey - This app is required to be configured with an app-specific signing key. It is either not configured with one, or the key has expired or isn't yet valid. Please contact the owner of the application. |
| AADSTS50147 | MissingCodeChallenge - The size of the code challenge parameter isn't valid. | | AADSTS501481 | The Code_Verifier doesn't match the code_challenge supplied in the authorization request.| | AADSTS501491 | InvalidCodeChallengeMethodInvalidSize - Invalid size of Code_Challenge parameter.|
The `error` field has several possible values - review the protocol documentatio
| AADSTS51000 | RequiredFeatureNotEnabled - The feature is disabled. | | AADSTS51001 | DomainHintMustbePresent - Domain hint must be present with on-premises security identifier or on-premises UPN. | | AADSTS1000104| XCB2BResourceCloudNotAllowedOnIdentityTenant - Resource cloud {resourceCloud} isn't allowed on identity tenant {identityTenant}. {resourceCloud} - cloud instance which owns the resource. {identityTenant} - is the tenant where signing-in identity is originated from. |
-| AADSTS51004 | UserAccountNotInDirectory - The user account doesnΓÇÖt exist in the directory. |
+| AADSTS51004 | UserAccountNotInDirectory - The user account doesnΓÇÖt exist in the directory. An application likely chose the wrong tenant to sign into, and the currently logged in user was prevented from doing so since they did not exist in your tenant. If this user should be able to log in, add them as a guest. For further information, please visit [add B2B users](/azure/active-directory/b2b/add-users-administrator). |
| AADSTS51005 | TemporaryRedirect - Equivalent to HTTP status 307, which indicates that the requested information is located at the URI specified in the location header. When you receive this status, follow the location header associated with the response. When the original request method was POST, the redirected request will also use the POST method. | | AADSTS51006 | ForceReauthDueToInsufficientAuth - Integrated Windows authentication is needed. User logged in using a session token that is missing the integrated Windows authentication claim. Request the user to log in again. | | AADSTS52004 | DelegationDoesNotExistForLinkedIn - The user has not provided consent for access to LinkedIn resources. |
-| AADSTS53000 | DeviceNotCompliant - Conditional Access policy requires a compliant device, and the device isn't compliant. The user must enroll their device with an approved MDM provider like Intune. |
+| AADSTS53000 | DeviceNotCompliant - Conditional Access policy requires a compliant device, and the device isn't compliant. The user must enroll their device with an approved MDM provider like Intune. For additional information, please visit [Conditional Access device remediation](/azure/active-directory/conditional-access/troubleshoot-conditional-access). |
| AADSTS53001 | DeviceNotDomainJoined - Conditional Access policy requires a domain joined device, and the device isn't domain joined. Have the user use a domain joined device. | | AADSTS53002 | ApplicationUsedIsNotAnApprovedApp - The app used isn't an approved app for Conditional Access. User needs to use one of the apps from the list of approved apps to use in order to get access. |
-| AADSTS53003 | BlockedByConditionalAccess - Access has been blocked by Conditional Access policies. The access policy does not allow token issuance. |
+| AADSTS53003 | BlockedByConditionalAccess - Access has been blocked by Conditional Access policies. The access policy does not allow token issuance. If this is unexpected, see the conditional access policy that applied to this request in the Azure Portal or contact your administrator. For additional information, please visit [troubleshooting sign-in with Conditional Access](/azure/active-directory/conditional-access/troubleshoot-conditional-access). |
| AADSTS53004 | ProofUpBlockedDueToRisk - User needs to complete the multi-factor authentication registration process before accessing this content. User should register for multi-factor authentication. | | AADSTS53010 | ProofUpBlockedDueToSecurityInfoAcr - Cannot configure multi-factor authentication methods because the organization requires this information to be set from specific locations or devices. | | AADSTS53011 | User blocked due to risk on home tenant. |
+| AADSTS530034 | DelegatedAdminBlockedDueToSuspiciousActivity - A delegated administrator was blocked from accessing the tenant due to account risk in their home tenant. |
| AADSTS54000 | MinorUserBlockedLegalAgeGroupRule | | AADSTS54005 | OAuth2 Authorization code was already redeemed, please retry with a new valid code or use an existing refresh token. | | AADSTS65001 | DelegationDoesNotExist - The user or administrator has not consented to use the application with ID X. Send an interactive authorization request for this user and resource. |
The `error` field has several possible values - review the protocol documentatio
| AADSTS67003 | ActorNotValidServiceIdentity | | AADSTS70000 | InvalidGrant - Authentication failed. The refresh token isn't valid. Error may be due to the following reasons:<ul><li>Token binding header is empty</li><li>Token binding hash does not match</li></ul> | | AADSTS70001 | UnauthorizedClient - The application is disabled. To learn more, see the troubleshooting article for error [AADSTS70001](/troubleshoot/azure/active-directory/error-code-aadsts70001-app-not-found-in-directory). |
+| AADSTS700011 | UnauthorizedClientAppNotFoundInOrgIdTenant - Application with identifier {appIdentifier} was not found in the directory. A client application requested a token from your tenant, but the client app doesn't exist in your tenant, so the call failed. |
| AADSTS70002 | InvalidClient - Error validating the credentials. The specified client_secret does not match the expected value for this client. Correct the client_secret and try again. For more info, see [Use the authorization code to request an access token](v2-oauth2-auth-code-flow.md#redeem-a-code-for-an-access-token). | | AADSTS700025 | InvalidClientPublicClientWithCredential - Client is public so neither 'client_assertion' nor 'client_secret' should be presented. | | AADSTS70003 | UnsupportedGrantType - The app returned an unsupported grant type. |
The `error` field has several possible values - review the protocol documentatio
| AADSTS700054 | Response_type 'id_token' isn't enabled for the application. The application requested an ID token from the authorization endpoint, but did not have ID token implicit grant enabled. Go to Azure portal > Azure Active Directory > App registrations > Select your application > Authentication > Under 'Implicit grant and hybrid flows', make sure 'ID tokens' is selected.| | AADSTS70007 | UnsupportedResponseMode - The app returned an unsupported value of `response_mode` when requesting a token. | | AADSTS70008 | ExpiredOrRevokedGrant - The refresh token has expired due to inactivity. The token was issued on XXX and was inactive for a certain amount of time. |
+| AADSTS700082 | ExpiredOrRevokedGrantInactiveToken - The refresh token has expired due to inactivity. The token was issued on {issueDate} and was inactive for {time}. Expected part of the token lifecycle - the user went an extended period of time without using the application, so the token was expired when the app attempted to refresh it. |
| AADSTS700084 | The refresh token was issued to a single page app (SPA), and therefore has a fixed, limited lifetime of {time}, which can't be extended. It is now expired and a new sign in request must be sent by the SPA to the sign in page. The token was issued on {issueDate}.| | AADSTS70011 | InvalidScope - The scope requested by the app is invalid. | | AADSTS70012 | MsaServerError - A server error occurred while authenticating an MSA (consumer) user. Try again. If it continues to fail, [open a support ticket](../fundamentals/active-directory-troubleshooting-support-howto.md) |
The `error` field has several possible values - review the protocol documentatio
| AADSTS80010 | OnPremisePasswordValidationEncryptionException - The Authentication Agent is unable to decrypt password. | | AADSTS80012 | OnPremisePasswordValidationAccountLogonInvalidHours - The users attempted to log on outside of the allowed hours (this is specified in AD). | | AADSTS80013 | OnPremisePasswordValidationTimeSkew - The authentication attempt could not be completed due to time skew between the machine running the authentication agent and AD. Fix time sync issues. |
+| AADSTS80014 | OnPremisePasswordValidationAuthenticationAgentTimeout - Validation request responded after maximum elapsed time exceeded. Open a support ticket with the error code, correlation ID, and timestamp to get more details on this error. |
| AADSTS81004 | DesktopSsoIdentityInTicketIsNotAuthenticated - Kerberos authentication attempt failed. | | AADSTS81005 | DesktopSsoAuthenticationPackageNotSupported - The authentication package isn't supported. | | AADSTS81006 | DesktopSsoNoAuthorizationHeader - No authorization header was found. |
The `error` field has several possible values - review the protocol documentatio
| AADSTS81010 | DesktopSsoAuthTokenInvalid - Seamless SSO failed because the user's Kerberos ticket has expired or is invalid. | | AADSTS81011 | DesktopSsoLookupUserBySidFailed - Unable to find user object based on information in the user's Kerberos ticket. | | AADSTS81012 | DesktopSsoMismatchBetweenTokenUpnAndChosenUpn - The user trying to sign in to Azure AD is different from the user signed into the device. |
-| AADSTS90002 | InvalidTenantName - The tenant name wasn't found in the data store. Check to make sure you have the correct tenant ID. |
+| AADSTS90002 | InvalidTenantName - The tenant name wasn't found in the data store. Check to make sure you have the correct tenant ID. The application developer will receive this error if their app attempts to sign into a tenant that we cannot find. Often, this is because a cross-cloud app was used against the wrong cloud, or the developer attempted to sign in to a tenant derived from an email address, but the domain isn't registered. |
| AADSTS90004 | InvalidRequestFormat - The request isn't properly formatted. | | AADSTS90005 | InvalidRequestWithMultipleRequirements - Unable to complete the request. The request isn't valid because the identifier and login hint can't be used together. | | AADSTS90006 | ExternalServerRetryableError - The service is temporarily unavailable.|
The `error` field has several possible values - review the protocol documentatio
| AADSTS90051 | InvalidNationalCloudId - The national cloud identifier contains an invalid cloud identifier. | | AADSTS90055 | TenantThrottlingError - There are too many incoming requests. This exception is thrown for blocked tenants. | | AADSTS90056 | BadResourceRequest - To redeem the code for an access token, the app should send a POST request to the `/token` endpoint. Also, prior to this, you should provide an authorization code and send it in the POST request to the `/token` endpoint. Refer to this article for an overview of [OAuth 2.0 authorization code flow](v2-oauth2-auth-code-flow.md). Direct the user to the `/authorize` endpoint, which will return an authorization_code. By posting a request to the `/token` endpoint, the user gets the access token. Log in the Azure portal, and check **App registrations > Endpoints** to confirm that the two endpoints were configured correctly. |
-| AADSTS90072 | PassThroughUserMfaError - The external account that the user signs in with doesn't exist on the tenant that they signed into; so the user can't satisfy the MFA requirements for the tenant. This error also might occur if the users are synced, but there is a mismatch in the ImmutableID (sourceAnchor) attribute between Active Directory and Azure AD. The account must be added as an external user in the tenant first. Sign out and sign in with a different Azure AD user account. |
+| AADSTS900561 | BadResourceRequestInvalidRequest - The endpoint only accepts {valid_verbs} requests. Received a {invalid_verb} request. {valid_verbs} represents a list of HTTP verbs supported by the endpoint (for example, POST), {invalid_verb} is an HTTP verb used in the current request (for example, GET). This can be due to developer error, or due to users pressing the back button in their browser, triggering a bad request. It can be ignored. |
+| AADSTS90072 | PassThroughUserMfaError - The external account that the user signs in with doesn't exist on the tenant that they signed into; so the user can't satisfy the MFA requirements for the tenant. This error also might occur if the users are synced, but there is a mismatch in the ImmutableID (sourceAnchor) attribute between Active Directory and Azure AD. The account must be added as an external user in the tenant first. Sign out and sign in with a different Azure AD user account. For more information, please visit [configuring external identities](/azure/active-directory/external-identities/external-identities-overview). |
| AADSTS90081 | OrgIdWsFederationMessageInvalid - An error occurred when the service tried to process a WS-Federation message. The message isn't valid. | | AADSTS90082 | OrgIdWsFederationNotSupported - The selected authentication policy for the request isn't currently supported. | | AADSTS90084 | OrgIdWsFederationGuestNotAllowed - Guest accounts aren't allowed for this site. |
active-directory Reference App Multi Instancing https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/reference-app-multi-instancing.md
Previously updated : 06/28/2022 Last updated : 01/06/2023 -
-# Configure SAML app multi-instancing for an application in Azure Active Directory   
-App multi-instancing refers to the need for the configuration of multiple instances of the same application within a tenant.  For example, the organization has multiple Amazon Web Services accounts, each of which needs a separate service principal to handle instance-specific claims mapping (adding the AccountID claim for that AWS tenant) and roles assignment.  Or the customer has multiple instances of Box, which doesn’t need special claims mapping, but does need separate service principals for separate signing keys. 
+# Configure SAML app multi-instancing for an application in Azure Active Directory
-## IDP versus SP initiated SSO    
-A user can sign-in to an application one of two ways, either through the application directly, which is known as service provider (SP) initiated single sign-on (SSO), or by going directly to the identity provider (IDP), known as IDP initiated SSO. Depending on which approach is used within your organization you'll need to follow the appropriate instructions below.ΓÇ»
+App multi-instancing refers to the need for the configuration of multiple instances of the same application within a tenant. For example, the organization has multiple Amazon Web Services accounts, each of which needs a separate service principal to handle instance-specific claims mapping (adding the AccountID claim for that AWS tenant) and roles assignment. Or the customer has multiple instances of Box, which doesn't need special claims mapping, but does need separate service principals for separate signing keys.
-## SP Initiated  
-In the SAML request of SP initiated SSO, the Issuer specified is usually the App ID Uri. Utilizing App ID Uri doesn’t allow the customer to distinguish which instance of an application is being targeted when using SP initiated SSO.  
+## IDP versus SP initiated SSO
-## SP Initiated Configuration InstructionsΓÇ»
-Update the SAML single sign-on service URL configured within the service provider for each instance to include the service principal guid as part of the URL. For example, the general SSO sign-in URL for SAML would have been `https://login.microsoftonline.com/<tenantid>/saml2`, the URL can now be updated to target a specific service principal as follows `https://login.microsoftonline.com/<tenantid>/saml2/<issuer>`.ΓÇ»
+A user can sign-in to an application one of two ways, either through the application directly, which is known as service provider (SP) initiated single sign-on (SSO), or by going directly to the identity provider (IDP), known as IDP initiated SSO. Depending on which approach is used within your organization you'll need to follow the appropriate instructions below.
-Only service principal identifiers in GUID format are accepted for the ΓÇÿissuerΓÇÖ value. The service principal identifiers override the issuer in the SAML request and response, and the rest of the flow is completed as usual. There's one exception: if the application requires the request to be signed, the request is rejected even if the signature was valid. The rejection is done to avoid any security risks with functionally overriding values in a signed request.ΓÇ»
+## SP Initiated
-## IDP Initiated  
-The IDP initiated feature exposes two settings for each application.  
+In the SAML request of SP initiated SSO, the Issuer specified is usually the App ID Uri. Utilizing App ID Uri doesn't allow the customer to distinguish which instance of an application is being targeted when using SP initiated SSO.
-- An “audience override” option exposed for configuration by using claims mapping or the portal.  The intended use case is applications that require the same audience for multiple instances. This setting is ignored if no custom signing key is configured for the application.   
+## SP Initiated Configuration Instructions
-- An ΓÇ£issuer with application idΓÇ¥ flag to indicate the issuer should be unique for each application instead of unique for each tenant.ΓÇ» This setting is ignored if no custom signing key is configured for the application.ΓÇ»
+Update the SAML single sign-on service URL configured within the service provider for each instance to include the service principal guid as part of the URL. For example, the general SSO sign-in URL for SAML would have been `https://login.microsoftonline.com/<tenantid>/saml2`, the URL can now be updated to target a specific service principal as follows `https://login.microsoftonline.com/<tenantid>/saml2/<issuer>`.
-## IDP Initiated Configuration InstructionsΓÇ»
-1. Open any SSO enabled enterprise app and navigate to the SAML single sign on blade.  
-1. Select the ΓÇÿEditΓÇÖ button on the ΓÇÿUser Attributes & ClaimsΓÇÖ panel.
+Only service principal identifiers in GUID format are accepted for the `issuer` value. The service principal identifiers override the issuer in the SAML request and response, and the rest of the flow is completed as usual. There's one exception: if the application requires the request to be signed, the request is rejected even if the signature was valid. The rejection is done to avoid any security risks with functionally overriding values in a signed request.
+
+## IDP Initiated
+
+The IDP initiated feature exposes two settings for each application.
+
+- An **audience override** option exposed for configuration by using claims mapping or the portal. The intended use case is applications that require the same audience for multiple instances. This setting is ignored if no custom signing key is configured for the application.
+
+- An **issuer with application id** flag to indicate the issuer should be unique for each application instead of unique for each tenant. This setting is ignored if no custom signing key is configured for the application.
+
+## IDP Initiated Configuration Instructions
+
+1. Open any SSO enabled enterprise app and navigate to the SAML single sign on blade.
+1. Select **Edit** on the **User Attributes & Claims** panel.
![Edit Configuration](./media/reference-app-multi-instancing/userattributesclaimsedit.png) 1. Open the advanced options blade. ![Open Advanced Options](./media/reference-app-multi-instancing/advancedoptionsblade.png)
-1. Configure both options according to your preferences and hit save.
+1. Configure both options according to your preferences and then select **Save**.
![Configure Options](./media/reference-app-multi-instancing/advancedclaimsoptions.png) -- ## Next steps - To explore the claims mapping policy in graph see [Claims mapping policy](/graph/api/resources/claimsMappingPolicy?view=graph-rest-1.0&preserve-view=true)
active-directory Reference Claims Mapping Policy Type https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/reference-claims-mapping-policy-type.md
Previously updated : 09/16/2022 Last updated : 01/06/2023 -+ # Claims mapping policy type
active-directory Secure Group Access Control https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/secure-group-access-control.md
description: Learn about how groups are used to securely control access to resou
- Previously updated : 6/16/2022 Last updated : 01/06/2023 --+ # Customer intent: As a developer, I want to learn how to most securely use Azure AD groups to control access to resources.
Azure Active Directory (Azure AD) allows the use of groups to manage access to r
To learn more about the benefits of groups for access control, see [manage access to an application](../manage-apps/what-is-access-management.md).
-While developing an application, authorize access with the [groups claim](/graph/api/resources/application?view=graph-rest-1.0#properties&preserve-view=true). To learn more, see how to [configure group claims for applications with Azure AD](../hybrid/how-to-connect-fed-group-claims.md).
+While developing an application, authorize access with the groups claim. To learn more, see how to [configure group claims for applications with Azure AD](../hybrid/how-to-connect-fed-group-claims.md).
Today, many applications select a subset of groups with the `securityEnabled` flag set to `true` to avoid scale challenges, that is, to reduce the number of groups returned in the token. Setting the `securityEnabled` flag to be true for a group doesn't guarantee that the group is securely managed.
active-directory Secure Least Privileged Access https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/secure-least-privileged-access.md
description: Learn how the principle of least privilege can help increase the se
- Previously updated : 06/16/2022 Last updated : 01/06/2023 --+ # Customer intent: As a developer, I want to learn about the principle of least privilege and the features of the Microsoft identity platform that I can use to make sure my application and its users are restricted to actions and have access to only the data they need perform their tasks.
active-directory Security Best Practices For App Registration https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/security-best-practices-for-app-registration.md
description: Learn about the best practices and general guidance for security re
- Previously updated : 06/17/2022 Last updated : 01/06/2023 -+ # Security best practices for application properties in Azure Active Directory
Scenarios that required **implicit flow** can now use **Auth code flow** to redu
Consider the following guidance related to implicit flow: -- Understand if [implicit flow is required](./v2-oauth2-implicit-grant-flow.md#suitable-scenarios-for-the-oauth2-implicit-grant). Don't use implicit flow unless [explicitly required](./v2-oauth2-implicit-grant-flow.md#suitable-scenarios-for-the-oauth2-implicit-grant).
+- Understand if [implicit flow is required](./v2-oauth2-implicit-grant-flow.md#suitable-scenarios-for-the-oauth2-implicit-grant). Don't use implicit flow unless explicitly required.
- If the application was configured to receive access tokens using implicit flow, but doesn't actively use them, turn off the setting to protect from misuse. - Use separate applications for valid implicit flow scenarios.
active-directory Security Tokens https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/security-tokens.md
description: Learn about the basics of security tokens in the Microsoft identity
- Previously updated : 11/1/2022 Last updated : 01/06/2023 - + #Customer intent: As an application developer, I want to understand the basic concepts of security tokens in the Microsoft identity platform.
active-directory Tutorial Blazor Server https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/tutorial-blazor-server.md
Finally, because the app calls a protected API (in this case Microsoft Graph), i
Run the following command to download the templates for `Microsoft.Identity.Web`, which we'll make use of in this tutorial. ```dotnetcli
-dotnet new install Microsoft.Identity.Web.ProjectTemplates
+dotnet new --install Microsoft.Identity.Web.ProjectTemplates
``` Then, run the following command to create the application. Replace the placeholders in the command with the proper information from your app's overview page and execute the command in a command shell. The output location specified with the `-o|--output` option creates a project folder if it doesn't exist and becomes part of the app's name.
active-directory V2 Oauth2 Auth Code Flow https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/v2-oauth2-auth-code-flow.md
Title: Microsoft identity platform and OAuth 2.0 authorization code flow
description: Protocol reference for the Microsoft identity platform's implementation of the OAuth 2.0 authorization code grant - Previously updated : 07/29/2022 Last updated : 01/05/2023
active-directory Whats New Docs https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/whats-new-docs.md
Previously updated : 12/01/2022 Last updated : 01/05/2023
Welcome to what's new in the Microsoft identity platform documentation. This article lists new docs that have been added and those that have had significant updates in the last three months.
+## December 2022
+
+### New articles
+
+- [Block workload identity federation on managed identities using a policy](workload-identity-federation-block-using-azure-policy.md)
+- [Troubleshooting the configured permissions limits](troubleshoot-required-resource-access-limits.md)
+
+### Updated articles
+
+- [Quickstart: Protect an ASP.NET Core web API with the Microsoft identity platform](quickstart-v2-aspnet-core-web-api.md)
+- [Quickstart: Get a token and call the Microsoft Graph API by using a console app's identity](quickstart-v2-netcore-daemon.md)
+- [Tutorial: Sign in users and call a protected API from a Blazor WebAssembly app](tutorial-blazor-webassembly.md)
+- [A web API that calls web APIs: Code configuration](scenario-web-api-call-api-app-configuration.md)
+- [Web app that signs in users: Code configuration](scenario-web-app-sign-user-app-configuration.md)
+- [Web app that signs in users: App registration](scenario-web-app-sign-user-app-registration.md)
+- [Microsoft identity platform docs: What's new](whats-new-docs.md)
+- [Tutorial: Create a Blazor Server app that uses the Microsoft identity platform for authentication](tutorial-blazor-server.md)
## November 2022 ### New articles
Welcome to what's new in the Microsoft identity platform documentation. This art
- [Quickstart: Register an application with the Microsoft identity platform](quickstart-register-app.md) - [Tutorial: Sign in users and call the Microsoft Graph API from a JavaScript single-page application](tutorial-v2-javascript-spa.md) - [Tutorial: Sign in users and call the Microsoft Graph API from a React single-page app (SPA) using auth code flow](tutorial-v2-react.md)-
-## September 2022
-
-### New articles
--- [Configure a user-assigned managed identity to trust an external identity provider (preview)](workload-identity-federation-create-trust-user-assigned-managed-identity.md)-- [Important considerations and restrictions for federated identity credentials](workload-identity-federation-considerations.md)-
-### Updated articles
--- [How to use Continuous Access Evaluation enabled APIs in your applications](app-resilience-continuous-access-evaluation.md)-- [Run automated integration tests](test-automate-integration-testing.md)-- [Tutorial: Sign in users and call the Microsoft Graph API from a JavaScript single-page application (SPA)](tutorial-v2-javascript-spa.md)
active-directory Workload Identity Federation Create Trust Gcp https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/workload-identity-federation-create-trust-gcp.md
Title: Access Azure resources from Google Cloud without credentials description: Access Azure AD protected resources from a service running in Google Cloud without using secrets or certificates. Use workload identity federation to set up a trust relationship between an app in Azure AD and an identity in Google Cloud. The workload running in Google Cloud can get an access token from Microsoft identity platform and access Azure AD protected resources. -+ Previously updated : 08/07/2022- Last updated : 01/06/2023+ #Customer intent: As an application developer, I want to create a trust relationship with a Google Cloud identity so my service in Google Cloud can access Azure AD protected resources without managing secrets.
class ClientAssertionCredential implements TokenCredential {
// Get the ID token from Google. return getGoogleIDToken() // calling this directly just for clarity,
- // this should be a callback
- // pass this as a client assertion to the confidential client app
- .then((clientAssertion:any)=> {
- var msalApp: any;
- msalApp = new msal.ConfidentialClientApplication({
- auth: {
- clientId: this.clientID,
- authority: this.aadAuthority + this.tenantID,
- clientAssertion: clientAssertion,
- }
+
+ let aadAudience = "api://AzureADTokenExchange"
+ const jwt = axios({
+ url: "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?audience="
+ + aadAudience,
+ method: "GET",
+ headers: {
+ "Metadata-Flavor": "Google"
+ }}).then(response => {
+ console.log("AXIOS RESPONSE");
+ return response.data;
+ });
+ return jwt;
+ .then(function(aadToken) {
+ // return in form expected by TokenCredential.getToken
+ let returnToken = {
+ token: aadToken.accessToken,
+ expiresOnTimestamp: aadToken.expiresOn.getTime(),
+ };
+ return (returnToken);
+ })
+ .catch(function(error) {
+ // error stuff
});
- return msalApp.acquireTokenByClientCredential({ scopes })
- })
- .then(function(aadToken) {
- // return in form expected by TokenCredential.getToken
- let returnToken = {
- token: aadToken.accessToken,
- expiresOnTimestamp: aadToken.expiresOn.getTime(),
- };
- return (returnToken);
- })
- .catch(function(error) {
- // error stuff
- });
+ }
}
-}
export default ClientAssertionCredential; ```
active-directory Workload Identity Federation https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/workload-identity-federation.md
The workflow for exchanging an external token for an access token is the same, h
1. When the checks are satisfied, Microsoft identity platform issues an access token to the external workload. 1. The external workload accesses Azure AD protected resources using the access token from Microsoft identity platform. A GitHub Actions workflow, for example, uses the access token to publish a web app to Azure App Service.
-The Microsoft identity platform stores only the first 25 signing keys when they're downloaded from the external IdP's OIDC endpoint. If the external IdP exposes more than 25 signing keys, you may experience errors when using Workload Identity Federation.
+The Microsoft identity platform stores only the first 100 signing keys when they're downloaded from the external IdP's OIDC endpoint. If the external IdP exposes more than 100 signing keys, you may experience errors when using Workload Identity Federation.
## Next steps Learn more about how workload identity federation works:
Learn more about how workload identity federation works:
- How to create, delete, get, or update [federated identity credentials](workload-identity-federation-create-trust.md) on an app registration. - How to create, delete, get, or update [federated identity credentials](workload-identity-federation-create-trust-user-assigned-managed-identity.md) on a user-assigned managed identity. - Read the [GitHub Actions documentation](https://docs.github.com/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-azure) to learn more about configuring your GitHub Actions workflow to get an access token from Microsoft identity provider and access Azure resources.-- For information about the required format of JWTs created by external identity providers, read about the [assertion format](active-directory-certificate-credentials.md#assertion-format).
+- For information about the required format of JWTs created by external identity providers, read about the [assertion format](active-directory-certificate-credentials.md#assertion-format).
active-directory Zero Trust For Developers https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/zero-trust-for-developers.md
description: Learn how using Zero Trust principles can help increase the securit
- Previously updated : 06/16/2022 Last updated : 01/06/2023 -+ # Customer intent: As a developer, I want to learn about the Zero Trust principles and the features of the Microsoft identity platform that I can use to build applications that are Zero Trust-ready.
active-directory Howto Vm Sign In Azure Ad Windows https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/devices/howto-vm-sign-in-azure-ad-windows.md
Previously updated : 06/16/2022 Last updated : 01/05/2023
There are many security benefits of using Azure AD-based authentication to log i
- When users join or leave your team, you can update the Azure RBAC policy for the VM to grant access as appropriate. - When employees leave your organization and their user accounts are disabled or removed from Azure AD, they no longer have access to your resources. - Configure Conditional Access policies to require multifactor authentication (MFA) and other signals, such as user sign-in risk, before you can RDP into Windows VMs. -- Use Azure deploy and audit policies to require Azure AD login for Windows VMs and to flag the use of unapproved local accounts on the VMs.
+- Use Azure Policy to deploy and audit policies to require Azure AD login for Windows VMs and to flag the use of unapproved local accounts on the VMs.
- Use Intune to automate and scale Azure AD join with mobile device management (MDM) auto-enrollment of Azure Windows VMs that are part of your virtual desktop infrastructure (VDI) deployments. MDM auto-enrollment requires Azure AD Premium P1 licenses. Windows Server VMs don't support MDM enrollment.
Set-MsolUser -UserPrincipalName username@contoso.com -StrongAuthenticationRequir
If you haven't deployed Windows Hello for Business and if that isn't an option for now, you can configure a Conditional Access policy that excludes the Azure Windows VM Sign-In app from the list of cloud apps that require MFA. To learn more about Windows Hello for Business, see [Windows Hello for Business overview](/windows/security/identity-protection/hello-for-business/hello-identity-verification). > [!NOTE]
-> Windows Hello for Business PIN authentication with RDP has been supported for several versions of Windows 10. Support for biometric authentication with RDP was added in Windows 10 version 1809. Using Windows Hello for Business authentication during RDP is available only for deployments that use a certificate trust model. It's currently not available for a key trust model.
+> Windows Hello for Business PIN authentication with RDP has been supported for several versions of Windows 10. Support for biometric authentication with RDP was added in Windows 10 version 1809. Using Windows Hello for Business authentication during RDP is available for deployments that use a certificate trust model or key trust model.
Share your feedback about this feature or report problems with using it on the [Azure AD feedback forum](https://feedback.azure.com/d365community/forum/22920db1-ad25-ec11-b6e6-000d3a4f0789).
active-directory Groups Self Service Management https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/enterprise-users/groups-self-service-management.md
Previously updated : 08/01/2022 Last updated : 01/09/2023
# Set up self-service group management in Azure Active Directory
-You can enable users to create and manage their own security groups or Microsoft 365 groups in Azure Active Directory (Azure AD), part of Microsoft Entra. The owner of the group can approve or deny membership requests, and can delegate control of group membership. Self-service group management features are not available for mail-enabled security groups or distribution lists.
+You can enable users to create and manage their own security groups or Microsoft 365 groups in Azure Active Directory (Azure AD), part of Microsoft Entra. The owner of the group can approve or deny membership requests, and can delegate control of group membership. Self-service group management features are not available for [mail-enabled security groups or distribution lists](../fundamentals/concept-learn-about-groups.md).
-## Self-service group membership defaults
+## Self-service group membership
-When security groups are created in the Azure portal or using Azure AD PowerShell, only the group's owners can update membership. Security groups created by self-service in the [Access panel](https://account.activedirectory.windowsazure.com/r#/joinGroups) and all Microsoft 365 groups are available to join for all users, whether owner-approved or auto-approved. In the Access panel, you can change membership options when you create the group.
+You can allow users to create security groups, which are used to manage access to shared resources. Security groups can be created by users in Azure portals, using Azure AD PowerShell, or from the [MyApps Groups Access panel](https://account.activedirectory.windowsazure.com/r#/groups). Only the group's owners can update membership, but you can provide group owners the ability to approve or deny membership requests from the MyApp Groups Access panel. Security groups created by self-service through the MyApps Groups Access panel are available to join for all users, whether owner-approved or auto-approved. In the MyApps Groups Access panel, you can change membership options when you create the group.
+
+Microsoft 365 groups, which provide collaboration opportunities for your users, can be created in any of the Microsoft 365 applications, such as SharePoint, Microsoft Teams, and Planner. Microsoft 365 groups can also be created in Azure portals, using Azure AD PowerShell, or from the MyApp Groups Access panel. For more information on the difference between security groups and Microsoft 365 groups, see [Learn about groups](../fundamentals/concept-learn-about-groups.md#what-to-know-before-creating-a-group)
Groups created in | Security group default behavior | Microsoft 365 group default behavior | - |
-[Azure AD PowerShell](../enterprise-users/groups-settings-cmdlets.md) | Only owners can add members<br>Visible but not available to join in Access panel | Open to join for all users
-[Azure portal](https://portal.azure.com) | Only owners can add members<br>Visible but not available to join in Access panel<br>Owner is not assigned automatically at group creation | Open to join for all users
-[Access panel](https://account.activedirectory.windowsazure.com/r#/joinGroups) | Open to join for all users<br>Membership options can be changed when the group is created | Open to join for all users<br>Membership options can be changed when the group is created
+[Azure AD PowerShell](../enterprise-users/groups-settings-cmdlets.md) | Only owners can add members<br>Visible but not available to join in MyApp Groups Access panel | Open to join for all users
+[Azure portal](https://portal.azure.com) | Only owners can add members<br>Visible but not available to join in MyApp Groups Access panel<br>Owner is not assigned automatically at group creation | Open to join for all users
+[MyApps Groups Access panel](https://account.activedirectory.windowsazure.com/r#/joinGroups) | Open to join for all users<br>Membership options can be changed when the group is created | Open to join for all users<br>Membership options can be changed when the group is created
## Self-service group management scenarios * **Delegated group management**
- An example is an administrator who is managing access to a SaaS application that the company is using. Managing these access rights is becoming cumbersome, so this administrator asks the business owner to create a new group. The administrator assigns access for the application to the new group, and adds to the group all people already accessing the application. The business owner then can add more users, and those users are automatically provisioned to the application. The business owner doesn't need to wait for the administrator to manage access for users. If the administrator grants the same permission to a manager in a different business group, then that person can also manage access for their own group members. Neither the business owner nor the manager can view or manage each other's group memberships. The administrator can still see all users who have access to the application and block access rights if needed.
+ An example is an administrator who is managing access to a Software as a Service (SaaS) application that the company is using. Managing these access rights is becoming cumbersome, so this administrator asks the business owner to create a new group. The administrator assigns access for the application to the new group, and adds to the group all people already accessing the application. The business owner then can add more users, and those users are automatically provisioned to the application. The business owner doesn't need to wait for the administrator to manage access for users. If the administrator grants the same permission to a manager in a different business group, that person can also manage access for their own group members. Neither the business owner nor the manager can view or manage each other's group memberships. The administrator can still see all users who have access to the application and block access rights if needed.
* **Self-service group management**
- An example of this scenario is two users who both have SharePoint Online sites that they set up independently. They want to give each other's teams access to their sites. To accomplish this, they can create one group in Azure AD, and in SharePoint Online each of them selects that group to provide access to their sites. When someone wants access, they request it from the Access Panel, and after approval they get access to both SharePoint Online sites automatically. Later, one of them decides that all people accessing the site should also get access to a particular SaaS application. The administrator of the SaaS application can add access rights for the application to the SharePoint Online site. From then on, any requests that get approved gives access to the two SharePoint Online sites and also to this SaaS application.
+ An example of this scenario is two users who both have SharePoint Online sites that they set up independently. They want to give each other's teams access to their sites. To accomplish this, they can create one group in Azure AD, and in SharePoint Online each of them selects that group to provide access to their sites. When someone wants access, they request it from the MyApp Groups Access Panel, and after approval they get access to both SharePoint Online sites automatically. Later, one of them decides that all people accessing the site should also get access to a particular SaaS application. The administrator of the SaaS application can add access rights for the application to the SharePoint Online site. From then on, any requests that get approved give access to the two SharePoint Online sites and also to this SaaS application.
## Make a group available for user self-service
You can also use **Owners who can assign members as group owners in the Azure po
When users can create groups, all users in your organization are allowed to create new groups and then can, as the default owner, add members to these groups. You can't specify individuals who can create their own groups. You can specify individuals only for making another group member a group owner. > [!NOTE]
-> An Azure Active Directory Premium (P1 or P2) license is required for users to request to join a security group or Microsoft 365 group and for owners to approve or deny membership requests. Without an Azure Active Directory Premium license, users can still manage their groups in the Access Panel, but they can't create a group that requires owner approval in the Access Panel, and they can't request to join a group.
+> An Azure Active Directory Premium (P1 or P2) license is required for users to request to join a security group or Microsoft 365 group and for owners to approve or deny membership requests. Without an Azure Active Directory Premium license, users can still manage their groups in the MyApp Groups Access panel, but they can't create a group that requires owner approval and they can't request to join a group.
## Group settings
-The group settings enable to control who can create security and Microsoft 365 groups.
+The group settings enable you to control who can create security and Microsoft 365 groups.
![Azure Active Directory security groups setting change.](./media/groups-self-service-management/security-groups-setting.png)
active-directory Licensing Group Advanced https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/enterprise-users/licensing-group-advanced.md
Previously updated : 06/24/2022 Last updated : 01/09/2023
Use the following information and examples to gain a more advanced understanding
## Usage location
-Some Microsoft services are not available in all locations. Before a license can be assigned to a user, the administrator should specify the **Usage location** property on the user. In [the Azure portal](https://portal.azure.com), you can specify usage location in **User** &gt; **Profile** &gt; **Settings**.
+Some Microsoft services aren't available in all locations. For group license assignment, any users without a usage location specified inherit the location of the directory. If you have users in multiple locations, make sure to reflect that correctly in your user resources before adding users to groups with licenses. Before a license can be assigned to a user, the administrator should specify the **Usage location** property on the user.
-For group license assignment, any users without a usage location specified inherit the location of the directory. If you have users in multiple locations, make sure to reflect that correctly in your user resources before adding users to groups with licenses.
+1. Sign in to the [Azure portal](https://portal.azure.com) in the **User Administrator** role.
+1. Go to **Azure AD** > **Users** and select a user.
+1. Select **Edit properties**.
+1. Select the **Settings** tab and enter a location for the user.
+1. Select the **Save** button.
> [!NOTE]
-> Group license assignment will never modify an existing usage location value on a user. We recommend that you always set usage location as part of your user creation flow in Azure AD (for example, via AAD Connect configuration) - that will ensure the result of license assignment is always correct, and users do not receive services in locations that are not allowed.
+> Group license assignment will never modify an existing usage location value on a user. We recommend that you always set usage location as part of your user creation flow in Azure AD (for example, via [Azure AD Connect](../hybrid/whatis-azure-ad-connect.md) configuration). Following such a process ensures the result of license assignment is always correct, and users do not receive services in locations that are not allowed.
## Use group-based licensing with dynamic groups
-You can use group-based licensing with any security group, which means it can be combined with Azure AD dynamic groups. Dynamic groups run rules against user resource attributes to automatically add and remove users from groups.
+You can use group-based licensing with any security group, including dynamic groups. Dynamic groups run rules against user resource attributes to automatically add and remove members. Attributes can be department, job title, work location, or other custom attribute. Each group is assigned the licenses that you want members to receive. If an attribute changes, the member leaves the group, and the licenses are removed.
-For example, you can create a dynamic group for some set of products you want to assign to users. Each group is populated by a rule adding users by their attributes, and each group is assigned the licenses that you want them to receive. You can assign the attribute on-premises and sync it with Azure AD, or you can manage the attribute directly in the cloud.
-
-Licenses are assigned to the user shortly after they are added to the group. When the attribute is changed, the user leaves the groups and the licenses are removed.
-
-### Example
-
-Consider the example of an on-premises identity management solution that decides which users should have access to Microsoft web services. It uses **extensionAttribute1** to store a string value representing the licenses the user should have. Azure AD Connect syncs it with Azure AD.
-
-Users might need one license but not another, or might need both. Here's an example, in which you are distributing Office 365 Enterprise E5 and Enterprise Mobility + Security (EMS) licenses to users in groups:
-
-#### Office 365 Enterprise E5: base services
-
-![Screenshot of Office 365 Enterprise E5 base services](./media/licensing-group-advanced/o365-e5-base-services.png)
-
-#### Enterprise Mobility + Security: licensed users
-
-![Screenshot of Enterprise Mobility + Security licensed users](./media/licensing-group-advanced/o365-e5-licensed-users.png)
-
-For this example, modify one user and set their extensionAttribute1 to the value of `EMS;E5_baseservices;` if you want the user to have both licenses. You can make this modification on-premises. After the change syncs with the cloud, the user is automatically added to both groups, and licenses are assigned.
-
-![Screenshot showing how to set the user's extensionAttribute1](./media/licensing-group-advanced/user-set-extensionAttribute1.png)
+You can assign the attribute on-premises and sync it with Azure AD, or you can manage the attribute directly in the cloud.
> [!WARNING] > Use caution when modifying an existing groupΓÇÖs membership rule. When a rule is changed, the membership of the group will be re-evaluated and users who no longer match the new rule will be removed (users who still match the new rule will not be affected during this process). Those users will have their licenses removed during the process which may result in loss of service, or in some cases, loss of data.
For this example, modify one user and set their extensionAttribute1 to the value
A user can be a member of multiple groups with licenses. Here are some things to consider: -- Multiple licenses for the same product can overlap, and they result in all enabled services being applied to the user. An example could be that *E3 base services* contains the foundation services to deploy first, to all users, and *E3 extended services* contains additional services (Sway and Planner) to deploy only to some users. You can add the user to both groups. As a result, the user has 7 of the 12 services in the product enabled, while using only one license for this product.
+- Multiple licenses for the same product can overlap, and they result in all enabled services being applied to the user. An example could be that *M365-P1* contains the foundational services to deploy to all users, and *M365-P2* contains the P2 services to deploy only to some users. You can add a user to one or both groups and only use one license for the product.
-- Selecting the *E3* license shows more details, including information about which services are enabled for the user by by the group license assignment.
+- Select a license to view more details, including information about which services are enabled for the user by the group license assignment.
## Direct licenses coexist with group licenses
-When a user inherits a license from a group, you can't directly remove or modify that license assignment in the user's properties. You can change the license assignment only in the group and the changes are then propagated to all users. If you need to assign any additional features to a user that has their license from a group license assignment you must create another group to assign the additional features to the user.
-
-Directly assigned licenses can be removed, and donΓÇÖt affect a user's inherited licenses. Consider the user who inherits an Office 365 Enterprise E3 license from a group.
-
-Initially, the user inherits the license only from the *E3 basic services* group, which enables four service plans.
+When a user inherits a license from a group, you can't directly remove or modify that license in the user's properties. You can change the license assignment only in the group and the changes are then propagated to all group members. If you need to assign other features to a user that has their license from a group license assignment, you must create another group to assign the other features to the user.
-1. Select **Assign** to directly assign an E3 license to the user. For example, if you want to disable all service plans except Yammer Enterprise.
+When you use group-based licensing, consider the following scenarios:
- As a result, the user still uses only one license of the E3 product. But the direct assignment enables the Yammer Enterprise service for that user only. You can see which services are enabled by the group membership versus the direct assignment.
+- Group members inherit licenses assigned to the group.
+- License options for group-based licenses must be changed at the group level.
+- If different license options need to be assigned to a user, create a new group, assign a license to the group, then add the user to that group.
+- Users still use only one license of a product if different license options for that product are used in the different group-based licenses.
-1. When you use direct assignment, the following operations are allowed:
+When you use direct assignment, the following operations are allowed:
- - Yammer Enterprise can be turned off for a individual user. Because the service is assigned directly to the user, it can be changed.
- - Additional services can be enabled as well, as part of the directly assigned license.
- - The **Remove** button can be used to remove the direct license from the user. You can see that the user then has the inherited group license and only the original services remain enabled.
+- Licenses not already assigned through group-based licensing can be changed for an individual user.
+- Other services can be enabled, as part of a directly assigned license.
+- Directly assigned licenses can be removed and donΓÇÖt affect a user's inherited licenses.
## Managing new services added to products
-When Microsoft adds a new service to a product license plan, it is enabled by default in all groups to which you have assigned the product license. Users in your organization who are subscribed to notifications about product changes will receive emails ahead of time notifying them about the upcoming service additions.
+When Microsoft adds a new service to a product license plan, it's enabled by default in all groups to which you've assigned the product license. Users in your organization who are subscribed to notifications about product changes will receive emails ahead of time notifying them about the upcoming service additions.
As an administrator, you can review all groups affected by the change and take action, such as disabling the new service in each group. For example, if you created groups targeting only specific services for deployment, you can revisit those groups and make sure that any newly added services are disabled.
-Here is an example of what this process may look like:
+Here's an example of what this process may look like:
-1. Originally, you assigned the *Office 365 Enterprise E5* product to several groups. One of those groups, called *O365 E5 - Exchange only* was designed to enable only the *Exchange Online (Plan 2)* service for its members.
+1. Originally, you assigned the *Microsoft 365 E5* product to several groups. One of those groups, called *Microsoft 365 E5 - Exchange only* was designed to enable only the *Exchange Online (Plan 2)* service for its members.
-2. You received a notification from Microsoft that the E5 product will be extended with a new service - *Microsoft Stream*. When the service becomes available in your organization, you can do the following:
+2. You received a notification from Microsoft that the E5 product will be extended with a new service - *Microsoft Stream*. When the service becomes available in your organization, you can complete the following steps:
-3. Go to the [**Azure Active Directory > Licenses > All products**](https://portal.azure.com/#blade/Microsoft_AAD_IAM/LicensesMenuBlade/Products) blade and select *Office 365 Enterprise E5*, then select **Licensed Groups** to view a list of all groups with that product.
+3. Go to [**Azure Active Directory > Licenses > All products**](https://portal.azure.com/#blade/Microsoft_AAD_IAM/LicensesMenuBlade/Products) and select *Microsoft 365 Enterprise E5*, then select **Licensed Groups** to view a list of all groups with that product.
-4. Click on the group you want to review (in this case, *O365 E5 - Exchange only*). This will open the **Licenses** tab. Clicking on the E5 license will open a blade listing all enabled services.
+4. Select the group you want to review (in this case, *Microsoft 365 E5 - Exchange only*). The **Licenses** tab opens. Select the E5 license to view all enabled services.
> [!NOTE] > The *Microsoft Stream* service has been automatically added and enabled in this group, in addition to the *Exchange Online* service: ![Screenshot of new service added to a group license](./media/licensing-group-advanced/manage-new-services.png)
-5. If you want to disable the new service in this group, click the **On/Off** toggle next to the service and click the **Save** button to confirm the change. Azure AD will now process all users in the group to apply the change; any new users added to the group will not have the *Microsoft Stream* service enabled.
+5. If you want to disable the new service in this group, select the On/Off toggle next to the service, and select the **Save** button to confirm the change. Azure AD will now process all users in the group to apply the change; any new users added to the group won't have the *Microsoft Stream* service enabled.
> [!NOTE] > Users may still have the service enabled through some other license assignment (another group they are members of or a direct license assignment).
You can use a PowerShell script to check if users have a license assigned direct
![Screenshot of the Get-Msolaccountsku cmdlet](./medilet.png)
-3. Use the *AccountSkuId* value for the license you are interested in with [this PowerShell script](licensing-ps-examples.md#check-if-user-license-is-assigned-directly-or-inherited-from-a-group). This will produce a list of users who have this license with the information about how the license is assigned.
+3. Use the *AccountSkuId* value for the license you're interested in with [this PowerShell script](licensing-ps-examples.md#check-if-user-license-is-assigned-directly-or-inherited-from-a-group). A list populates the users who have this license and information about how the license is assigned.
## Use Audit logs to monitor group-based licensing activity
You can use [Azure AD audit logs](../reports-monitoring/concept-audit-logs.md) t
- when the system started processing a group license change, and when it finished - what license changes were made to a user as a result of a group license assignment.
->[!NOTE]
-> Audit logs are available on most blades in the Azure Active Directory section of the portal. Depending on where you access them, filters may be pre-applied to only show activity relevant to the context of the blade. If you are not seeing the results you expect, examine [the filtering options](../reports-monitoring/concept-audit-logs.md#filtering-audit-logs) or access the unfiltered audit logs under [**Azure Active Directory > Activity > Audit logs**](https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/Audit).
+Audit logs related to group-based licensing can be accessed from the Audit logs in the Groups or Licensing areas of Azure AD or use the following filter combinations from the main Audit logs:
-### Find out who modified a group license
+- **Service**: Core Directory
+- **Category**: GroupManagement or UserManagement
-1. Set the **Activity** filter to *Set group license* and click **Apply**.
-2. The results include all cases of licenses being set or modified on groups.
- >[!TIP]
- > You can also type the name of the group in the *Target* filter to scope the results.
+![Screenshot of the Azure AD audit logs with Core Directory and GroupManagement filter options highlighted.](media/licensing-group-advanced/audit-logs-group-licensing-filters.png)
-3. Select an item in the list to see the details of what has changed. Under *Modified Properties* both old and new values for the license assignment are listed.
+### Find out who modified a license
-Here is an example of recent group license changes, with details:
+1. To see the logs for group license changes, use the following Audit log filter options:
+ - **Service**: Core Directory
+ - **Category**: GroupManagement
+ - **Activity**: Set group license
+1. Select a row in the resulting table to view the details.
+1. Select the **Modified Properties** tab see the old and new values for the license agreement.
-![Screenshot that shows the "Audit logs" page with a list item selected and the "Activity Details Audit log" pane open.](./media/licensing-group-advanced/audit-group-license-change.png)
+The following example shows the filter settings listed above, plus the *Target* filter set to all groups that start with "EMS."
-### Find out when group changes started and finished processing
+![Screenshot of the Azure AD audit logs including a Target filter.](media/licensing-group-advanced/audit-log-group-licensing-target-filter.png)
+
+To see license changes for a specific user, use the following filters:
+- **Service**: Core Directory
+- **Category**: UserManagement
+- **Activity**: Change user license
-When a license changes on a group, Azure AD will start applying the changes to all users.
+### Find out when group changes started and finished processing
-1. To see when groups started processing, set the **Activity** filter to *Start applying group based license to users*. Note that the actor for the operation is *Microsoft Azure AD Group-Based Licensing* - a system account that is used to execute all group license changes.
- >[!TIP]
- > Click an item in the list to see the *Modified Properties* field - it shows the license changes that were picked up for processing. This is useful if you made multiple changes to a group and you are not sure which one was processed.
+When a license changes on a group, Azure AD will start applying the changes to all users, but the changes could take time to process.
-2. Similarly, to see when groups finished processing, use the filter value *Finish applying group based license to users*.
- > [!TIP]
- > In this case, the *Modified Properties* field contains a summary of the results - this is useful to quickly check if processing resulted in any errors. Sample output:
- > ```
- > Modified Properties
- > ...
- > Name : Result
- > Old Value : []
- > New Value : [Users successfully assigned licenses: 6, Users for whom license assignment failed: 0.];
- > ```
+1. To see when groups started processing, use the following filters:
+ - **Service**: Core Directory
+ - **Category**: GroupManagement
+ - **Activity**: Start applying group based license to users
+1. Select a row in the resulting table to view the details.
+1. Select the **Modified Properties** tab see the license changes that were picked up for processing.
+ - Use these details if you're making multiple changes to a group and aren't sure which license processed.
+ - The actor for the operation is *Microsoft Azure AD Group-Based Licensing*, which is a system account that is used to execute all group license changes.
-3. To see the complete log for how a group was processed, including all user changes, set the following filters:
- - **Initiated By (Actor)**: "Microsoft Azure AD Group-Based Licensing"
- - **Date Range** (optional): custom range for when you know a specific group started and finished processing
+To see when groups finished processing, change the **Activity** filter to *Finish applying group based license to users*. In this case, the **Modified Properties** field contains a summary of the results, which is useful to quickly check if processing resulted in any errors. Sample output:
+> ```
+> Modified Properties
+> ...
+> Name : Result
+> Old Value : []
+> New Value : [Users successfully assigned licenses: 6, Users for whom license assignment failed: 0.];
+> ```
-This sample output shows the start of processing, all resulting user changes, and the finish of processing.
+To see the complete log for how a group was processed, including all user changes, add the following filters:
+- **Target**: Group name
+- **Initiated By (Actor)**: Microsoft Azure AD Group-Based Licensing (case-sensitive)
+- **Date Range** (optional): Custom range for when you know a specific group started and finished processing
-![Screenshot group license changes](./media/licensing-group-advanced/audit-group-processing-log.png)
+This sample output shows the start and finish of processing the license change.
->[!TIP]
-> Clicking items related to *Change user license* will show details for license changes applied to each individual user.
+![Screenshot of the Azure AD audit log filters and start and end times of license changes.](./media/licensing-group-advanced/audit-log-license-start-finish.png)
## Deleting a group with an assigned license
-It is not possible to delete a group with an active license assigned. An administrator could delete a group not realizing that it will cause licenses to be removed from users - for this reason we require any licenses to be removed from the group first, before it can be deleted.
+It isn't possible to delete a group with an active license assigned. An administrator could delete a group not realizing that it will cause licenses to be removed from users. For this reason we require any licenses to be removed from the group first, before it can be deleted.
-When trying to delete a group in the Azure portal you may see an error notification like this:
+When trying to delete a group in the Azure portal, you may see an error notification like this:
![Screenshot group deletion failed](./media/licensing-group-advanced/groupdeletionfailed.png) Go to the **Licenses** tab on the group and see if there are any licenses assigned. If yes, remove those licenses and try to delete the group again.
-You may see similar errors when trying to delete the group through PowerShell or Graph API. If you are using a group synced from on-premises, Azure AD Connect may also report errors if it is failing to delete the group in Azure AD. In all such cases, make sure to check if there are any licenses assigned to the group, and remove them first.
+You may see similar errors when trying to delete the group through PowerShell or Graph API. If you're using a group synced from on-premises, Azure AD Connect may also report errors if it's failing to delete the group in Azure AD. In all such cases, make sure to check if there are any licenses assigned to the group, and remove them first.
## Limitations and known issues If you use group-based licensing, it's a good idea to familiarize yourself with the following list of limitations and known issues. -- Group-based licensing currently does not support groups that contain other groups (nested groups). If you apply a license to a nested group, only the immediate first-level user members of the group have the licenses applied.
+- Group-based licensing currently doesn't support groups that contain other groups (nested groups). If you apply a license to a nested group, only the immediate first-level user members of the group have the licenses applied.
- The feature can only be used with security groups, and Microsoft 365 groups that have securityEnabled=TRUE. -- The [Microsoft 365 admin center](https://admin.microsoft.com) does not currently support group-based licensing. If a user inherits a license from a group, this license appears in the Office admin portal as a regular user license. If you try to modify that license or try to remove the license, the portal returns an error message. Inherited group licenses cannot be modified directly on a user.
+- The [Microsoft 365 admin center](https://admin.microsoft.com) doesn't currently support group-based licensing. If a user inherits a license from a group, this license appears in the Office admin portal as a regular user license. If you try to modify that license or try to remove the license, the portal returns an error message. Inherited group licenses can't be modified directly on a user.
-- When licenses are assigned or modified for a large group (for example, 100,000 users), it could impact performance. Specifically, the volume of changes generated by Azure AD automation might negatively impact the performance of your directory synchronization between Azure AD and on-premises systems.
+- When licenses are assigned or modified for a large group (for example, 100,000 users), it could affect performance. Specifically, the volume of changes generated by Azure AD automation might negatively affect the performance of your directory synchronization between Azure AD and on-premises systems.
-- If you are using dynamic groups to manage your userΓÇÖs membership, verify that the user is part of the group, which is necessary for license assignment. If not, [check processing status for the membership rule](groups-create-rule.md) of the dynamic group.
+- If you're using dynamic groups to manage your userΓÇÖs membership, verify that the user is part of the group, which is necessary for license assignment. If not, [check processing status for the membership rule](groups-create-rule.md) of the dynamic group.
-- In certain high load situations, it may take a long time to process license changes for groups or membership changes to groups with existing licenses. If you see your changes take more than 24 hours to process group size of 60K users or less, please [open a support ticket](https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/supportRequest) to allow us to investigate.
+- In certain high load situations, it may take a long time to process license changes for groups or membership changes to groups with existing licenses. If you see your changes take more than 24 hours to process group size of 60 K users or less, please [open a support ticket](https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/supportRequest) to allow us to investigate.
-- License management automation does not automatically react to all types of changes in the environment. For example, you might have run out of licenses, causing some users to be in an error state. To free up the available seat count, you can remove some directly assigned licenses from other users. However, the system does not automatically react to this change and fix users in that error state.
+- License management automation doesn't automatically react to all types of changes in the environment. For example, you might have run out of licenses, causing some users to be in an error state. To free up the available seat count, you can remove some directly assigned licenses from other users. However, the system doesn't automatically react to this change and fix users in that error state.
- As a workaround to these types of limitations, you can go to the **Group** blade in Azure AD, and click **Reprocess**. This command processes all users in that group and resolves the error states, if possible.
+ As a workaround to these types of limitations, you can go to **Azure AD** > **Groups** > select a group > select **Licenses** > select **Reprocess**. This command processes all users in that group and resolves the error states, if possible.
## Next steps
active-directory Add User Without Invite https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/add-user-without-invite.md
-- Title: Add B2B guests without an invitation link or email - Azure AD
-description: You can let a guest user add other guest users to your Azure AD without redeeming an invitation in Azure Active Directory B2B collaboration.
----- Previously updated : 09/15/2022--------
-# Add B2B collaboration guest users without an invitation link or email
-
-You can now invite guest users by sending out a [direct link](redemption-experience.md#redemption-through-a-direct-link) to a shared app. With this method, guest users no longer need to use the invitation email, except in some special cases. A guest user clicks the app link, reviews and accepts the privacy terms, and then seamlessly accesses the app. For more information, see [B2B collaboration invitation redemption](redemption-experience.md).
-
-Before this new method was available, you could invite guest users without requiring the invitation email by adding an inviter (from your organization or from a partner organization) to the [**Guest inviter** directory role](external-collaboration-settings-configure.md#assign-the-guest-inviter-role-to-a-user), and then having the inviter add guest users to the directory, groups, or applications through the UI or through PowerShell. (If using PowerShell, you can suppress the invitation email altogether). For example:
-
-1. A user in the host organization (for example, WoodGrove) invites one user from the partner organization (for example, Sam@litware.com) as Guest.
-2. The administrator in the host organization [sets up policies](external-collaboration-settings-configure.md) that allow Sam to identify and add other users from the partner organization (Litware). (Sam must be added to the **Guest inviter** role.)
-3. Now, Sam can add other users from Litware to the WoodGrove directory, groups, or applications without needing invitations to be redeemed. If Sam has the appropriate enumeration privileges in Litware, it happens automatically.
-
-This original method still works. However, there's a small difference in behavior. If you use PowerShell, you'll notice that an invited guest account now has a **PendingAcceptance** status instead of immediately showing **Accepted**. Although the status is pending, the guest user can still sign in and access the app without clicking an email invitation link. The pending status means that the user has not yet gone through the [consent experience](redemption-experience.md#consent-experience-for-the-guest), where they accept the privacy terms of the inviting organization. The guest user sees this consent screen when they sign in for the first time.
-
-If you invite a user to the directory, the guest user must access the resource tenant-specific Azure portal URL directly (such as https://portal.azure.com/*resourcetenant*.onmicrosoft.com) to view and agree to the privacy terms.
-
-## Next steps
--- [What is Azure AD B2B collaboration?](what-is-b2b.md)-- [B2B collaboration invitation redemption](redemption-experience.md)-- [Delegate invitations for Azure Active Directory B2B collaboration](external-collaboration-settings-configure.md)-- [How do information workers add B2B collaboration users?](add-users-information-worker.md)-
active-directory Customize Invitation Api https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customize-invitation-api.md
Check out the invitation API reference in [https://developer.microsoft.com/graph
- [What is Azure AD B2B collaboration?](what-is-b2b.md) - [Add and invite guest users](add-users-administrator.md) - [The elements of the B2B collaboration invitation email](invitation-email-elements.md)+
active-directory External Collaboration Settings Configure https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/external-collaboration-settings-configure.md
When a B2B user signs into a resource tenant to collaborate, a sign-in log is ge
See the following articles on Azure AD B2B collaboration: - [What is Azure AD B2B collaboration?](what-is-b2b.md)-- [Add B2B collaboration guest users without an invitation](add-user-without-invite.md) - [Adding a B2B collaboration user to a role](./add-users-administrator.md)
active-directory Invitation Email Elements https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/invitation-email-elements.md
# The elements of the B2B collaboration invitation email - Azure Active Directory
-Invitation emails are a critical component to bring partners on board as B2B collaboration users in Azure AD. ItΓÇÖs [not required that you send an email to invite someone using B2B collaboration](add-user-without-invite.md), but it gives the user all the information they need to decide if they accept your invite or not. It also gives them a link they can always refer to in the future when they need to return to your resources.
+Invitation emails are a critical component to bring partners on board as B2B collaboration users in Azure AD. ItΓÇÖs [not required that you send an email to invite someone using B2B collaboration](redemption-experience.md#redemption-through-a-direct-link), but it gives the user all the information they need to decide if they accept your invite or not. It also gives them a link they can always refer to in the future when they need to return to your resources.
![Screenshot showing the B2B invitation email](media/invitation-email-elements/invitation-email.png)
See the following articles on Azure AD B2B collaboration:
- [How do Azure Active Directory admins add B2B collaboration users?](add-users-administrator.md) - [How do information workers add B2B collaboration users?](add-users-information-worker.md) - [B2B collaboration invitation redemption](redemption-experience.md)-- [Add B2B collaboration users without an invitation](add-user-without-invite.md)
active-directory User Properties https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/user-properties.md
Previously updated : 10/12/2022 Last updated : 01/09/2023
Microsoft account | This user is homed in a Microsoft account and authenticates
google.com | This user has a Gmail account and has signed up by using self-service to the other organization. facebook.com | This user has a Facebook account and has signed up by using self-service to the other organization. mail | This user has signed up by using Azure AD Email one-time passcode (OTP).
-phone | This user has an email address that doesn't match a verified Azure AD domain or a SAML/WS-Fed domain, and isn't a Gmail address or Microsoft account.
{issuer URI} | This user is homed in an external organization that doesn't use Azure Active Directory as their identity provider, but instead uses a SAML/WS-Fed-based identity provider. The issuer URI is shown when the Identities field is clicked. ### Directory synced
active-directory Whats New Docs https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/whats-new-docs.md
Welcome to what's new in Azure Active Directory External Identities documentation. This article lists new docs that have been added and those that have had significant updates in the last three months. To learn what's new with the External Identities service, see [What's new in Azure Active Directory](../fundamentals/whats-new.md).
+## December 2022
+
+### Updated articles
+
+- [Azure Active Directory B2B collaboration invitation redemption](redemption-experience.md)
+- [Azure Active Directory B2B collaboration API and customization](customize-invitation-api.md)
+- [Azure Active Directory External Identities: What's new](whats-new-docs.md)
+- [Auditing and reporting a B2B collaboration user](auditing-and-reporting.md)
+ ## November 2022 ### Updated articles
Welcome to what's new in Azure Active Directory External Identities documentatio
- [Add Microsoft account (MSA) as an identity provider for External Identities](microsoft-account.md) - [How users in your organization can invite guest users to an app](add-users-information-worker.md)
-## September 2022
-
-### Updated articles
--- [Self-service sign-up](self-service-sign-up-overview.md)-- [Properties of an Azure Active Directory B2B collaboration user](user-properties.md)-- [Azure Active Directory (Azure AD) identity provider for External Identities](azure-ad-account.md)-- [Add Google as an identity provider for B2B guest users](google-federation.md)-- [Email one-time passcode authentication](one-time-passcode.md)-- [Add B2B collaboration guest users without an invitation link or email](add-user-without-invite.md)-- [Identity Providers for External Identities](identity-providers.md)-- [Tutorial: Use PowerShell to bulk invite Azure AD B2B collaboration users](bulk-invite-powershell.md)-- [B2B collaboration user claims mapping in Azure Active Directory](claims-mapping.md)-- [Azure Active Directory External Identities: What's new](whats-new-docs.md)-- [Azure Active Directory B2B collaboration invitation redemption](redemption-experience.md)-- [Add Azure Active Directory B2B collaboration users in the Azure portal](add-users-administrator.md)-- [Leave an organization as an external user](leave-the-organization.md)-- [Grant B2B users in Azure AD access to your on-premises applications](hybrid-cloud-to-on-premises.md)
active-directory 2 Secure Access Current State https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/fundamentals/2-secure-access-current-state.md
Title: Discover the current state of external collaboration with Azure Active Directory
-description: Learn methods to discover the current state of your collaboration.
+description: Learn methods to discover the current state of your collaboration
Previously updated : 09/02/2022 Last updated : 12/15/2022
# Discover the current state of external collaboration in your organization
-Before discovering the current state of your external collaboration, you should [determine your desired security posture](1-secure-access-posture.md). You'll consider your organizationΓÇÖs needs for centralized vs. delegated control, and any relevant governance, regulatory, and compliance targets.
+Before you learn about the current state of your external collaboration, determine a security posture. Consider centralized vs. delegated control, also governance, regulatory, and compliance targets.
-Individuals in your organization are probably already collaborating with users from other organizations. Collaboration can be through features in productivity applications like Microsoft 365, by emailing, or by otherwise sharing resources with external users. The pillars of your governance plan will form as you discover:
+Learn more: [Determine your security posture for external users](1-secure-access-posture.md)
-* The users who are initiating external collaboration.
-* The external users and organizations you're collaborating with.
-* The access being granted to external users.
+Users in your organization likely collaborate with users from other organizations. Collaboration can occur with productivity applications like Microsoft 365, by email, or sharing resources with external users. The foundation of your governance plan can include:
-## Users initiating external collaboration
-
-The users initiating external collaboration best understand the applications most relevant for external collaboration, and when that access should end. Understanding these users can help you determine who should be delegated permission to inviting external users, create access packages, and complete access reviews.
-
-To find users who are currently collaborating, review the [Microsoft 365 audit log for sharing and access request activities](/microsoft-365/compliance/search-the-audit-log-in-security-and-compliance#sharing-and-access-request-activities). You can also review the [Azure AD audit log for details on who invited B2B](../external-identities/auditing-and-reporting.md) users to your directory.
-
-## Find current collaboration partners
+* Users initiating external collaboration
+* Collaboration with external users and organizations
+* Access granted to external users
-External users may be [Azure AD B2B users](../external-identities/what-is-b2b.md) (preferable) with partner-managed credentials, or external users with locally provisioned credentials. These users are typically (but not always) marked with a UserType of Guest. You can enumerate guest users through the [Microsoft Graph API](/graph/api/user-list?tabs=http), [PowerShell](/graph/api/user-list?tabs=http), or the [Azure portal](../enterprise-users/users-bulk-download.md).
+## Users initiating external collaboration
-There are also tools specifically designed to identify existing Azure AD B2B collaboration such as identifying external Azure AD tenants, and which external users are accessing what applications. These tools include a [PowerShell module](https://github.com/AzureAD/MSIdentityTools/wiki/Get-MSIDCrossTenantAccessActivity) and an [Azure Monitor workbook](../reports-monitoring/workbook-cross-tenant-access-activity.md).
+Users seeking external collaboration know the applications needed for their work, and when access ends. Therefore, determine users with delegated permission to invite external users, create access packages, and complete access reviews.
-### Use email domains and companyName property
+To find collaborating users:
-External organizations can be determined by the domain names of external user email addresses. If consumer identity providers such as Google are supported, this may not be possible. In this case we recommend that you write the companyName attribute to clearly identify the userΓÇÖs external organization.
+* [Microsoft 365, audit log activities](/microsoft-365/compliance/audit-log-activities?view=o365-worldwide&preserve-view=true)
+* [Auditing and reporting a B2B collaboration user](../external-identities/auditing-and-reporting.md)
-### Use allow or blocklists
+## Collaboration with external users and organizations
-Consider whether your organization wants to allow collaboration with only specific organizations. Alternatively, consider if your organization wants to block collaboration with specific organizations. At the tenant level, there is an [allow or blocklist](../external-identities/allow-deny-list.md), which can be used to control overall B2B invitations and redemptions regardless of source (such as Microsoft Teams, Microsoft SharePoint, or the Azure portal).
+External users might be Azure AD B2B users with partner-managed credentials, or external users with locally provisioned credentials. Typically, these users are a UserType of Guest. See, [B2B collaboration overview](../external-identities/what-is-b2b.md).
-If youΓÇÖre using entitlement management, you can also scope access packages to a subset of your partners by using the Specific connected organizations setting as shown below.
+You can enumerate guest users with:
-![Screenshot of allowlisting or blocklisting in creating a new access package.](media/secure-external-access/2-new-access-package.png)
+* [Microsoft Graph API](/graph/api/user-list?tabs=http)
+* [PowerShell](/graph/api/user-list?tabs=http)
+* [Azure portal](../enterprise-users/users-bulk-download.md)
-## Find access being granted to external users
+There are tools to identify Azure AD B2B collaboration, external Azure AD tenants and users accessing applications:
-Once you have an inventory of external users and organizations, you can determine the access granted to these users using the Microsoft Graph API to determine Azure AD [group membership](/graph/api/resources/groups-overview) or [direct application assignment](/graph/api/resources/approleassignment) in Azure AD.
+* [PowerShell module](https://github.com/AzureAD/MSIdentityTools/wiki/Get-MSIDCrossTenantAccessActivity)
+* [Azure Monitor workbook](../reports-monitoring/workbook-cross-tenant-access-activity.md)
-### Enumerate application-specific permissions
+### Email domains and companyName property
-You may also be able to perform application-specific permission enumeration. For example, you can programmatically generate a permission report for SharePoint Online by using [this script](https://gallery.technet.microsoft.com/office/SharePoint-Online-c9ec4f64).
+Determine external organizations with the domain names of external user email addresses. This discovery might not be possible with consumer identity providers such as Google. We recommend you write the companyName attribute to identify external organizations.
-Specifically investigate access to all of your business-sensitive and business-critical apps so that you are fully aware of any external access.
+### Allowlist, blocklist, and entitlement management
-### Detect ad hoc sharing
+For your organization to collaborate with, or block, specific organizations, at the tenant level, there is allowlist or blocklist. Use this feature to control B2B invitations and redemptions regardless of source (such as Microsoft Teams, SharePoint, or the Azure portal). See, [Allow or block invitations to B2B users from specific organizations](../external-identities/allow-deny-list.md).
-If your email and network plans enable it, you can investigate content being shared through email or through unauthorized software as a service (SaaS) apps. [Microsoft 365 Data Loss Protection](/microsoft-365/compliance/data-loss-prevention-policies) helps you identify, prevent, and monitor the accidental sharing of sensitive information across your Microsoft 365 infrastructure. [Microsoft Defender for Cloud Apps](https://www.microsoft.com/microsoft-365/enterprise-mobility-security/cloud-app-security) can help you identify the use of unauthorized SaaS apps in your environment.
+If you use entitlement management, you can confine access packages to a subset of partners with the **Specific connected organizations** option, under New access packages, in Identity Governance.
-## Next steps
+ ![Screenshot of the Specific connected organizations option, under New access packages.](media/secure-external-access/2-new-access-package.png)
-See the following articles on securing external access to resources. We recommend you take the actions in the listed order.
+## External user access
-1. [Determine your security posture for external access](1-secure-access-posture.md)
+After you have an inventory of external users and organizations, determine the access to grant to these users. You can use the Microsoft Graph API to determine Azure AD group membership or application assignment.
-2. [Discover your current state](2-secure-access-current-state.md) (You are here.)
+* [Working with groups in Microsoft Graph](/graph/api/resources/groups-overview?context=graph%2Fcontext&view=graph-rest-1.0&preserve-view=true)
+* [Applications API overview](/graph/applications-concept-overview?view=graph-rest-1.0&preserve-view=true)
-3. [Create a governance plan](3-secure-access-plan.md)
+### Enumerate application permissions
-4. [Use groups for security](4-secure-access-groups.md)
+Investigate access to your sensitive apps for awareness about external access. See, [Grant or revoke API permissions programmatically](/graph/permissions-grant-via-msgraph?view=graph-rest-1.0&tabs=http&pivots=grant-application-permissions&preserve-view=true).
-5. [Transition to Azure AD B2B](5-secure-access-b2b.md)
+### Detect informal sharing
-6. [Secure access with Entitlement Management](6-secure-access-entitlement-managment.md)
+If your email and network plans are enabled, you can investigate content sharing through email or unauthorized software as a service (SaaS) apps.
-7. [Secure access with Conditional Access policies](7-secure-access-conditional-access.md)
+* Identify, prevent, and monitor accidental sharing
+ * [Learn about data loss prevention](/microsoft-365/compliance/dlp-learn-about-dlp?view=o365-worldwide&preserve-view=true )
+* Identify unauthorized apps
+ * [Microsoft Defender for Cloud Apps](/security/business/siem-and-xdr/microsoft-defender-cloud-apps?rtc=1)
-8. [Secure access with Sensitivity labels](8-secure-access-sensitivity-labels.md)
+## Next steps
-9. [Secure access to Microsoft Teams, OneDrive, and SharePoint](9-secure-access-teams-sharepoint.md)
+* [Determine your security posture for external access](1-secure-access-posture.md)
+* [Create a security plan for external access](3-secure-access-plan.md)
+* [Securing external access with groups](4-secure-access-groups.md)
+* [Transition to governed collaboration with Azure Active Directory B2B collaboration](5-secure-access-b2b.md)
+* [Manage external access with entitlement management](6-secure-access-entitlement-managment.md)
+* [Manage external access with Conditional Access policies](7-secure-access-conditional-access.md)
+* [Control access with sensitivity labels](8-secure-access-sensitivity-labels.md)
+* [Secure external access to Microsoft Teams, SharePoint, and OneDrive for Business](9-secure-access-teams-sharepoint.md)
active-directory 3 Secure Access Plan https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/fundamentals/3-secure-access-plan.md
Title: Create a security plan for external access to Azure Active Directory
-description: Plan the security for external access to your organization's resources..
+description: Plan the security for external access to your organization's resources.
Previously updated : 09/13/2022 Last updated : 12/15/2022
# Create a security plan for external access
-Now that you have [determined your desired security posture security posture for external access](1-secure-access-posture.md) and [discovered your current collaboration state](2-secure-access-current-state.md), you can create an external user security and governance plan.
+Before you create an external-access security plan, ensure the following conditions are met.
-This plan should document the following:
+* [Determine your security posture for external access](1-secure-access-posture.md)
+* [Discover the current state of external collaboration in your organization](2-secure-access-current-state.md)
-* The applications and other resources that should be grouped for access.
+For your security plan, document the following information:
-* The appropriate sign-in conditions for external users. These can include device state, sign-in location, client application requirements, and user risk.
+* Applications and resources to be grouped for access
+* Sign-in conditions for external users
+ * Device state, sign-in location, client application requirements, and user risk
+* Policies that determine when to review and remove access
+* User populations to be grouped for a similar experience
-* Business policies on when to review and remove access.
+After you document the information, use Microsoft identity and access management policies, or another identity provider (IdP) to implement the plan.
-* User populations to be grouped and treated similarly.
+## Resources to be grouped for access
-Once these areas are documented, you can use identity and access management policies from Microsoft or any other identity provider (IdP) to implement this plan.
+To group resources for access:
-## Document resources to be grouped for access
+* Microsoft Teams groups files, conversation threads, and other resources. Formulate an external access strategy for Microsoft Teams.
+ * See, [Secure external access to Microsoft Teams, SharePoint, and OneDrive for Business](9-secure-access-teams-sharepoint.md)
+* Use entitlement management access packages to create and delegate management of packages of applications, groups, teams, SharePoint sites, etc.
+ * [Create a new access package in entitlement management](/azure/active-directory/governance/entitlement-management-access-package-create)
+* Apply Conditional Access policies to up to 250 applications, with the same access requirements
+ * [What is Conditional Access?](/azure/active-directory/conditional-access/overview)
+* Use Cross Tenant Access Settings Inbound Access to define access for application groups of external users
+ * [Overview: Cross-tenant access with Azure AD External Identities](/azure/active-directory/external-identities/cross-tenant-access-overview)
-There are multiple ways to group resources for access.
+Document the applications to be grouped. Considerations include:
-* Microsoft Teams groups files, conversation threads, and other resources in one place. You should formulate an external access strategy for Microsoft Teams. See [Secure access to Teams, OneDrive, and SharePoint](9-secure-access-teams-sharepoint.md).
+* **Risk profile** - Assess the risk if a bad actor gains access to an application.
+ * Identify application as high, medium, or low risk. Avoid grouping high-risk with low-risk.
+ * Document applications that can't be shared with external users
+* **Compliance frameworks** - Determine compliance frameworks for apps
+ * Identify access and review requirements
+* **Applications for roles or departments** - Assess applications to be grouped for a role or department access
+* **Collaboration applications** - Identify collaboration applications external users can access, such as Teams and SharePoint
+ * For productivity applications, external users might have licenses, or you might provide access
-* Entitlement Management Access Packages enable you to create and delegate management of packages of Applications, Groups, Teams, SharePoint sites, and other resources to which you can grant access.
+For application and resource group access by external users, document the following information:
-* Conditional Access policies can be applied to up to 250 applications with the same access requirements.
+* Descriptive group name, for example High_Risk_External_Access_Finance
+* Applications and resources in the group
+* Application and resource owners and contact information
+* Access is controlled by IT, or delegated to a business owner
+* Prerequisites for access: background check, training, etc.
+* Compliance requirements to access resources
+* Challenges, for example multi-factor authentication (MFA) for some resources
+* Cadence for reviews, by whom, and where it's documented
-* Cross Tenant Access Settings Inbound Access can define what application groups of external users are allowed to access.
+> [!TIP]
+> Use this type of governance plan for internal access.
-However you will manage access, you must document which applications should be grouped together. Considerations should include:
-
-* **Risk profile**. What is the risk to your business if a bad actor gained access to an application? Consider coding each application as high, medium, or low risk. Be cautious about grouping high-risk applications with low-risk ones.
-
- * Document applications that should never be shared with external users as well.
-
-* **Compliance Frameworks**. What if any compliance frameworks must an application meet? What are the access and review requirements?
-
-* **Applications for specific job roles or departments**. Are there applications that should be grouped because all users in a specific job role or department will need access?
-
-* **Collaboration-focused applications**. What collaboration-focused applications should external users be able to access? Microsoft Teams and SharePoint may need to be accessible. For productivity applications within Office 365, like Word and Excel, will external users bring their own licenses, or will you need to license them and provide access?
-
-For each grouping of applications and resources that you want to make accessible to external users , document the following:
-
-* A descriptive name for the group, for example *High_Risk_External_Access_Finance*.
-
-* Complete list of all applications and resources in the group.
-
-* Application and resource owners and contact information.
-
-* Whether the access is controlled by IT, or delegated to the business owner.
-
-* Any prerequisites, for example completing a background check or a training, for access.
-
-* Any compliance requirements for accessing the resources.
-
-* Any additional challenges, for example requiring multi-factor-authentication for specific resources.
-
-* How often access will be reviewed, by whom, and where it will be documented.
+## Document sign-in conditions for external users
-This type of governance plan can and should also be completed for internal access as well.
+Determine the sign-in requirements for external users who request access. Base requirements on the resource risk profile, and the user's risk assessment during sign-in. Configure sign-in conditions using Conditional Access: a condition and an outcome. For example, you can require MFA.
-## Document sign-in conditions for external users
+Learn more: [What is Conditional Access?](../conditional-access/overview.md)
-As part of your plan you must determine the sign-in requirements for your external users as they access resources. Sign-in requirements are often based on the risk profile of the resources, and the risk assessment of the usersΓÇÖ sign-in.
+**Resource risk-profile sign-in conditions**
-Sign-in conditions are configured in [Azure AD Conditional Access](../conditional-access/overview.md) and are made up of a condition and an outcome. For example, when to require multi-factor authentication
+Consider the following risk-based policies to trigger MFA.
-**Resource risk-based sign-in conditions.**
+* **Low** - MFA for some application sets
+* **Medium** - MFA when other risks are present
+* **High** - External users always use MFA
-| Application Risk Profile| Consider these policies for triggering multi-factor authentication |
-| - |-|
-| Low risk| Require MFA for specific application sets |
-| Med risk| Require MFA when other risks present |
-| High risk| Require MFA always for external users |
+Learn more:
+* [Tutorial: Enforce multi-factor authentication for B2B guest users](../external-identities/b2b-tutorial-require-mfa.md)
+* Trust MFA from external tenants
+ * See, [Configure cross-tenant access settings for B2B collaboration, Modify inbound access settings](../external-identities/cross-tenant-access-settings-b2b-collaboration.md#modify-inbound-access-settings)
-Today, you can [enforce multi-factor authentication for B2B users in your tenant](../external-identities/b2b-tutorial-require-mfa.md). You can also trust the MFA from external tenants to satisfy your MFA requirements using [Cross Tenant Access Settings](../external-identities/cross-tenant-access-settings-b2b-collaboration.md#modify-inbound-access-settings).
+### User and device sign-in conditions
-**User- and device-based sign in conditions**.
+Use the following table to help assess policy to address risk.
-| User or sign-in risk| Consider these policies |
-| - | - |
+| User or sign-in risk| Proposed policy |
+| | |
| Device| Require compliant devices | | Mobile apps| Require approved apps |
-| Identity protection shows high risk| Require user to change password |
-| Network location| Require sign in from a specific IP address range to highly confidential projects |
-
-Today, to use device state as an input to a policy, the device must be either be registered or joined to your tenant or [Cross Tenant Access Settings](../external-identities/cross-tenant-access-settings-b2b-collaboration.md#modify-inbound-access-settings) must be configured to trust the device claims from the home tenant.
+| Identity protection is high risk| Require user to change password |
+| Network location| To access confidential projects, require sign-in from an IP address range |
-[Identity Protection risk-based policies](../conditional-access/howto-conditional-access-policy-risk.md) can be used. However, issues must be mitigated in the userΓÇÖs home tenant.
+To use device state as policy input, the device is registered or joined to your tenant. Configure cross-tenant access settings must be configured to trust the device claims from the home tenant. See, [Modify inbound access settings](../external-identities/cross-tenant-access-settings-b2b-collaboration.md#modify-inbound-access-settings).
-For [network locations](../conditional-access/howto-conditional-access-policy-location.md), you can restrict access to any IP addresses range that you own. You might use this if you only want external partners accessing an application while they are on site at your organization.
+You can use identity-protection risk policies. However, mitigate issue in the user home tenant. See, [Common Conditional Access policy: Sign-in risk-based multifactor authentication](../conditional-access/howto-conditional-access-policy-risk.md).
-[Learn more about conditional access policies](../conditional-access/overview.md).
+For network locations, you can restrict access to IP addresses ranges you own. Use this method if external partners access applications while at your location. See, [Conditional Access: Block access by location](../conditional-access/howto-conditional-access-policy-location.md)
## Document access review policies
-Document your business policies for when you need to review access to resources, and when you need to remove account access for external users. Inputs to these decisions may include:
-
-* Requirements detailed in any compliance frameworks.
+Document policies that dictate when to review resource access, and remove account access for external users. Inputs might include:
+* Compliance frameworks requirements
* Internal business policies and processes- * User behavior
-While your policies will be highly customized to your needs, consider the following:
-
-* **Entitlement Management Access Reviews**. Use the functionality in Entitlement Management to
-
- * [Automatically expire access packages](../governance/entitlement-management-access-package-lifecycle-policy.md), and thus external user access to the included resources.
-
- * Set a [required review frequency](../governance/entitlement-management-access-reviews-create.md) for access reviews.
+Your policies will be customized, however consider the following parameters:
- * If you are using [connected organizations](../governance/entitlement-management-organization.md) to group all users from a single partner, schedule regular reviews with the business owner and the partner representative.
+* **Entitlement management access reviews**:
+ * [Change lifecycle settings for an access package in entitlement management](../governance/entitlement-management-access-package-lifecycle-policy.md)
+ * [Create an access review of an access package in entitlement management](../governance/entitlement-management-access-reviews-create.md)
+ * [Add a connected organization in entitlement management](../governance/entitlement-management-organization.md): group users from a partner and schedule reviews
+* **Microsoft 365 groups**:
+ * [Microsoft 365 group expiration policy](/microsoft-365/solutions/microsoft-365-groups-expiration-policy?view=o365-worldwide&preserve-view=true)
+* **Options**:
+ * If external users don't use access packages or Microsoft 365 groups, determine when accounts become inactive or deleted
+ * Remove sign-in for accounts that don't sign in for 90 days
+ * Regularly assess access for external users
-* **Microsoft 365 Groups**. Set a [group expiration policy](/microsoft-365/solutions/microsoft-365-groups-expiration-policy) for Microsoft 365 Groups to which external users are invited.
+## Access control methods
-* **Other options**. If external users have access outside of Entitlement Management access packages or Microsoft 365 groups, set up business process to review when accounts should be made inactive or deleted. For example:
+Some features, for example entitlement management, are available with an Azure AD Premium 2 (P2) license. Microsoft 365 E5 and Office 365 E5 licenses include Azure AD P2 licenses.
- * Remove sign-in ability for any account not signed in to for 90 days.
-
- * Assess access needs and take action at the end of every project with external users.
-
-## Determine your access control methods
-
-Now that you know what you want to control access to, how those assets should be grouped for common access, and required sign-in and access review policies, you can decide on how to accomplish your plan.
-
-Some functionality, for example [Entitlement Management](../governance/entitlement-management-overview.md), is only available with an Azure AD Premium 2 (P2) licenses. Microsoft 365 E5 and Office 365 E5 licenses include Azure AD P2 licenses.
-
-Other combinations of Microsoft 365, Office 365 and Azure AD also enable some functionality for managing external users. See [Information Protection](/office365/servicedescriptions/microsoft-365-service-descriptions/microsoft-365-tenantlevel-services-licensing-guidance/microsoft-365-security-compliance-licensing-guidance) for more informationΓÇï.
+Other combinations of Microsoft 365, Office 365, and Azure AD have functionality to manage external users. See, [Microsoft 365 guidance for security & compliance](/office365/servicedescriptions/microsoft-365-service-descriptions/microsoft-365-tenantlevel-services-licensing-guidance/microsoft-365-security-compliance-licensing-guidance).
> [!NOTE]
-> Licenses are per user. Therefore, you can have specific users, including administrators and business owners delegated access control, at the Azure AD P2 or Microsoft 365 E5 level without enabling those licenses for all users. Your first 50,000 external users are free. If you do not enable P2 licenses for your other internal users, they will not be able to use entitlement management functionality like Access packages.
+> Licenses are for one user. Therefore users, administrators, and business owners can have delegated access control. This scenario can occur with Azure AD P2 or Microsoft 365 E5, and you don't have to enable licenses for all users. The first 50,000 external users are free. If you don't enable P2 licenses for other internal users, they can't use entitlement management.
+## Govern access with Azure AD P2 and Microsoft 365 or Office 365 E5
-## Govern access with Azure AD P2 and Microsoft / Office 365 E5
-Azure AD P2 and Microsoft 365 E5 have the full suite of security and governance tools.
+Azure AD P2 and Microsoft 365 E5 have all the security and governance tools.
-### Provisioning, signing in, reviewing access, and deprovisioning. Bolded entries are preferred methods
-
-| Feature| Provision external users| Enforce sign-in reqs.| Review access| Deprovision access |
-| - | - | - | - | - |
-| Azure AD B2B Collaboration| Invite via email, OTP, self-service| | **Periodic review per partner**| Remove account<br>Restrict sign in |
-| Entitlement Management| **Add user via assignment or self-service access**ΓÇï| | Access reviews|**Expiration of, or removal from, access package**|
-| Office 365 Groups| | | Review group memberships| Expiration or deletion of group<br> Removal form group |
-| Azure AD security groups| | **Conditional access policies** (Add external users to security groups as necessary)| | |
+### Provision, sign-in, review access, and deprovision access
+Entries in bold are recommended.
+| Feature| Provision external users| Enforce sign-in requirements| Review access| Deprovision access |
+| - | - | - | - | - |
+| Azure AD B2B collaboration| Invite via email, one-time password (OTP), self-service|N/A| **Periodic partner review**| Remove account<br>Restrict sign-in |
+| Entitlement management| **Add user by assignment or self-service access**|N/A| Access reviews|**Expiration of, or removal from, access package**|
+| Office 365 groups|N/A|N/A| Review group memberships| Group expiration or deletion<br> Removal from group |
+| Azure AD security groups|N/A| **Conditional Access policies**: Add external users to security groups as needed|N/A| N/A|
- ### Access to resources. Bolded entries are preferred methods
+### Resource access
+
+Entries in bold are recommended.
-|Feature | APP & resource access| SharePoint & OneDrive access| Teams access| Email & document security |
+|Feature | App and resource access| SharePoint and OneDrive access| Teams access| Email and document security |
| - |-|-|-|-|
-| Entitlement Management| **Add user via assignment or self-service accessΓÇï**| **Access packages**| **Access packages**| |
-| Office 365 Group| | Access to site(s) (and associated content) ΓÇïincluded with group| Access to teams (and associated content)ΓÇïincluded with group| |
-| Sensitivity labels| | **Manually and automatically classify and restrict access**| **Manually and automatically classify and restrict access**| **Manually and automatically classify and restrict access** |
-| Azure AD security groups| **Conditional Access policies for access not included in access packages**| | | |
+| Entitlement management| **Add user by assignment or self-service access**| **Access packages**| **Access packages**| N/A|
+| Office 365 Group|N/A | Access to site(s) and group content| Access to teams and group content|N/A|
+| Sensitivity labels|N/A| **Manually and automatically classify and restrict access**| **Manually and automatically classify and restrict access**| **Manually and automatically classify and restrict access** |
+| Azure AD security groups| **Conditional Access policies for access not included in access packages**|N/A|N/A|N/A|
+### Entitlement management 
-### Entitlement Management 
+Use entitlement management to provision and deprovision access to groups and teams, applications, and SharePoint sites. Define the connected organizations allowed access, self-service requests, and approval workflows. To ensure access ends correctly, define expiration policies and access reviews for packages.
-[Entitlement management access packages](../governance/entitlement-management-access-package-create.md) enable provisioning and deprovisioning access to Groups and Teams, Applications, and SharePoint sites. You can define which connected organizations are allowed access, whether self-service requests are allowed, and what approval workflows are required (if any) to grant access. To ensure that access doesnΓÇÖt stay around longer than necessary, you can define expiration policies and access reviews for each access package.
-
-
+Learn more: [Create a new access package in entitlement management](../governance/entitlement-management-access-package-create.md)
-## Govern access with Azure AD P1 and Microsoft / Office 365 E3
-You can achieve robust governance with Azure AD P1 and Microsoft 365 E3
+## Governance with Azure AD P1, Microsoft 365, Office 365 E3
-### Provisioning, signing in, reviewing access, and deprovisioning
+### Provision, sign-in, review access, and deprovision access
+Items in bold are recommended.
|Feature | Provision external users| Enforce sign-in requirements| Review access| Deprovision access | | - |-|-|-|-|
-| Azure AD B2B Collaboration| **Invite via email, OTP, self-service**| Direct B2B federation| **Periodic review per partner**| Remove account<br>Restrict sign in |
-| Microsoft or Office 365 Groups| | | | Expiration of or deletion of group.<br>Removal from group. |
-| Security groups| | **Add external users to security groups (org, team, project, etc.)**| | |
-| Conditional Access policies| | **Sign-in Conditional Access policies for external users**| | |
+| Azure AD B2B collaboration| **Invite by email, OTP, self-service**| Direct B2B federation| **Periodic partner review**| Remove account<br>Restrict sign-in |
+| Microsoft 365 or Office 365 groups|N/A|N/A|N/A|Group expiration or deletion<br>Removal from group |
+| Security groups|N/A| **Add external users to security groups (org, team, project, etc.)**|N/A| N/A|
+| Conditional Access policies|N/A| **Sign-in Conditional Access policies for external users**|N/A|N/A|
+### Resource access
- ### Access to resources.
-
-|Feature | APP & resource access| SharePoint & OneDrive access| Teams access| Email & document security |
+|Feature | App and resource access| SharePoint and OneDrive access| Teams access| Email and document security |
| - |-|-|-|-|
-| Microsoft or Office 365 Groups| | **Access to site(s) included with group (and associated content)**|**Access to teams included with Microsoft 365 group (and associated content)**| |
-| Sensitivity labels| | Manually classify and restrict access| Manually classify and restrict access.| Manually classify to restrict and encrypt |
-| Conditional Access Policies| Conditional Access policies for access control| | | |
-| Additional methods| | Restrict SharePoint site access granularly with security groups.<br>Disallow direct sharing.| **Restrict external invitations from within teams**| |
-
+| Microsoft 365 or Office 365 groups|N/A| **Access to group site(s) and associated content**|**Access to Microsoft 365 group teams and associated content**|N/A|
+| Sensitivity labels|N/A| Manually classify and restrict access| Manually classify and restrict access| Manually classify to restrict and encrypt |
+| Conditional Access policies| Conditional Access policies for access control|N/A|N/A|N/A|
+| Other methods|N/A| Restrict SharePoint site access with security groups<br>Disallow direct sharing| **Restrict external invitations from a team**|N/A|
### Next steps
-See the following articles on securing external access to resources. We recommend you take the actions in the listed order.
-
-1. [Determine your security posture for external access](1-secure-access-posture.md)
-
-2. [Discover your current state](2-secure-access-current-state.md)
-
-3. [Create a governance plan](3-secure-access-plan.md) (You are here.)
-
-4. [Use groups for security](4-secure-access-groups.md)
-
-5. [Transition to Azure AD B2B](5-secure-access-b2b.md)
-
-6. [Secure access with Entitlement Management](6-secure-access-entitlement-managment.md)
-
-7. [Secure access with Conditional Access policies](7-secure-access-conditional-access.md)
-
-8. [Secure access with Sensitivity labels](8-secure-access-sensitivity-labels.md)
-
-9. [Secure access to Microsoft Teams, OneDrive, and SharePoint](9-secure-access-teams-sharepoint.md)
+* [Determine your security posture for external access](1-secure-access-posture.md)
+* [Discover the current state of external collaboration in your organization](2-secure-access-current-state.md)
+* [Securing external access with groups](4-secure-access-groups.md)
+* [Transition to governed collaboration with Azure Active Directory B2B collaboration](5-secure-access-b2b.md)
+* [Manage external access with entitlement management](6-secure-access-entitlement-managment.md)
+* [Secure access with Conditional Access policies](7-secure-access-conditional-access.md)
+* [Control access with sensitivity labels](8-secure-access-sensitivity-labels.md)
+* [Secure external access to Microsoft Teams, SharePoint, and OneDrive for Business](9-secure-access-teams-sharepoint.md)
active-directory 5 Secure Access B2b https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/fundamentals/5-secure-access-b2b.md
Previously updated : 09/13/2022 Last updated : 12/14/2022
# Transition to governed collaboration with Azure Active Directory B2B collaboration
-Getting your collaboration under control is key to securing external access to your resources. Before going forward with this article, be sure that you have:
+Understanding collaboration helps secure external access to your resources. We recommend you read the following articles, first:
-* [Determined your security posture](1-secure-access-posture.md)
+* [Determine your security posture for external access](1-secure-access-posture.md)
+* [Discover the current state of external collaboration in your organization](2-secure-access-current-state.md)
+* [Create a security plan for external access](3-secure-access-plan.md)
+* [Securing external access with groups](4-secure-access-groups.md)
-* [Discovered your current state](2-secure-access-current-state.md)
+Use the information in this article to move external collaboration into Azure Active Directory B2B (Azure AD B2B) collaboration.
-* [Created a security plan](3-secure-access-plan.md)
+* See, [B2B collaboration overview](../external-identities/what-is-b2b.md)
+* Learn about: [External Identities in Azure Active Directory](../external-identities/external-identities-overview.md)
-* [Understood how groups and security work together](4-secure-access-groups.md)
+## Control collaboration
-Once youΓÇÖve done those things, you're ready to move into controlled collaboration. This article will guide you to move all your external collaboration into [Azure Active Directory B2B collaboration](../external-identities/what-is-b2b.md) (Azure AD B2B). Azure AD B2B is a feature of [Azure AD External Identities](../external-identities/external-identities-overview.md).
+You can limit the organizations your users collaborate with (inbound and outbound), and who in your organization can invite guests. Most organizations permit business units to decide collaboration, and delegate approval and oversight. For example, organizations in government, education, and financial often don't permit open collaboration. You can use Azure AD features to control collaboration.
-## Control who your organization collaborates with
+You can control access your tenant, by deploying one or more of the following solutions:
-You can decide whether to limit which organizations your users can collaborate with (inbound and outbound), and who within your organization can invite guests. Most organizations take the approach of permitting business units to decide with whom they collaborate, and delegating the approval and oversight as needed. For example, some government, education, and financial services organizations don't permit open collaboration. You may wish to use the Azure AD features to scope collaboration, as discussed in the rest of this section.
-
-You have several options on how to control who is allowed to access your tenant. These options include:
--- **External Collaboration Settings** ΓÇô Restrict the email domains that invitations can be sent to. --- **Cross Tenant Access Settings** ΓÇô Control what applications can be accessed by guests on a per user/group/tenant basis (inbound). Also controls what external Azure AD tenants and applications your own users can access (outbound). --- **Connected Organizations** ΓÇô Control what organizations are allowed to request Access Packages in Entitlement Management. -
-Depending on the requirements of your organization, you may need to deploy one or more of these solutions.
+- **External Collaboration Settings** ΓÇô Restrict the email domains that invitations got to
+- **Cross Tenant Access Settings** ΓÇô Control application access by guests by user, group, or tenant (inbound). Control external Azure AD tenant and application access for users (outbound)
+- **Connected Organizations** ΓÇô Determine what organizations can request Access Packages in Entitlement Management
### Determine collaboration partners
-First, ensure you have documented the organizations you are currently collaborating with, and if necessary, the domains for those organizations' users. Note that domain-based restrictions may be impractical, since one collaboration partner may have multiple domains, and a partner could add domains at any time. For example, a partner may have multiple business units with separate domains and add more domains as they configure more synchronization.
+Document the organizations you collaborate with, and organization users' domains, if needed. Domain-based restrictions might be impractical. One collaboration partner can have multiple domains, and a partner can add domains. For example, a partner with multiple business units, with separate domains, and add more domains as they configure synchronization.
-If your users have already started using Azure AD B2B, you can discover what external Azure AD tenants your users are currently collaborating with via the sign-in logs, [PowerShell](https://github.com/AzureAD/MSIdentityTools/wiki/Get-MSIDCrossTenantAccessActivity), or a [built-in workbook](../reports-monitoring/workbook-cross-tenant-access-activity.md).
+If your users use Azure AD B2B, you can discover the external Azure AD tenants they're collaborating, with via the sign-in logs, PowerShell, or a workbook. Learn more:
-Next, determine if you want to enable future collaboration with
+* [Get MsIdCrossTenantAccessActivity](https://github.com/AzureAD/MSIdentityTools/wiki/Get-MSIDCrossTenantAccessActivity)
+* [Cross-tenant access activity workbook](../reports-monitoring/workbook-cross-tenant-access-activity.md)
-- any external organization (most inclusive)
+You can enable future collaboration with:
-- all external organizations except those explicitly denied--- only specific external organizations (most restrictive)
+- External organizations (most inclusive)
+- External organizations (but not denied organizations)
+- Specific external organizations (most restrictive)
> [!NOTE]
-> The more restrictive your collaboration settings, the more likely that your users will go outside of your approved collaboration framework. We recommend enabling the broadest collaboration your security needs will allow, and closely reviewing that collaboration rather than being overly restrictive.
-
-Also note that limiting to a single domain may inadvertently prevent authorized collaboration with organizations, which have other unrelated domains for their users. For example, if doing business with an organization Contoso, the initial point of contact with Contoso might be one of their US-based employees who has an email with a ".com" domain. However if you only allow the ".com" domain you may inadvertently omit their Canadian employees who have ".ca" domain.
+> If your collaboration settings are highly restrictive, your users might go outside the collaboration framework. We recommend you enable a broad collaboration that your security requirements allow.
-There are circumstances in which you would want to only allow specific collaboration partners for a subset of users. For example, a university may want to restrict student accounts from accessing external tenants but need to allow faculty to collaborate with external organizations.
+Limits to one domain can prevent authorized collaboration with organizations that have other unrelated domains. For example, the initial point of contact with Contoso might be a US-based employee with email that has a .com domain. However if you allow only the com domain. you can omit Canadian employees who have the ca domain.
-### Using allow and blocklists with External Collaboration Settings
+You can allow specific collaboration partners for a subset of users. For example, a university restricts student accounts from accessing external tenants, but allows faculty to collaborate with external organizations.
-You can use an allowlist or blocklist to [restrict invitations to B2B users](../external-identities/allow-deny-list.md) from specific organizations. You can use only an allow or a blocklist, not both.
+### Allowlist and blocklist with External Collaboration Settings
-* An [allowlist](../external-identities/allow-deny-list.md) limits collaboration to only those domains listed; all other domains are effectively on the blocklist.
+You can use an allowlist or blocklist to from specific organizations. You can use only an allow or a blocklist, not both.
-* A [blocklist](../external-identities/allow-deny-list.md) allows collaboration with any domain not on the blocklist.
+* **Allowlist** - Limit collaboration to a list of domains. All other domains are on the blocklist.
+* **Blocklist** - Allow collaboration with domains not on the blocklist
-> [!NOTE]
-> Limiting to a predefined domain may inadvertently prevent authorized collaboration with organizations, which have other domains for their users. For example, if doing business with an organization Contoso, the initial point of contact with Contoso might be one of their US-based employees who has an email with a ".com" domain. However, if you only allow the ".com" domain you may inadvertently omit their Canadian employees who have ".ca" domain.
+Learn more: [Allow or block invitations to B2B users from specific organizations](../external-identities/allow-deny-list.md)
> [!IMPORTANT]
-> These lists do not apply to users who are already in your directory. By default, they also do not apply to OneDrive for Business and SharePoint allow/blocklists which are separate unless you enable the [SharePoint/OneDrive B2B integration](/sharepoint/sharepoint-azureb2b-integration).
+> These lists don't apply to users in your directory. By default, they don't apply to OneDrive for Business and SharePoint allowlist or blocklists. These lists are separate, but you can enable [SharePoint-OneDrive B2B integration](/sharepoint/sharepoint-azureb2b-integration.md).
-Some organizations use a list of known ΓÇÿbad actorΓÇÖ domains provided by their managed security provider for their blocklist. For example, if the organization is legitimately doing business with Contoso and using a .com domain, there may be an unrelated organization that has been using the Contoso .org domain and attempting a phishing attack to impersonate Contoso employees.
+Some organizations have a blocklist of bad-actor domains from a managed security provider. For example, if the organization does business with Contoso and uses a com domain, an unrelated organization can use the org domain, and attempt a phishing attack.
-### Using Cross Tenant Access Settings
+### Cross Tenant Access Settings
-You can control both inbound and outbound access using Cross Tenant Access Settings. In addition, you can trust MFA, Compliant device, and hybrid Azure Active Directory joined device (HAADJ) claims from all or a subset of external Azure AD tenants. When you configure an organization specific policy, it applies to the entire Azure AD tenant and will cover all users from that tenant regardless of the userΓÇÖs domain suffix.
+You can control inbound and outbound access using Cross Tenant Access Settings. In addition, you can trust multi-factor authentication (MFA), a compliant device, and hybrid Azure Active Directory joined device (HAADJ) claims from external Azure AD tenants. When you configure an organizational policy, it applies to the Azure AD tenant and covers users in that tenant, regardless of domain suffix.
-You can enable collaboration across Microsoft clouds such as Microsoft Azure China 21Vianet or Microsoft Azure Government with additional configuration. Determine if any of your collaboration partners reside in a different Microsoft cloud. If so, you should [enable collaboration with these partners using Cross Tenant Access Settings](../external-identities/cross-cloud-settings.md).
+You can enable collaboration across Microsoft clouds such as Microsoft Azure operated by 21Vianet (Azure China) or Microsoft Azure Government. Determine if your collaboration partners reside in a different Microsoft cloud. Learn more: [Configure Microsoft cloud settings for B2B collaboration (Preview)](../external-identities/cross-cloud-settings.md).
-If you wish to allow inbound access to only specific tenants (allowlist), you can set the default policy to block access and then create organization policies to granularly allow access on a per user, group, and application basis.
+You can allow inbound access to specific tenants (allowlist), and set the default policy to block access. You then create organizational policies that allow access by user, group, or application.
-If you wish to block access to specific tenants (blocklist), you can set the default policy as allow and then create organization policies that block access to those specific tenants.
+You can block access to tenants (blocklist). Set the default policy to Allow and then create organizational policies that block access to some tenants.
> [!NOTE]
-> Cross Tenant Access Settings Inbound Access does not prevent the invitations from being sent or redeemed. However, it does control what applications can be accessed and whether a token is issued to the guest user or not. Even if the guest can redeem an invitation, if the policy blocks access to all applications, the user will not have access to anything.
+> Cross Tenant Access Settings Inbound Access does not prevent invitations from being sent or redeemed. However, it does control applications access and whether a token is issued to the guest user. If the guest can redeem an invitation, policy blocks application access.
-If you wish to control what external organizations your users can access, you can configure outbound access policies following the same pattern as inbound access ΓÇô allow/blocklist. Configure the default and organization-specific policies as desired. [Learn more about configuring inbound and outbound access policies](../external-identities/cross-tenant-access-settings-b2b-collaboration.md).
+To control external organizations users access, configure outbound access policies similarly to inbound access: allowlist and blocklist. Configure default and organization-specific policies.
-> [!NOTE]
-> Cross Tenant Access Settings only applies to Azure AD tenants. If you need to control access to partners who do not use Azure AD, you must use External Collaboration Settings.
+Learn more: [Configure cross-tenant access settings for B2B collaboration](../external-identities/cross-tenant-access-settings-b2b-collaboration.md)
-### Using Entitlement Management and Connected Organizations
+> [!NOTE]
+> Cross Tenant Access Settings apply to Azure AD tenants. To control access for partners not using Azure AD, use External Collaboration Settings.
-If you want to use Entitlement Management to ensure guest lifecycle is governed automatically, you can create Access Packages and publish them to any external user or only to Connected Organizations. Connected Organizations support Azure AD tenants and any other domain. When you create an Access Package you can restrict access only to specific Connected Organizations. This is covered in greater detail in the next section. [Learn more about Entitlement Management](../governance/entitlement-management-overview.md).
+### Entitlement Management and Connected Organizations
-## Control how external users gain access
+Use Entitlement Management to ensure automatic guest-lifecycle governance. Create Access Packages and publish them to external users or to Connected Organizations, which support Azure AD tenants and other domains. When you create an Access Package restrict access to specific Connected Organizations.
-There are many ways to collaborate with external partners using Azure AD B2B. To begin collaboration, you invite or otherwise enable your partner to access your resources. Users can gain access by responding to :
+Learn more: [What is entitlement management?](../governance/entitlement-management-overview.md)
-* Redeeming [an invitation sent via an email](../external-identities/redemption-experience.md), or [a direct link to share](../external-identities/redemption-experience.md) a resource. Users can gain access by:
+## Control external user access
-* Requesting access [through an application](../external-identities/self-service-sign-up-overview.md) you create
+To begin collaboration, invite or enable a partner to access resources. Users gain access by:
-* Requesting access through the [My Access](../governance/entitlement-management-request-access.md) portal
+* [Azure Active Directory B2B collaboration invitation redemption](../external-identities/redemption-experience.md)
+* [Self-service sign-up](../external-identities/self-service-sign-up-overview.md)
+* [Requesting access to an access package in entitlement management](../governance/entitlement-management-request-access.md)
-When you enable Azure AD B2B, you enable the ability to invite guest users via direct links and email invitations by default. Self Service sign-up and publishing Access Packages to the My Access portal require additional configuration.
+When you enable Azure AD B2B, you can invite guest users with links and email invitations. Self service sign-up, and publishing Access Packages to the My Access portal, require more configuration.
-> [NOTE]
-> Self Service sign-up does not enforce the allow/blocklist in External Collaboration Settings. Cross Tenant Access Settings will apply. You can also integrate your own allow/blocklist with Self Service sign-up using [custom API connectors](../external-identities/self-service-sign-up-add-api-connector.md).
+> [!NOTE]
+> Self service sign-up enforces no allowlist or blocklist in External Collaboration Settings. Use Cross Tenant Access Settings. You can integrate allowlists and blocklists with self service sign-up using custom API connectors. See, [Add an API connector to a user flow](../external-identities/self-service-sign-up-add-api-connector.md).
-### Control who can invite guest users
+### Guest user invitations
Determine who can invite guest users to access resources.
-* The most restrictive setting is to allow only administrators and those users granted the [guest inviter role](../external-identities/external-collaboration-settings-configure.md) to invite guests.
-
-* If your security requirements allow it, we recommend allowing all users with a userType of Member to invite guests.
-
-* Determine if you want users with a userType of Guest, which is the default account type for Azure AD B2B users, to be able to invite other guests.
-
-![Screenshot of guest invitation settings.](media/secure-external-access/5-guest-invite-settings.png)
+* Most restrictive: Allow only administrators and users with the Guest Inviter role
+ * See, [Configure external collaboration settings](../external-identities/external-collaboration-settings-configure.md)
+* If security requirements permit, allow all UserType of Member to invite guests
+* Determine if UserType of Guest, the default Azure AD B2B user account, can invite guests
-### Collect additional information about external users
-
-If you use Azure AD entitlement management, you can configure questions for external users to answer. The questions will then be shown to approvers to help them make a decision. You can configure different sets of questions for each [access package policy](../governance/entitlement-management-access-package-approval-policy.md) so that approvers can have relevant information for the access they're approving. For example, if one access package is intended for vendor access, then the requestor may be asked for their vendor contract number. A different access package intended for suppliers, may ask for their country of origin.
-
-If you use a self-service portal, you can use [API connectors](../external-identities/api-connectors-overview.md) to collect additional attributes about users as they sign up. You can then potentially use those attributes to assign access. For example, if during the sign-up process you collect their supplier ID, you could use that attribute to dynamically assign them to a group or access package for that supplier. You can create custom attributes in the Azure portal and use them in your self-service sign-up user flows. You can also read and write these attributes by using the [Microsoft Graph API](../../active-directory-b2c/microsoft-graph-operations.md).
-
-### Troubleshoot invitation redemption to Azure AD users
+ ![Screenshot of guest invitation settings.](media/secure-external-access/5-guest-invite-settings.png)
-There are three instances when invited guest users from a collaboration partner using Azure AD will have trouble redeeming an invitation.
+### External users information
-* If using an allowlist and the userΓÇÖs domain isn't included in an allowlist.
+Use Azure AD entitlement management to configure questions that external users answer. The questions appear to approvers to help them make a decision. You can configure sets of questions for each access package policy, so approvers have relevant information for access they approve. For example, ask vendors for their vendor contract number.
-* If the collaboration partnerΓÇÖs home tenant has tenant restrictions that prevent collaboration with external users..
+Learn more: [Change approval and requestor information settings for an access package in entitlement management](../governance/entitlement-management-access-package-approval-policy.md)
-* If the user isn't part of the partnerΓÇÖs Azure AD tenant. For example, there are users at contoso.com who are only in Active Directory (or another on-premises IdP), they'll only be able to redeem invitations via the email OTP process. for more information, see the [invitation redemption flow](../external-identities/redemption-experience.md).
+If you use a self-service portal, use API connectors to collect user attributes during sign-up. Use the attributes to assign access. You can create custom attributes in the Azure portal and use them in your self-service sign-up user flows. Read and write these attributes by using the Microsoft Graph API.
-## Control what external users can access
+Learn more:
-Most organizations aren't monolithic. That is, there are some resources that are fine to share with external users, and some you will not want external users to access. Therefore, you must control what external users access. Consider using [Entitlement management and access packages to control access](6-secure-access-entitlement-managment.md) to specific resources.
+* [Use API connectors to customize and extend self-service sign-up](../external-identities/api-connectors-overview.md)
+* [Manage Azure AD B2C with Microsoft Graph](../../active-directory-b2c/microsoft-graph-operations.md)
-By default, guest users can see information and attributes about tenant members and other partners, including group memberships. Consider if your security requirements call for limiting external user access to this information.
-
-![Screenshot of configuring external collaboration settings.](media/secure-external-access/5-external-collaboration-settings.png)
-
-We recommend the following restrictions for guest users.
-
-* **Limit guest access to browsing groups and other properties in the directory**
-
- * Use the external collaboration settings to restrict guest ability to read groups they aren't members of.
-
-* **Block access to employee-only apps**.
-
- * Create a Conditional Access policy to block access to Azure AD-integrated applications that are only appropriate for non-guest users.
+### Troubleshoot invitation redemption to Azure AD users
-* **Block access to the Azure portal. You can make rare necessary exceptions**.
+Invited guest users from a collaboration partner can have trouble redeeming an invitation.
- * Create a Conditional Access policy that includes either All guest and external users and then [implement a policy to block access](../conditional-access/concept-conditional-access-cloud-apps.md).
+* User domain isn't on an allowlist
+* The partnerΓÇÖs home tenant restrictions prevent external collaboration
+* The user isn't in partner Azure AD tenant. For example, users at contoso.com are in Active Directory.
+ * They can redeem invitations with the email one-time password (OTP).
+ * See, [Azure Active Directory B2B collaboration invitation redemption](../external-identities/redemption-experience.md)
-
+## External users access
-## Remove users who no longer need access
+Generally, there are resources you can share with external users, and some you can't. You can control what external users access. See, [Manage external access with Entitlement Management](6-secure-access-entitlement-managment.md).
-Evaluate current access so that you can [review and remove users who no longer need access](../governance/access-reviews-external-users.md). Include external users in your tenant as guests, and those with member accounts.
+By default, guest users see information and attributes about tenant members and other partners, including group memberships. Consider limiting external user access to this information.
-Some organizations added external users such as vendors, partners, and contractors as members. These members may have a specific attribute, or usernames that begin with, for example
+ ![Screenshot of Guest user access options on External collaboration settings.](media/secure-external-access/5-external-collaboration-settings.png)
-* v- for vendors
+We recommend the following guest-user restrictions.
-* p- for partners
+* Limit guest access to browsing groups and other properties in the directory
+ * Use the external collaboration settings to restrict guests from reading groups they aren't members of
+* Block access to employee-only apps
+ * Create a Conditional Access policy to block access to Azure AD-integrated applications for non-guest users
+* Block access to the Azure portal
+ * You can make needed exceptions
+ * Create a Conditional Access policy with All guest and external users. Implement a policy to block access.
-* c- for contractors
+Learn more: [Conditional Access: Cloud apps, actions, and authentication context](../conditional-access/concept-conditional-access-cloud-apps.md)
-Evaluate any external users with member accounts to determine if they still need access. If so, transition these users to Azure AD B2B as described in the next section.
+## Remove users who don't need access
-You may also have guest users who weren't invited through Entitlement Management or Azure AD B2B
+Establish a process to review and remove users who don't need access. Include external users in your tenant as guests, and users with member accounts.
-To find these users, you can:
+Learn more: [Use Azure AD Identity Governance to review and remove external users who no longer have resource access](../governance/access-reviews-external-users.md)
-* [Find guest users not invited through Entitlement Management](../governance/access-reviews-external-users.md).
+Some organizations add external users as members (vendors, partners, and contractors). Assign an attribute, or username:
- * We provide a [SAMPLE PowerShell script.](https://github.com/microsoft/access-reviews-samples/tree/master/ExternalIdentityUse)
+* Vendors: **v-**
+* Partners: **p-**
+* Contractors: **c-**
-Transition these users to Azure AD B2B users as described in the following section.
+Evaluate external users with member accounts to determine access. You might have guest users not invited through Entitlement Management or Azure AD B2B
-## Transition your current external users to B2B
+To find these users:
-If you havenΓÇÖt been using Azure AD B2B, you likely have non-employee users in your tenant. We recommend you transition these accounts to Azure AD B2B external user accounts and then change their UserType to Guest. This enables you to take advantage of the many ways Azure AD and Microsoft 365 allow you to treat external users differently. Some of these ways include:
+* [Use Azure AD Identity Governance to review and remove external users who no longer have resource access](../governance/access-reviews-external-users.md)
+* Use a sample PowerShell script on [access-reviews-samples/ExternalIdentityUse/](https://github.com/microsoft/access-reviews-samples/tree/master/ExternalIdentityUse)
-* Easily including or excluding guest users in Conditional Access policies
+## Transition current external users to B2B
-* Easily including or excluding guest users in Access Packages and Access Reviews
+If you don't use Azure AD B2B, you likely have non-employee users in your tenant. We recommend you transition these accounts to Azure AD B2B external user accounts and then change their UserType to Guest. Use Azure AD and Microsoft 365 to handle external users.
-* Easily including or excluding external access to Teams, SharePoint, and other resources.
+Include or exclude:
-To transition these internal users while maintaining their current access, UPN, and group memberships, see [Invite external users to B2B collaboration](../external-identities/invite-internal-users.md).
+* Guest users in Conditional Access policies
+* Guest users in Access Packages and Access Reviews
+* External access to Teams, SharePoint, and other resources
-## Decommission undesired collaboration methods
+You can transition these internal users while maintaining current access, UPN, and group memberships. See [Invite external users to B2B collaboration](../external-identities/invite-internal-users.md).
-To complete your transition to governed collaboration, you should decommission undesired collaboration methods. Which you decommission is based on the degree of control you wish IT to exert over collaboration, and your security posture. For information about IT versus end-user control, see [Determine your security posture for external access](1-secure-access-posture.md).
+## Decommission collaboration methods
-The following are collaboration vehicles you may wish to evaluate.
+To complete the transition to governed collaboration, decommission unwanted collaboration methods. Decommissioning is based on the level of control to exert on collaboration, and the security posture. See, [Determine your security posture for external access](1-secure-access-posture.md).
-### Direct invitation through Microsoft Teams
+### Microsoft Teams invitation
-By default Teams allows external access, which means that organization can communicate with all external domains. If you want to restrict or allow specific domains just for Teams, you can do so in the [Teams Admin portal](https://admin.teams.microsoft.com/company-wide-settings/external-communications).
+By default, Teams allows external access. The organization can communicate with external domains. To restrict or allow domains for Teams, use the [Teams admin center](https://admin.teams.microsoft.com/company-wide-settings/external-communications).
+### Sharing through SharePoint and OneDrive
-### Direct sharing through SharePoint and OneDrive
+Sharing through SharePoint and OneDrive adds users not in the Entitlement Management process.
-Direct sharing through SharePoint and OneDrive can add users outside of the Entitlement Management process. For an in-depth look at these configurations see [Manage Access with Microsoft Teams, SharePoint, and OneDrive for business](9-secure-access-teams-sharepoint.md)
-You can also [block the use of userΓÇÖs personal OneDrive](/office365/troubleshoot/group-policy/block-onedrive-use-from-office) if desired.
+* [Secure external access to Microsoft Teams, SharePoint, and OneDrive for Business](9-secure-access-teams-sharepoint.md)
+* [Block OneDrive use from Office](/office365/troubleshoot/group-policy/block-onedrive-use-from-office.md)
-### Sending documents through email
+### Documents in email
-Your users will send documents through email to external users. Consider how you want to restrict and encrypt access to these documents by using sensitivity labels. For more information, see Manage access with Sensitivity labels.
+Users send documents to external users by email. You can use sensitivity labels to restrict and encrypt access to documents. See, [Learn about sensitivity labels](/microsoft-365/compliance/sensitivity-labels?view=o365-worldwide&preserve-view=true).
### Unsanctioned collaboration tools
-The landscape of collaboration tools is vast. Your users likely use many outside of their official duties, including platforms like Google Docs, DropBox, Slack, or Zoom. It's possible to block the use of such tools from a corporate network at the Firewall level and with mobile application management for organization-managed devices. However, this will also block any sanctioned instances of these platforms and wouldn't block access from unmanaged devices. Block platforms you donΓÇÖt want any use of if necessary, and create business policies for no unsanctioned usage for the platforms you need to use.
+Your users likely use Google Docs, DropBox, Slack, or Zoom. You can block use of these tools from a corporate network, at the firewall level, and with mobile application management for organization-managed devices. However, this action blocks sanctioned instances and doesn't block access from unmanaged devices. Block tools you donΓÇÖt want, and create policies for no unsanctioned usage.
-For more information on managing unsanctioned applications, see:
+For more information on governing applications, see:
-* [Governing connected apps](/cloud-app-security/governance-actions)
+* [Governing connected apps](/defender-cloud-apps/governance-actions)
+* [Govern discovered apps](/defender-cloud-apps/governance-discovery)
-* [Sanctioning and unsanctioning an application.](/cloud-app-security/governance-discovery)
-
-
### Next steps
-See the following articles on securing external access to resources. We recommend you take the actions in the listed order.
-
-1. [Determine your security posture for external access](1-secure-access-posture.md)
-
-2. [Discover your current state](2-secure-access-current-state.md)
-
-3. [Create a governance plan](3-secure-access-plan.md)
-
-4. [Use groups for security](4-secure-access-groups.md)
-
-5. [Transition to Azure AD B2B](5-secure-access-b2b.md) (You are here.)
-
-6. [Secure access with Entitlement Management](6-secure-access-entitlement-managment.md)
-
-7. [Secure access with Conditional Access policies](7-secure-access-conditional-access.md)
-
-8. [Secure access with Sensitivity labels](8-secure-access-sensitivity-labels.md)
-
-9. [Secure access to Microsoft Teams, OneDrive, and SharePoint](9-secure-access-teams-sharepoint.md)
+* [Determine your security posture for external access](1-secure-access-posture.md)
+* [Discover the current state of external collaboration in your organization](2-secure-access-current-state.md)
+* [Create a security plan for external access](3-secure-access-plan.md)
+* [Securing external access with groups](4-secure-access-groups.md)
+* [Manage external access with Entitlement Management](6-secure-access-entitlement-managment.md)
+* [Manage external access with Conditional Access policies](7-secure-access-conditional-access.md)
+* [Control access with sensitivity labels](8-secure-access-sensitivity-labels.md)
+* [Secure external access to Microsoft Teams, SharePoint, and OneDrive for Business](9-secure-access-teams-sharepoint.md)
active-directory Active Directory Data Storage Eu https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/fundamentals/active-directory-data-storage-eu.md
Administrators can choose to enable or disable certain Azure AD features. If the
* **Azure Active Directory Multi Tenant Collaboration** - With multi tenant collaboration scenarios enabled, customers can configure their tenant to collaborate with users from a different tenant. For example, a customer can invite users to their tenant in a B2B context. A customer can create a multi-tenant SaaS application that allows other third party tenants to provision the application in the third party tenant. Or, the customer can make two or more tenants affiliated with one another and act as a single tenant in certain scenarios, such as multi-tenant organization (MTO) formation, tenant to tenant sync, and shared e-mail domain sharing. Customer configuration and use of multi tenant collaboration may occur with tenants outside of the EU Data Residency and EU Data Boundary resulting in some customer data, such as user and device account data, usage data, and service configuration (application, policy, and group) stored and processed in the location of the collaborating tenant. * **Application Proxy** - Allows customers to access their on-premises web applications externally. Customers may choose advanced routing configurations that allow customer data to egress outside of the EU Data Residency and EU Data Boundary, including user account data, usage data, and application configuration data.
-* **Microsoft 365 Multi Geo** - Microsoft 365 Multi-Geo provides customers with the ability to expand their Microsoft 365 presence to multiple geographic regions/countries within a single existing Microsoft 365 tenant. Azure Active Directory will egress customer data to perform backup authentication to the locations configured by the customer. Types of customer data include user and device account data, branding data, and service configuration data (application, policy, and group).
+* **Microsoft 365 Multi Geo** - Microsoft 365 Multi-Geo provides customers with the ability to expand their Microsoft 365 presence to multiple geographic countries/regions within a single existing Microsoft 365 tenant. Azure Active Directory will egress customer data to perform backup authentication to the locations configured by the customer. Types of customer data include user and device account data, branding data, and service configuration data (application, policy, and group).
### Other EU Data Boundary online services
active-directory Active Directory Deployment Plans https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/fundamentals/active-directory-deployment-plans.md
Title: Deployment plans - Azure Active Directory | Microsoft Docs
-description: Guidance about how to deploy many Azure Active Directory capabilities.
+ Title: Azure Active Directory deployment plans
+description: Guidance on Azure Active Directory deployment, such as authentication, devices, hybrid scenarios, governance, and more.
- Previously updated : 09/13/2022 Last updated : 01/06/2023 # Azure Active Directory deployment plans
-Looking for complete guidance on deploying Azure Active Directory (Azure AD) capabilities? Azure AD deployment plans walk you through the business value, planning considerations, and operational procedures needed to successfully deploy common Azure AD capabilities.
-
-From any of the plan pages, use your browser's Print to PDF capability to create an up-to-date offline version of the documentation.
--
-## Deploy authentication
-
-| Capability | Description|
-| -| -|
-| [Azure AD multifactor authentication](../authentication/howto-mfa-getstarted.md)| Azure AD Multi-Factor Authentication (MFA) is Microsoft's two-step verification solution. Using admin-approved authentication methods, Azure AD MFA helps safeguard access to your data and applications while meeting the demand for a simple sign-in process. Watch this video on [How to configure and enforce multi-factor authentication in your tenant](https://www.youtube.com/watch?v=qNndxl7gqVM)|
-| [Conditional Access](../conditional-access/plan-conditional-access.md)| With Conditional Access, you can implement automated access control decisions for who can access your cloud apps, based on conditions. |
-| [Self-service password reset](../authentication/howto-sspr-deployment.md)| Self-service password reset helps your users reset their passwords without administrator intervention, when and where they need to. |
-| [Passwordless](../authentication/howto-authentication-passwordless-deployment.md) | Implement passwordless authentication using the Microsoft Authenticator app or FIDO2 Security keys in your organization |
-
-## Deploy application and device management
-
-| Capability | Description|
-| -| - |
-| [Single sign-on](../manage-apps/plan-sso-deployment.md)| Single sign-on helps your users' access the apps and resources they need to do business while signing in only once. After they've signed in, they can go from Microsoft Office to SalesForce to Box to internal applications without being required to enter credentials a second time. |
-| [My Apps](../manage-apps/my-apps-deployment-plan.md)| Offer your users a simple hub to discover and access all their applications. Enable them to be more productive with self-service capabilities, like requesting access to apps and groups, or managing access to resources on behalf of others. |
-| [Devices](../devices/plan-device-deployment.md) | This article helps you evaluate the methods to integrate your device with Azure AD, choose the implementation plan, and provides key links to supported device management tools. |
--
-## Deploy hybrid scenarios
-| Capability | Description|
-| -| -|
-| [AD FS to cloud user authentication](../hybrid/migrate-from-federation-to-cloud-authentication.md)| Learn to migrate your user authentication from federation to cloud authentication with either pass through authentication or password hash sync.
-| [Azure AD Application Proxy](../app-proxy/application-proxy-deployment-plan.md) |Employees today want to be productive at any place, at any time, and from any device. They need to access SaaS apps in the cloud and corporate apps on-premises. Azure AD Application proxy enables this robust access without costly and complex virtual private networks (VPNs) or demilitarized zones (DMZs). |
-| [Seamless SSO](../hybrid/how-to-connect-sso-quick-start.md)| Azure Active Directory Seamless Single Sign-On (Azure AD Seamless SSO) automatically signs users in when they are on their corporate devices connected to your corporate network. With this feature, users won't need to type in their passwords to sign in to Azure AD and usually won't need to enter their usernames. This feature provides authorized users with easy access to your cloud-based applications without needing any extra on-premises components. |
+Use the following guidance to help deploy Azure Active Directory (Azure AD). Learn about business value, planning considerations, and operational procedures. You can use a browser Print to PDF function to create offline documentation.
-## Deploy user provisioning
+## Your stakeholders
-| Capability | Description|
-| -| -|
-| [User provisioning](../app-provisioning/plan-auto-user-provisioning.md)| Azure AD helps you automate the creation, maintenance, and removal of user identities in cloud (SaaS) applications, such as Dropbox, Salesforce, ServiceNow, and more. |
-| [Cloud HR user provisioning](../app-provisioning/plan-cloud-hr-provision.md)| Cloud HR user provisioning to Active Directory creates a foundation for ongoing identity governance and enhances the quality of business processes that rely on authoritative identity data. Using this feature with your cloud HR product, such as Workday or Successfactors, you can seamlessly manage the identity lifecycle of employees and contingent workers by configuring rules that map Joiner-Mover-Leaver processes (such as New Hire, Terminate, Transfer) to IT provisioning actions (such as Create, Enable, Disable) |
-| [Azure AD B2B collaboration](../fundamentals/secure-external-access-resources.md)| Azure AD enables you to collaborate with any external user, allowing them to securely gain access to SaaS and Line-of-Business (LoB) applications. |
+When beginning your deployment plans, include your key stakeholders. Identify and document stakeholders, roles, responsibilities. Titles and roles can differ from one organization to another, however the ownership areas are similar.
-## Deploy governance and reporting
-
-| Capability | Description|
-| -| -|
-| [Privileged Identity Management](../privileged-identity-management/pim-deployment-plan.md)| Azure AD Privileged Identity Management (PIM) helps you manage privileged administrative roles across Azure AD, Azure resources, and other Microsoft Online Services. PIM provides solutions like just-in-time access, request approval workflows, and fully integrated access reviews so you can identify, uncover, and prevent malicious activities of privileged roles in real time. |
-| [Reporting and Monitoring](../reports-monitoring/plan-monitoring-and-reporting.md)| The design of your Azure AD reporting and monitoring solution depends on your legal, security, and operational requirements as well as your existing environment and processes. This article presents the various design options and guides you to the right deployment strategy. |
-| [Access Reviews](../governance/deploy-access-reviews.md) | Access Reviews are an important part of your governance strategy, enabling you to know and manage who has access, and to what they have access. This article helps you plan and deploy access reviews to achieve your desired security and collaboration postures. |
-| [Identity governance for applications](../governance/identity-governance-applications-prepare.md) | As part of your organization's controls to meet your compliance and risk management objectives for managing access for critical applications, you can use Azure AD features to set up and enforce appropriate access.|
-
-## Include the right stakeholders
-
-When beginning your deployment planning for a new capability, it's important to include key stakeholders across your organization. We recommend that you identify and document the person or people who fulfill each of the following roles, and work with them to determine their involvement in the project.
-
-Roles might include the following
-
-|Role |Description |
+|Role |Responsibility |
|-|-|
-|End-user|A representative group of users for which the capability will be implemented. Often previews the changes in a pilot program.
-|IT Support Manager|IT support organization representative who can provide input on the supportability of this change from a helpdesk perspective.ΓÇ»
-|Identity Architect or Azure Global Administrator|Identity management team representative in charge of defining how this change is aligned with the core identity management infrastructure in your organization.|
-|Application Business Owner |The overall business owner of the affected application(s), which may include managing access.  May also provide input on the user experience and usefulness of this change from an end user's perspective.
-|Security Owner|A representative from the security team that can sign out that the plan will meet the security requirements of your organization.|
-|Compliance Manager|The person within your organization responsible for ensuring compliance with corporate, industry, or governmental requirements.|
-
-**Levels of involvement might include:**
+|Sponsor|An enterprise senior leader with authority to approve and/or assign budget and resources. The sponsor is the connection between managers and the executive team.|
+|End user|The people for whom the service is implemented. Users can participate in a pilot program.|
+|IT Support Manager|Provides input on the supportability of proposed changesΓÇ»|
+|Identity architect or Azure Global Administrator|Defines how the change aligns with identity management infrastructure|
+|Application business owner |Owns the affected application(s), which might include access management. Provides input on the user experience.
+|Security owner|Confirms the change plan meets security requirements|
+|Compliance manager|Ensures compliance with corporate, industry, or governmental requirements|
+
+### RACI
+
+RACI is an acronym derived from four key responsibilities:
+
+* **Responsible**
+* **Accountable**
+* **Consulted**
+* **Informed**
+
+Use these terms to clarify and define roles and responsibilities in your project, and for other cross-functional or departmental projects and processes.
+
+## Authentication
+
+Use the following list to plan for authentication deployment.
+
+* **Azure AD multi-factor authentication (MFA)** - Using admin-approved authentication methods, Azure AD MFA helps safeguard access to your data and applications while meeting the demand for a simple sign-in process:
+ * See the video, [How to configure and enforce multi-factor authentication in your tenant](https://www.youtube.com/watch?v=qNndxl7gqVM)
+ * See, [Plan an Azure Active Directory Multi-Factor Authentication deployment](../authentication/howto-mfa-getstarted.md)
+* **Conditional Access** - Implement automated access-control decisions for users to access cloud apps, based on conditions:
+ * See, [What is Conditional Access?](/azure/active-directory/conditional-access/overview)
+ * See, [Plan a Conditional Access deployment](../conditional-access/plan-conditional-access.md)
+* **Azure AD self-service password reset (SSPR)** - Help users reset a password without administrator intervention:
+ * See, [Passwordless authentication options for Azure AD](/articles/active-directory/authentication/concept-authentication-passwordless.md)
+ * See, [Plan an Azure Active Directory self-service password reset deployment](../authentication/howto-sspr-deployment.md)
+* **Passordless authentication** - Implement passwordless authentication using the Microsoft Authenticator app or FIDO2 Security keys:
+ * See, [Enable passwordless sign-in with Microsoft Authenticator](/azure/active-directory/authentication/howto-authentication-passwordless-phone)
+ * See, [Plan a passwordless authentication deployment in Azure Active Directory](../authentication/howto-authentication-passwordless-deployment.md)
+
+## Applications and devices
+
+Use the following list to help deploy applications and devices.
+
+* **Single sign-on (SSO)** - Enable user access to apps and resources while signing in once, without being required to enter credentials again:
+ * See, [What is SSO in Azure AD?](/articles/active-directory/manage-apps/what-is-single-sign-on.md)
+ * See, [Plan a SSO deployment](../manage-apps/plan-sso-deployment.md)
+* **My Apps portal** - A web-based portal to discover and access applications. Enable user productivity with self-service, for instance requesting access to groups, or managing access to resources on behalf of others.
+ * See, [My Apps portal overview](/azure/active-directory/manage-apps/myapps-overview)
+* **Devices** - Evaluate device integration methods with Azure AD, choose the implementation plan, and more.
+ * See, [Plan your Azure Active Directory device deployment](../devices/plan-device-deployment.md)
+
+## Hybrid scenarios
+
+The following list describes features and services for productivity gains in hybrid scenarios.
+
+* **Active Directory Federation Services (AD FS)** - Migrate user authentication from federation to cloud with pass-through authentication or password hash sync:
+ * See, [What is federation with Azure AD?](/articles/active-directory/hybrid/whatis-fed.md)
+ * See, [Migrate from federation to cloud authentication](../hybrid/migrate-from-federation-to-cloud-authentication.md)
+* **Azure AD Application Proxy** - Enable employees to be productive at any place or time, and from a device. Learn about software as a service (SaaS) apps in the cloud and corporate apps on-premises. Azure AD Application Proxy enables access without virtual private networks (VPNs) or demilitarized zones (DMZs):
+ * See, [Remote access to on-premises applications through Azure AD Application Proxy](/articles/active-directory/app-proxy/application-proxy.md)
+ * See, [Plan an Azure AD Application Proxy deployment](../app-proxy/application-proxy-deployment-plan.md)
+* **Seamless single sign-on (Seamless SSO)** - Use Seamless SSO for user sign-in, on corporate devices connected to a corporate network. Users don't need to enter passwords to sign in to Azure AD, and usually don't need to enter usernames. Authorized users access cloud-based apps without extra on-premises components:
+ * See, [Azure Active Directory SSO: Quickstart](../hybrid/how-to-connect-sso-quick-start.md)
+ * See, [Azure Active Directory Seamless SSO: Technical deep dive](/articles/active-directory/hybrid/how-to-connect-sso-how-it-works.md)
+
+## Users
+
+* **User identities** - Learn about automation to create, maintain, and remove user identities in cloud apps, such as Dropbox, Salesforce, ServiceNow, and more.
+ * See, [Plan an automatic user provisioning deployment in Azure Active Directory](../app-provisioning/plan-auto-user-provisioning.md)
+* **Identity governance** - Create identity governance and enhance business processes that rely on identity data. With HR products, such as Workday or Successfactors, manage employee and contingent-staff identity lifecycle with rules. These rules map Joiner-Mover-Leaver processes, such as New Hire, Terminate, Transfer, to IT actions such as Create, Enable, Disable.
+ * See, [Plan cloud HR application to Azure Active Directory user provisioning](../app-provisioning/plan-cloud-hr-provision.md)
+* **Azure AD B2B collaboration** - Improve external-user collaboration with secure access to applications:
+ * See, [B2B collaboration overview](/azure/active-directory/external-identities/what-is-b2b)
+ * See, [Plan an Azure Active Directory B2B collaboration deployment](../fundamentals/secure-external-access-resources.md)
+
+## Governance and reporting
+
+Use the following list to learn about governance and reporting. Items in the list refer to Microsoft Entra.
+
+Learn more: [Secure access for a connected worldΓÇömeet Microsoft Entra](https://www.microsoft.com/en-us/security/blog/?p=114039)
+
+* **Privileged identity management (PIM)** - Manage privileged administrative roles across Azure AD, Azure resources, and other Microsoft Online Services. Use it for just-in-time access, request approval workflows, and fully integrated access reviews to help prevent malicious activities:
+ * See, [Start using Privileged Identity Management](/azure/active-directory/privileged-identity-management/pim-getting-started)
+ * See, [Plan a Privileged Identity Management deployment](../privileged-identity-management/pim-deployment-plan.md)
+* **Reporting and monitoring** - Your Azure AD reporting and monitoring solution design has dependencies and constraints: legal, security, operations, environment, and processes.
+ * See, [Azure Active Directory reporting and monitoring deployment dependencies](../reports-monitoring/plan-monitoring-and-reporting.md)
+* **Access reviews** - Understand and manage access to resources:
+ * See, [What are access reviews?](/articles/active-directory/governance/access-reviews-overview.md)
+ * See, [Plan a Microsoft Entra access reviews deployment](../governance/deploy-access-reviews.md)
+* **Identity governance** - Meet your compliance and risk management objectives for access to critical applications. Learn how to enforce accurate access.
+ * See, [Govern access for applications in your environment](../governance/identity-governance-applications-prepare.md)
+
+Learn more: [Azure governance documentation](/azure/governance/)
-- **R**esponsible for implementing project plan and outcome
+## Best practices for a pilot
-- **A**pproval of project plan and outcome
+Use pilots to test with a small group, before making a change for larger groups, or everyone. Ensure each use case in your organization is tested.
-- **C**ontributor to project plan and outcome
+### Pilot: Phase 1
-- **I**nformed of project plan and outcome
+In your first phase, target IT, usability, and other users who can test and provide feedback. Use this feedback to gain insights on potential issues for support staff, and to develop communications and instructions you send to all users.
-## Best practices for a pilot
-A pilot allows you to test with a small group before turning on a capability for everyone. Ensure that as part of your testing, each use case within your organization is thoroughly tested. It's best to target a specific group of pilot users before rolling this deployment out to your organization as a whole.
+### Pilot: Phase 2
-In your first wave, target IT, usability, and other appropriate users who can test and provide feedback. Use this feedback to further develop the communications and instructions you send to your users, and to give insights into the types of issues your support staff may see.
+Widen the pilot to larger groups of users by using dynamic membership, or by manually adding users to the targeted group(s).
-Widening the rollout to larger groups of users should be carried out by increasing the scope of the group(s) targeted. This can be done through [dynamic group membership](../enterprise-users/groups-dynamic-membership.md), or by manually adding users to the targeted group(s).
+Learn more: [Dynamic membership rules for groups in Azure Active Directory](../enterprise-users/groups-dynamic-membership.md)]
active-directory Azure Active Directory B2c Deployment Plans https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/fundamentals/azure-active-directory-b2c-deployment-plans.md
Title: Azure AD B2C Deployment
-description: Azure Active Directory B2C Deployment guide
-
+ Title: Azure Active Directory B2C deployment plans
+description: Azure Active Directory B2C deployment guide for planning, implementation, and monitoring
Previously updated : 09/13/2022- Last updated : 1/5/2023 - # Azure Active Directory B2C deployment plans
-Azure Active Directory B2C is a scalable identity and access management solution. Its high flexibility to meet your business expectations and smooth integration with existing infrastructure enables further digitalization.
-
-To help organizations understand the business requirements and respect compliance boundaries, a step-by-step approach is recommended throughout an Azure Active Directory (Azure AD) B2C deployment.
-
-| Capability | Description |
-|:--|:|
-| [Plan](#plan-an-azure-ad-b2c-deployment) | Prepare Azure AD B2C projects for deployment. Start by identifying the stakeholders and later defining a project timeline. |
-| [Implement](#implement-an-azure-ad-b2c-deployment) | Start with enabling authentication and authorization and later perform full application onboarding. |
-| [Monitor](#monitor-an-azure-ad-b2c-solution) | Enable logging, auditing, and reporting once an Azure AD B2C solution is in place. |
+Azure Active Directory B2C (Azure AD B2C) is an identity and access management solution that can ease integration with your infrastructure. Use the following guidance to help understand requirements and compliance throughout an Azure AD B2C deployment.
## Plan an Azure AD B2C deployment
-This phase includes the following capabilities:
-
-| Capability | Description |
-|:|:|
-|[Business requirements review](#business-requirements-review) | Assess your organizationΓÇÖs status and expectations |
-| [Stakeholders](#stakeholders) |Build your project team |
-|[Communication](#communication) | Communicate with your team about the project |
-| [Timeline](#timeline) | Reminder of key project milestones |
-
-### Business requirements review
--- Assess the primary reason to switch off existing systems and [move to Azure AD B2C](../../active-directory-b2c/overview.md).--- For a new application, [plan and design](../../active-directory-b2c/best-practices.md#planning-and-design) the Customer Identity Access Management (CIAM) system--- Identify customer's location and [create a tenant in the corresponding datacenter](../../active-directory-b2c/tutorial-create-tenant.md).--- Check the type of applications you have
- - Check the platforms that are currently supported - [MSAL](../develop/msal-overview.md) or [Open source](https://azure.microsoft.com/free/open-source/search/?OCID=AID2200277_SEM_f63bcafc4d5f1d7378bfaa2085b249f9:G:s&ef_id=f63bcafc4d5f1d7378bfaa2085b249f9:G:s&msclkid=f63bcafc4d5f1d7378bfaa2085b249f9).
- - For backend services, use the [client credentials flow](../develop/msal-authentication-flows.md#client-credentials).
--- If you intend to migrate from an existing Identity Provider (IdP)-
- - Consider using the [seamless migration approach](../../active-directory-b2c/user-migration.md#seamless-migration)
- - Learn [how to migrate the existing applications](https://github.com/azure-ad-b2c/user-migration)
- - Ensure the coexistence of multiple solutions at once.
--- Decide the protocols you want to use-
- - If you're currently using Kerberos, NTLM, and WS-Fed, [migrate and refactor your applications](https://www.bing.com/videos/search?q=application+migration+in+azure+ad+b2c&docid=608034225244808069&mid=E21B87D02347A8260128E21B87D02347A8260128&view=detail&FORM=VIRE). Once migrated, your applications can support modern identity protocols such as OAuth 2.0 and OpenID Connect (OIDC) to enable further identity protection and security.
+### Requirements
+
+- Assess the primary reason to turn off systems
+ - See, [What is Azure Active Directory B2C?](../../active-directory-b2c/overview.md)
+- For a new application, plan the design of the Customer Identity Access Management (CIAM) system
+ - See, [Planning and design](../../active-directory-b2c/best-practices.md#planning-and-design)
+- Identify customer locations and create a tenant in the corresponding datacenter
+ - See, [Tutorial: Create an Azure Active Directory B2C tenant](../../active-directory-b2c/tutorial-create-tenant.md)
+- Confirm your application types and supported technologies:
+ - [Overview of the Microsoft Authentication Library (MSAL)](../develop/msal-overview.md)
+ - [Develop with open source languages, frameworks, databases, and tools in Azure](https://azure.microsoft.com/free/open-source/search/?OCID=AID2200277_SEM_f63bcafc4d5f1d7378bfaa2085b249f9:G:s&ef_id=f63bcafc4d5f1d7378bfaa2085b249f9:G:s&msclkid=f63bcafc4d5f1d7378bfaa2085b249f9).
+ - For back-end services, use the [client credentials](../develop/msal-authentication-flows.md#client-credentials) flow
+- To migrate from an identity provider (IdP):
+ - [Seamless migration](../../active-directory-b2c/user-migration.md#seamless-migration)
+ - Go to [azure-ad-b2c-user-migration](https://github.com/azure-ad-b2c/user-migration)
+- Select protocols
+ - If you use Kerberos, Microsoft Windows NT LAN Manager (NTLM), and Web Services Federation (WS-Fed), see the video, [Azure Active Directory: Application and identity migration to Azure AD B2C](https://www.bing.com/videos/search?q=application+migration+in+azure+ad+b2c&docid=608034225244808069&mid=E21B87D02347A8260128E21B87D02347A8260128&view=detail&FORM=VIRE)
+
+After migration, your applications can support modern identity protocols such as OAuth 2.0 and OpenID Connect (OIDC).
### Stakeholders
-When technology projects fail, it's typically because of mismatched expectations on impact, outcomes, and responsibilities. To avoid these pitfalls, [ensure that you're engaging the right
-stakeholders](./active-directory-deployment-plans.md#include-the-right-stakeholders) and that stakeholders understand their roles.
+Technology project success depends on managing expectations, outcomes, and responsibilities.
-- Identify the primary architect, project manager, and owner for the application.
+- Identify the application architect, technical program manager, and owner
+- Create a distribution list (DL) to communicate with the Microsoft account or engineering teams
+ - Ask questions, get answers, and receive notifications
+- Identify a partner or resource outside your organization to support you
-- Consider providing a Distribution List (DL). Using this DL, you can communicate product issues with the Microsoft account team or engineering. You can ask questions, and receive important notifications.
+Learn more: [Include the right stakeholders](./active-directory-deployment-plans.md)
-- Identify a partner or resource outside of your organization who can support you.
+### Communications
-### Communication
+Communicate proactively and regularly with your users about pending and current changes. Inform them about how the experience changes, when it changes, and provide a contact for support.
-Communication is critical to the success of any new service. Proactively communicate to your users about the change. Timely inform them about how their experience will change, when it will change, and how to gain support if they experience issues.
+### Timelines
-### Timeline
+Help set realistic expectations and make contingency plans to meet key milestones:
-Define clear expectations and follow up plans to meet key milestones:
--- Expected pilot date--- Expected launch date--- Any dates that may affect project delivery date
+- Pilot date
+- Launch date
+- Dates that affect delivery
+- Dependencies
## Implement an Azure AD B2C deployment
-This phase includes the following capabilities:
-
-| Capability | Description |
-|:-|:--|
-| [Deploy authentication and authorization](#deploy-authentication-and-authorization) | Understand the [authentication and authorization](../develop/authentication-vs-authorization.md) scenarios |
-| [Deploy applications and user identities](#deploy-applications-and-user-identities) | Plan to deploy client application and migrate user identities |
-| [Client application onboarding and deliverables](#client-application-onboarding-and-deliverables) | Onboard the client application and test the solution |
-| [Security](#security) | Enhance the security of your Identity solution |
-|[Compliance](#compliance) | Address regulatory requirements |
-|[User experience](#user-experience) | Enable a user-friendly service |
+* **Deploy applications and user identities** - Deploy client application and migrate user identities
+* **Client application onboarding and deliverables** - Onboard the client application and test the solution
+* **Security** - Enhance the identity solution security
+* **Compliance** - Address regulatory requirements
+* **User experience** - Enable a user-friendly service
### Deploy authentication and authorization -- Start with [setting up an Azure AD B2C tenant](../../active-directory-b2c/tutorial-create-tenant.md).--- For business driven authorization, use the [Azure AD B2C Identity Experience Framework (IEF) sample user journeys](https://github.com/azure-ad-b2c/samples#local-account-policy-enhancements)--- Try [Open policy agent](https://www.openpolicyagent.org/).-
-Learn more about Azure AD B2C in [this developer course](https://aka.ms/learnaadb2c).
+* Before your applications interact with Azure AD B2C, register them in a tenant you manage
+ * See, [Tutorial: Create an Azure Active Directory B2C tenant](../../active-directory-b2c/tutorial-create-tenant.md)
+* For authorization, use the Identity Experience Framework (IEF) sample user journeys
+ * See, [Azure Active Directory B2C: Custom CIAM User Journeys](https://github.com/azure-ad-b2c/samples#local-account-policy-enhancements)
+* Use policy-based control for cloud-native environments
+ * Go to openpolicyagent.org to learn about [Open Policy Agent](https://www.openpolicyagent.org/) (OPA)
-Follow this sample checklist for more guidance:
+Learn more with the Microsoft Identity PDF, [Gaining expertise with Azure AD B2C](https://aka.ms/learnaadb2c), a course for developers.
-- Identify the different personas that need access to your application.
+### Checklist for personas, permissions, delegation, and calls
-- Define how you manage permissions and entitlements in your existing system today and how to plan for the future.--- Check if you have a permission store and if there any permissions that need to be added to the directory.--- If you need delegated administration define how to solve it. For example, your customers' customers management.--- Check if your application calls directly an API Manager (APIM). There may be a need to call from the IdP before issuing a token to the application.
+* Identify the personas that access to your application
+* Define how you manage system permissions and entitlements today, and in the future
+* Confirm you have a permission store and if there are permissions to add to the directory
+* Define how you manage delegated administration
+ * For example, your customers' customers management
+* Verify your application calls an API Manager (APIM)
+ * There might be a need to call from the IdP before the application is issued a token
### Deploy applications and user identities
-All Azure AD B2C projects start with one or more client applications, which may have different business goals.
-
-1. [Create or configure client applications](../../active-directory-b2c/app-registrations-training-guide.md). Refer to these [code samples](../../active-directory-b2c/integrate-with-app-code-samples.md) for implementation.
-
-2. Next, setup your user journey based on built-in or custom user flows. [Learn when to use user flows vs. custom policies](../../active-directory-b2c/user-flow-overview.md#comparing-user-flows-and-custom-policies).
-
-3. Setup IdPs based on your business need. [Learn how to add Azure Active Directory B2C as an IdP](../../active-directory-b2c/add-identity-provider.md).
-
-4. Migrate your users. [Learn about user migration approaches](../../active-directory-b2c/user-migration.md). Refer to [Azure AD B2C IEF sample user journeys](https://github.com/azure-ad-b2c/samples) for advanced scenarios.
-
-Consider this sample checklist as you **deploy your applications**:
--- Check the number of applications that are in scope for the CIAM deployment.--- Check the type of applications that are in use. For example, traditional web applications, APIs, Single page apps (SPA), or Native mobile applications.--- Check the kind of authentication that is in place. For example, forms based, federated with SAML, or federated with OIDC.
- - If OIDC, check the response type - code or id_token.
--- Check if all the frontend and backend applications are hosted in on-premises, cloud, or hybrid-cloud.--- Check the platforms/languages used such as, [ASP.NET](../../active-directory-b2c/quickstart-web-app-dotnet.md), Java, and Node.js.--- Check where the current user attributes are stored. It could be Lightweight Directory Access Protocol (LDAP) or databases.-
-Consider this sample checklist as you **deploy user identities**:
--- Check the number of users accessing the applications.--- Check the type of IdPs that are needed. For example, Facebook, local account, and [Active Directory Federation Services (AD FS)](/windows-server/identity/active-directory-federation-services).--- Outline the claim schema that is required from your application, [Azure AD B2C](../../active-directory-b2c/claimsschema.md), and your IdPs if applicable.--- Outline the information that is required to capture during a [sign-in/sign-up flow](../../active-directory-b2c/add-sign-up-and-sign-in-policy.md?pivots=b2c-user-flow).
+Azure AD B2C projects start with one or more client applications.
+
+* [The new App registrations experience for Azure Active Directory B2C](../../active-directory-b2c/app-registrations-training-guide.md)
+ * Refer to [Azure Active Directory B2C code samples](../../active-directory-b2c/integrate-with-app-code-samples.md) for implementation
+* Set up your user journey based on custom user flows
+ * [Comparing user flows and custom policies](../../active-directory-b2c/user-flow-overview.md#comparing-user-flows-and-custom-policies)
+ * [Add an identity provider to your Azure Active Directory B2C tenant](../../active-directory-b2c/add-identity-provider.md)
+ * [Migrate users to Azure AD B2C](../../active-directory-b2c/user-migration.md)
+ * [Azure Active Directory B2C: Custom CIAM User Journeys](https://github.com/azure-ad-b2c/samples) for advanced scenarios
+
+### Application deployment checklist
+
+* Applications included in the CIAM deployment
+* Applications in use
+ * For example, web applications, APIs, single-page apps (SPAs), or native mobile applications
+* Authentication in use:
+ * For example, forms federated with SAML, or federated with OIDC
+ * If OIDC, confirm the response type: code or id_token
+* Determine where front-end and back-end applications are hosted: on-premises, cloud, or hybrid-cloud
+* Confirm the platforms or languages in use:
+ * For example ASP.NET, Java, and Node.js
+ * See, [Quickstart: Set up sign in for an ASP.NET application using Azure AD B2C](../../active-directory-b2c/quickstart-web-app-dotnet.md)
+* Verify where user attributes are stored
+ * For example, Lightweight Directory Access Protocol (LDAP) or databases
+
+### User identity deployment checklist
+
+* Confirm the number of users accessing applications
+* Determine the IdP types needed:
+ * For example, Facebook, local account, and Active Directory Federation Services (AD FS)
+ * See, [Active Directory Federation Services](/windows-server/identity/active-directory-federation-services)
+* Outline the claim schema required from your application, Azure AD B2C, and IdPs if applicable
+ * See, [ClaimsSchema](../../active-directory-b2c/claimsschema.md)
+* Determine the information to collect during sign-in and sign-up
+ * [Set up a sign-up and sign-in flow in Azure Active Directory B2C](../../active-directory-b2c/add-sign-up-and-sign-in-policy.md?pivots=b2c-user-flow)
### Client application onboarding and deliverables
-Consider this sample checklist while you **onboard an application**:
-
-| Task | Description |
-|:--|:-|
-| Define the target group of the application | Check if this application is an end customer application, business customer application, or a digital service. Check if there is a need for employee login. |
-| Identify the business value behind an application | Understand the full business case behind an application to find the best fit of Azure AD B2C solution and integration with further client applications.|
-| Check the identity groups you have | Cluster identities in different types of groups with different types of requirements, such as **Business to Customer** (B2C) for end customers and business customers, **Business to Business** (B2B) for partners and suppliers, **Business to Employee** (B2E) for your employees and external employees, **Business to Machine** (B2M) for IoT device logins and service accounts.|
-| Check the IdP you need for your business needs and processes | Azure AD B2C [supports several types of IdPs](../../active-directory-b2c/add-identity-provider.md#select-an-identity-provider) and depending on the use case the right IdP should be chosen. For example, for a Customer to Customer mobile application a fast and easy user login is required. In another use case, for a Business to Customer with digital services additional compliance requirements are necessary. The user may need to log in with their business identity such as E-mail login. |
-| Check the regulatory constraints | Check if there is any reason to have remote profiles or specific privacy policies. |
-| Design the sign-in and sign-up flow | Decide whether an email verification or email verification inside sign-ups will be needed. First check-out process such as Shop systems or [Azure AD Multi-Factor Authentication (MFA)](../authentication/concept-mfa-howitworks.md) is needed or not. Watch [this video](https://www.youtube.com/watch?v=c8rN1ZaR7wk&list=PL3ZTgFEc7LyuJ8YRSGXBUVItCPnQz3YX0&index=4). |
-| Check the type of application and authentication protocol used or that will be implemented | Information exchange about the implementation of client application such as Web application, SPA, or Native application. Authentication protocols for client application and Azure AD B2C could be OAuth, OIDC, and SAML. Watch [this video](https://www.youtube.com/watch?v=r2TIVBCm7v4&list=PL3ZTgFEc7LyuJ8YRSGXBUVItCPnQz3YX0&index=9)|
-| Plan user migration | Discuss the possibilities of [user migration with Azure AD B2C](../../active-directory-b2c/user-migration.md). There are several scenarios possible such as Just In Times (JIT) migration, and bulk import/export. Watch [this video](https://www.youtube.com/watch?v=lCWR6PGUgz0&list=PL3ZTgFEc7LyuJ8YRSGXBUVItCPnQz3YX0&index=2). You can also consider using [Microsoft Graph API](https://www.youtube.com/watch?v=9BRXBtkBzL4&list=PL3ZTgFEc7LyuJ8YRSGXBUVItCPnQz3YX0&index=3) for user migration.|
-
-Consider this sample checklist while you **deliver**.
-
-| Capability | Description |
-|:--|:-|
-|Protocol information| Gather the base path, policies, metadata URL of both variants. Depending on the client application, specify the attributes such as sample login, client application ID, secrets, and redirects.|
-| Application samples | Refer to the provided [sample codes](../../active-directory-b2c/integrate-with-app-code-samples.md). |
-|Pen testing | Before the tests, inform your operations team about the pen tests and then test all user flows including the OAuth implementation. Learn more about [Penetration testing](../../security/fundamentals/pen-testing.md) and the [Microsoft Cloud unified penetration testing rules of engagement](https://www.microsoft.com/msrc/pentest-rules-of-engagement).
-| Unit testing | Perform unit testing and generate tokens [using Resource owner password credential (ROPC) flows](../develop/v2-oauth-ropc.md). If you hit the Azure AD B2C token limit, [contact the support team](../../active-directory-b2c/support-options.md). Reuse tokens to reduce investigation efforts on your infrastructure. [Setup a ROPC flow](../../active-directory-b2c/add-ropc-policy.md?pivots=b2c-user-flow&tabs=app-reg-ga).|
-| Load testing | Expect reaching Azure AD B2C [service limits](../../active-directory-b2c/service-limits.md). Evaluate the expected number of authentications per month your service will have. Evaluate the expected number of average user logins per month. Assess the expected high load traffic durations and business reason such as holidays, migrations, and events. Evaluate the expected peak sign-up rate, for example, number of requests per second. Evaluate the expected peak traffic rate with MFA, for example, requests per second. Evaluate the expected traffic geographic distribution and their peak rates.
+Use the following checklist for onboarding an application
+
+|Area|Description|
+|||
+|Application target user group | Select among end customers, business customers, or a digital service. </br>Determine a need for employee sign-in.|
+|Application business value| Understand the business need and/or goal to determine the best Azure AD B2C solution and integration with other client applications.|
+|Your identity groups| Cluster identities into groups with requirements, such as business-to-consumer (B2C), business-to-business (B2B) business-to-employee (B2E), and business-to-machine (B2M) for IoT device sign-in and service accounts.|
+|Identity provider (IdP)| See, [Select an identity provider](../../active-directory-b2c/add-identity-provider.md#select-an-identity-provider). For example, for a customer-to-customer (C2C) mobile app use an easy sign-in process. </br>B2C with digital services has compliance requirements. </br>Consider email sign-in. |
+|Regulatory constraints | Determine a need for remote profiles or privacy policies. |
+|Sign-in and sign-up flow | Confirm email verification or email verification during sign-up. </br>For check-out processes, see [How it works: Azure AD Multi-Factor Authentication](../authentication/concept-mfa-howitworks.md). </br>See the video, [Azure AD: Azure AD B2C user migration using Microsoft Graph API](https://www.youtube.com/watch?v=c8rN1ZaR7wk&list=PL3ZTgFEc7LyuJ8YRSGXBUVItCPnQz3YX0&index=4). |
+|Application and authentication protocol| Implement client applications such as Web application, single-page application (SPA), or native. </br>Authentication protocols for client application and Azure AD B2C: OAuth, OIDC, and SAML. </br>See the video, [Azure AD: Protecting Web APIs with Azure AD](https://www.youtube.com/watch?v=r2TIVBCm7v4&list=PL3ZTgFEc7LyuJ8YRSGXBUVItCPnQz3YX0&index=9).|
+| User migration | Confirm if you'll [migrate users to Azure AD B2C](../../active-directory-b2c/user-migration.md): Just-in-time (JIT) migration and bulk import/export. </br>See the video, [Azure Active Directory: Azure AD B2C user migration strategies](https://www.youtube.com/watch?v=lCWR6PGUgz0&list=PL3ZTgFEc7LyuJ8YRSGXBUVItCPnQz3YX0&index=2).|
+
+Use the following checklist for delivery.
+
+|Area| Description|
+|||
+|Protocol information| Gather the base path, policies, and metadata URL of both variants. </br>Specify attributes such as sample sign-in, client application ID, secrets, and redirects.|
+|Application samples | See, [Azure Active Directory B2C code samples](../../active-directory-b2c/integrate-with-app-code-samples.md).|
+|Penetration testing | Inform your operations team about pen tests, then test user flows including the OAuth implementation. </br>See, [Penetration testing](../../security/fundamentals/pen-testing.md) and [Penetration testing rules of engagement](https://www.microsoft.com/msrc/pentest-rules-of-engagement).
+| Unit testing | Unit test and generate tokens. </br>See, [Microsoft identity platform and OAuth 2.0 Resource Owner Password Credentials](../develop/v2-oauth-ropc.md). </br>If you reach the Azure AD B2C token limit, see [Azure AD B2C: File Support Requests](../../active-directory-b2c/support-options.md). </br>Reuse tokens to reduce investigation on your infrastructure. </br>[Set up a resource owner password credentials flow in Azure Active Directory B2C](../../active-directory-b2c/add-ropc-policy.md?pivots=b2c-user-flow&tabs=app-reg-ga).|
+| Load testing | Learn about [Azure AD B2C service limits and restrictions](../../active-directory-b2c/service-limits.md). </br>Calculate the expected authentications and user sign-ins per month. </br>Assess high load traffic durations and business reasons: holiday, migration, and event. </br>Determine expected peak rates for sign-up, traffic, and geographic distribution, for example per second.
### Security
-Consider this sample checklist to enhance the security of your application depending on your business needs:
--- Check if strong authentication method such as [MFA](../authentication/concept-mfa-howitworks.md) is required. For users who trigger high value transactions or other risk events its suggested to use MFA. For example, for banking and finance applications, online shops - first checkout process.--- Check if MFA is required, [check the methods available to do MFA](../authentication/concept-authentication-methods.md) such as SMS/Phone, email, and third-party services.--- Check if any anti-bot mechanism is in use today with your applications.
+Use the following checklist to enhance application security.
-- Assess the risk of attempts to create fraudulent accounts and log-ins. Use [Microsoft Dynamics 365 Fraud Protection assessment](../../active-directory-b2c/partner-dynamics-365-fraud-protection.md) to block or challenge suspicious attempts to create new fake accounts or to compromise existing accounts.
+* Authentication method, such as multi-factor authentication (MFA):
+ * MFA is recommended for users that trigger high-value transactions or other risk events. For example, banking, finance, and check-out processes.
+ * See, [What authentication and verification methods are available in Azure AD?](../authentication/concept-authentication-methods.md)
+* Confirm use of anti-bot mechanisms
+* Assess the risk of attempts to create a fraudulent account or sign-in
+ * See, [Tutorial: Configure Microsoft Dynamics 365 Fraud Protection with Azure Active Directory B2C](../../active-directory-b2c/partner-dynamics-365-fraud-protection.md)
+* Confirm needed conditional postures as part of sign-in or sign-up
-- Check for any special conditional postures that need to be applied as part of sign-in or sign-up for accounts with your application.
+#### Conditional Access and identity protection
->[!NOTE]
->You can use [Conditional Access rules](../conditional-access/overview.md) to adjust the difference between user experience and security based on your business goals.
-
-For more information, see [Identity Protection and Conditional Access in Azure AD B2C](../../active-directory-b2c/conditional-access-identity-protection-overview.md).
+* The modern security perimeter now extends beyond an organization's network. The perimeter includes user and device identity.
+ * See, [What is Conditional Access?](../conditional-access/overview.md)
+* Enhance the security of Azure AD B2C with Azure AD identity protection
+ * See, [Identity Protection and Conditional Access in Azure AD B2C](../../active-directory-b2c/conditional-access-identity-protection-overview.md)
### Compliance
-To satisfy certain regulatory requirements you may consider using vNets, IP restrictions, Web Application Firewall (WAF), and similar services to enhance the security of your backend systems.
-
-To address basic compliance requirements, consider:
+To help comply with regulatory requirements and enhance back-end system security you can use virtual networks (VNets), IP restrictions, Web Application Firewall (WAF), etc. Consider the following requirements:
-- The specific regulatory compliance requirements, for example, PCI-DSS that you need to support.--- Check if it's required to store data into a separate database store. If so, check if this information must never be written into the directory.
+* Your regulatory compliance requirements
+ * For example, Payment Card Industry Data Security Standard (PCI-DSS)
+ * Go to pcisecuritystandards.org to learn more about the [PCI Security Standards Council](https://www.pcisecuritystandards.org/)
+* Data storage into a separate database store
+ * Determine if this information can't be written into the directory
### User experience
-Consider the sample checklist to define the user experience (UX) requirements:
--- Identify the required integrations to [extend CIAM capabilities and build seamless end-user experiences](../../active-directory-b2c/partner-gallery.md).--- Provide screenshots and user stories to show the end-user experience for the existing application. For example, provide screenshots for sign-in, sign-up, combined sign-up sign-in (SUSI), profile edit, and password reset.--- Look for existing hints passed through using queryString parameters in your current CIAM solution.--- If you expect high UX customization such as pixel to pixel, you may need a front-end developer to help you.
+Use the following checklist to help define user experience requirements.
-- Azure AD B2C provides capabilities for customizing HTML and CSS, however, it has additional requirements for [JavaScript](../../active-directory-b2c/javascript-and-page-layout.md?pivots=b2c-custom-policy#guidelines-for-using-javascript).
+* Identify integrations to extend CIAM capabilities and build seamless end-user experiences
+ * [Azure Active Directory B2C ISV partners](../../active-directory-b2c/partner-gallery.md)
+* Use screenshots and user stories to show the application end-user experience
+ * For example, screenshots of sign-in, sign-up, sign-up/sign-in (SUSI), profile edit, and password reset
+* Look for hints passed through by using queryString parameters in your CIAM solution
+* For high user-experience customization, consider a using front-end developer
+* In Azure AD B2C, you can customize HTML and CSS
+ * See, [Guidelines for using JavaScript](../../active-directory-b2c/javascript-and-page-layout.md?pivots=b2c-custom-policy#guidelines-for-using-javascript)
+* Implement an embedded experience by using iframe support:
+ * See, [Embedded sign-up or sign-in experience](../../active-directory-b2c/embedded-login.md?pivots=b2c-custom-policy)
+ * For a single-page application, use a second sign-in HTML page that loads into the `<iframe>` element
-- An embedded experience can be implemented [using iframe support](../../active-directory-b2c/embedded-login.md?pivots=b2c-custom-policy). For a single-page application, you'll also need a second "sign-in" HTML page that loads into the `<iframe>` element.
+## Monitoring auditing, and logging
-## Monitor an Azure AD B2C solution
+Use the following checklist for monitoring, auditing, and logging.
-This phase includes the following capabilities:
+* Monitoring
+ * [Monitor Azure AD B2C with Azure Monitor](../../active-directory-b2c/azure-monitor.md)
+ * See the video [Azure Active Directory: Monitoring and reporting Azure AD B2C using Azure Monitor](https://www.youtube.com/watch?v=Mu9GQy-CbXI&list=PL3ZTgFEc7LyuJ8YRSGXBUVItCPnQz3YX0&index=1)
+* Auditing and logging
+ * [Accessing Azure AD B2C audit logs](../../active-directory-b2c/view-audit-logs.md)
-| Capability | Description |
-|:|:-|
-| Monitoring |[Monitor Azure AD B2C with Azure Monitor](../../active-directory-b2c/azure-monitor.md). Watch [this video](https://www.youtube.com/watch?v=Mu9GQy-CbXI&list=PL3ZTgFEc7LyuJ8YRSGXBUVItCPnQz3YX0&index=1)|
-| Auditing and Logging | [Access and review audit logs](../../active-directory-b2c/view-audit-logs.md)
-
-## More information
-
-To accelerate Azure AD B2C deployments and monitor the service at scale, see these articles:
--- [Manage Azure AD B2C with Microsoft Graph](../../active-directory-b2c/microsoft-graph-get-started.md)--- [Manage Azure AD B2C user accounts with Microsoft Graph](../../active-directory-b2c/microsoft-graph-operations.md)
+## Resources
+- [Register a Microsoft Graph application](../../active-directory-b2c/microsoft-graph-get-started.md)
+- [Manage Azure AD B2C with Microsoft Graph](../../active-directory-b2c/microsoft-graph-operations.md)
- [Deploy custom policies with Azure Pipelines](../../active-directory-b2c/deploy-custom-policies-devops.md)- - [Manage Azure AD B2C custom policies with Azure PowerShell](../../active-directory-b2c/manage-custom-policies-powershell.md) -- [Monitor Azure AD B2C with Azure Monitor](../../active-directory-b2c/azure-monitor.md)- ## Next steps -- [Azure AD B2C best practices](../../active-directory-b2c/best-practices.md)--- [Azure AD B2C service limits](../../active-directory-b2c/service-limits.md)
+[Recommendations and best practices for Azure Active Directory B2C](../../active-directory-b2c/best-practices.md)
active-directory Azure Ad Data Residency https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/fundamentals/azure-ad-data-residency.md
Previously updated : 12/5/2022 Last updated : 01/09/2023 + # Azure Active Directory and data residency
-Azure AD is an Identity as a Service (IDaaS) solution that stores and manages identity and access data in the cloud. You can use the data to enable and manage access to cloud services, achieve mobility scenarios, and secure your organization. An instance of the Azure AD service, called a [tenant](/azure/active-directory/develop/developer-glossary#tenant), is an isolated set of directory object data that the customer provisions and owns.
+Azure AD is an Identity as a Service (IDaaS) solution that stores and manages identity and access data in the cloud. You can use the data to enable and manage access to cloud services, achieve mobility scenarios, and secure your organization. An instance of the Azure AD service, called a [tenant](/azure/active-directory/develop/developer-glossary#tenant), is an isolated set of directory object data that the customer provisions and owns.
## Core Store
-Update or retrieval data operations in the Azure AD Core Store relate to a single tenant based on the userΓÇÖs security token, which achieves tenant isolation. The Core Store is made up of tenants stored in scale units, each of which contains multiple tenants. Azure AD replicates each scale unit in the physical data centers of a logical region for resiliency and performance.
+The Core Store is made up of tenants stored in scale units, each of which contains multiple tenants. Update or retrieval data operations in the Azure AD Core Store relate to a single tenant, based on the userΓÇÖs security token, which achieves tenant isolation. Scale units are assigned to a geo-location. Each geo-location uses two or more Azure regions to store the data. In each Azure region, a scale unit data is replicated in the physical data centers for resiliency and performance.
Learn more: [Azure Active Directory Core Store Scale Units](https://www.youtube.com/watch?v=OcKO44GtHh8)
-Currently Azure AD has the following regions:
+Azure AD is available in the following clouds
-* North America
-* Europe, Middle East, and Africa (EMEA)
-* Australia
+* Public
* China
-* Japan
-* [United States government](https://azure.microsoft.com/global-infrastructure/government/)
-* Worldwide
+* US government
-Azure AD handles directory data based on usability, performance, residency and/or other requirements based on geography. The term residency indicates Microsoft provides assurance the data isnΓÇÖt persisted outside the geography.
+In the public cloud, you're prompted to select a location at the time of tenant creation (for example, signing up for Office 365 or Azure, or creating more Azure AD instances through the Azure portal). Azure AD maps the selection to a geo-location and a single scale unit in it. Tenant location canΓÇÖt be changed after itΓÇÖs set.
-Azure AD replicates each tenant through its scale unit, across data centers, based on the following criteria:
+The location selected during tenant creation will map to one of the following geo-locations:
-* Directory data stored in data centers closest to the tenant-residency location, to reduce latency and provide fast user sign-in times
-* Directory data stored in geographically isolated data centers to assure availability during unforeseen single-datacenter, catastrophic events
-* Compliance with data residency, or other requirements, for specific customers and countries/regions or geographies
+* Australia
+* Asia/Pacific
+* Europe, Middle East, and Africa (EMEA)
+* Japan
+* North America
+* Worldwide
+
+Azure AD handles Core Store data based on usability, performance, residency and/or other requirements based on geo-location. The term residency indicates Microsoft provides assurance the data isnΓÇÖt persisted outside the geo-location.
-During tenant creation (for example, signing up for Office 365 or Azure, or creating more Azure AD instances through the Azure portal) you select a country/region as the primary location. Azure AD maps the selection to a logical region and a single scale unit in it. Tenant location canΓÇÖt be changed after itΓÇÖs set.
+Azure AD replicates each tenant through its scale unit, across data centers, based on the following criteria:
+
+* Azure AD Core Store data, stored in data centers closest to the tenant-residency location, to reduce latency and provide fast user sign-in times
+* Azure AD Core Store data stored in geographically isolated data centers to assure availability during unforeseen single-datacenter, catastrophic events
+* Compliance with data residency, or other requirements, for specific customers and geo-locations
## Azure AD cloud solution models
-Use the following table to see Azure AD cloud solution models based on infrastructure, data location, and operation sovereignty.
+Use the following table to see Azure AD cloud solution models based on infrastructure, data location, and operational sovereignty.
-|Model|Model regions|Data location|Operations personnel|Customer support|Put a tenant in this model|
-|||||||
-|Regional (2)|North America, EMEA, Japan|At rest, in the target region. Exceptions by service or feature|Operated by Microsoft. Microsoft datacenter personnel must pass a background check.|Microsoft, globally|Create the tenant in the sign-up experience. Choose the country/region in the residency.|
-|Worldwide|Worldwide||Operated by Microsoft. Microsoft datacenter personnel must pass a background check.|Microsoft, globally|Create the tenant in the sign-up experience. Choose a country/region without a regional model.|
-|Sovereign or national clouds|US government, China|At rest, in the target country or region. No exceptions.|Operated by a data custodian (1). Personnel are screened according to requirements.|Microsoft, country or region|Each national cloud instance has a sign-up experience.
+|Model|Locations|Data location|Operations personnel|Put a tenant in this model|
+||||||
+|Public geo located|North America, EMEA, Japan, Asia/Pacific|At rest, in the target location. Exceptions by service or feature|Operated by Microsoft. Microsoft datacenter personnel must pass a background check.|Create the tenant in the sign-up experience. Choose the location for data residency.|
+|Public worldwide|Worldwide|All locations|Operated by Microsoft. Microsoft datacenter personnel must pass a background check.|Tenant creation available via official support channel and subject to Microsoft discretion.|
+|Sovereign or national clouds|US government, China|At rest, in the target location. No exceptions.|Operated by a data custodian (1). Personnel are screened according to requirements.|Each national cloud instance has a sign-up experience.|
**Table references**:
-(1) **Data custodians**: Data centers in the Worldwide region are operated by Microsoft. In China, Azure AD is operated through a partnership with [21Vianet](/microsoft-365/admin/services-in-china/services-in-china?redirectSourcePath=%252fen-us%252farticle%252fLearn-about-Office-365-operated-by-21Vianet-a8ab5061-3346-4da0-bb7c-5260822b53ae&view=o365-21vianet&viewFallbackFrom=o365-worldwide&preserve-view=true).
-(2) **Authentication data**: Tenants outside the national clouds have authentication information at rest in the continental United States.
+(1) **Data custodians**: Data centers in the US government cloud are operated by Microsoft. In China, Azure AD is operated through a partnership with [21Vianet](/microsoft-365/admin/services-in-china/services-in-china?redirectSourcePath=%252fen-us%252farticle%252fLearn-about-Office-365-operated-by-21Vianet-a8ab5061-3346-4da0-bb7c-5260822b53ae&view=o365-21vianet&viewFallbackFrom=o365-worldwide&preserve-view=true).
Learn more:
+* [Customer data storage and processing for European customers in Azure AD](/azure/active-directory/fundamentals/active-directory-data-storage-eu)
* Power BI: [Azure Active Directory ΓÇô Where is your data located?](https://aka.ms/aaddatamap) * [What is the Azure Active Directory architecture?](https://aka.ms/aadarch) * [Find the Azure geography that meets your needs](https://azure.microsoft.com/overview/datacenters/how-to-choose/)
Learn more:
## Data residency across Azure AD components
-In addition to authentication service data, Azure AD components and service data are stored on servers in the Azure AD instanceΓÇÖs region.
- Learn more: [Azure Active Directory, Product overview](https://www.microsoft.com/cloud-platform/azure-active-directory-features) > [!NOTE]
Learn more: [Azure Active Directory, Product overview](https://www.microsoft.com
### Azure AD components and data storage location
-Data storage for Azure AD components includes authentication, identity, MFA, and others. In the following table, data includes End User Identifiable Information (EUII) and Customer Content (CC).
- |Azure AD component|Description|Data storage location| ||||
-|Azure AD Authentication Service|This service is stateless. The data for authentication is in the Azure AD Core Store. It has no directory data. Azure AD Authentication Service generates log data in Azure storage, and in the data center where the service instance runs. When users attempt to authenticate using Azure AD, theyΓÇÖre routed to an instance in the geographically nearest data center that is part of its Azure AD logical region. |In region|
-|Azure AD Identity and Access Management (IAM) Services|**User and management experiences**: The Azure AD management experience is stateless and has no directory data. It generates log and usage data stored in Azure Tables storage. The user experience is like the Azure portal. <br>**Identity management business logic and reporting services**: These services have locally cached data storage for groups and users. The services generate log and usage data that goes to Azure Tables storage, Azure SQL, and in Microsoft Elastic Search reporting services. |In region|
+|Azure AD Authentication Service|This service is stateless. The data for authentication is in the Azure AD Core Store. It has no directory data. Azure AD Authentication Service generates log data in Azure storage, and in the data center where the service instance runs. When users attempt to authenticate using Azure AD, theyΓÇÖre routed to an instance in the geographically nearest data center that is part of its Azure AD logical region. |In geo location|
+|Azure AD Identity and Access Management (IAM) Services|**User and management experiences**: The Azure AD management experience is stateless and has no directory data. It generates log and usage data stored in Azure Tables storage. The user experience is like the Azure portal. <br>**Identity management business logic and reporting services**: These services have locally cached data storage for groups and users. The services generate log and usage data that goes to Azure Tables storage, Azure SQL, and in Microsoft Elastic Search reporting services. |In geo location|
|Azure AD Multi-Factor Authentication (MFA)|For details about MFA-operations data storage and retention, see [Data residency and customer data for Azure AD multifactor authentication](/azure/active-directory/authentication/concept-mfa-data-residency). Azure AD MFA logs the User Principal Name (UPN), voice-call telephone numbers, and SMS challenges. For challenges to mobile app modes, the service logs the UPN and a unique device token. Data centers in the North America region store Azure AD MFA, and the logs it creates.|North America|
-|Azure AD Domain Services|See regions where Azure AD Domain Services is published on [Products available by region](https://azure.microsoft.com/regions/services/). The service holds system metadata globally in Azure Tables, and it contains no personal data.|In region|
-|Azure AD Connect Health|Azure AD Connect Health generates alerts and reports in Azure Tables storage and blob storage.|In region|
-|Azure AD dynamic membership for groups, Azure AD self-service group management|Azure Tables storage holds dynamic membership rule definitions.|In region|
-|Azure AD Application Proxy|Azure AD Application Proxy stores metadata about the tenant, connector machines, and configuration data in Azure SQL.|In region|
+|Azure AD Domain Services|See regions where Azure AD Domain Services is published on [Products available by region](https://azure.microsoft.com/regions/services/). The service holds system metadata globally in Azure Tables, and it contains no personal data.|In geo location|
+|Azure AD Connect Health|Azure AD Connect Health generates alerts and reports in Azure Tables storage and blob storage.|In geo location|
+|Azure AD dynamic membership for groups, Azure AD self-service group management|Azure Tables storage holds dynamic membership rule definitions.|In geo location|
+|Azure AD Application Proxy|Azure AD Application Proxy stores metadata about the tenant, connector machines, and configuration data in Azure SQL.|In geo location|
|Azure AD password reset |Azure AD password reset is a back-end service using Redis Cache to track session state. To learn more, go to redis.com to see [Introduction to Redis](https://redis.io/docs/about/).|See, Intro to Redis link in center column.|
-|Azure AD password writeback in Azure AD Connect|During initial configuration, Azure AD Connect generates an asymmetric keypair, using the RivestΓÇôShamirΓÇôAdleman (RSA) cryptosystem. It then sends the public key to the self-service password reset (SSPR) cloud service, which performs two operations: </br></br>1. Creates two Azure Service Bus relays for the Azure AD Connect on-premises service to communicate securely with the SSPR service </br> 2. Generates an Advanced Encryption Standard (AES) key, K1 </br></br> The Azure Service Bus relay locations, corresponding listener keys, and a copy of the AES key (K1) goes to Azure AD Connect in the response. Future communications between SSPR and Azure AD Connect occur over the new ServiceBus channel and are encrypted using SSL. </br> New password resets, submitted during operation, are encrypted with the RSA public key generated by the client during onboarding. The private key on the Azure AD Connect machine decrypts them, which prevents pipeline subsystems from accessing the plaintext password. </br> The AES key encrypts the message payload (encrypted passwords, more data, and metadata), which prevents malicious ServiceBus attackers from tampering with the payload, even with full access to the internal ServiceBus channel. </br> For password writeback, Azure AD Connect need keys and data: </br></br> - The AES key (K1) that encrypts the reset payload, or change requests from the SSPR service to Azure AD Connect, via the ServiceBus pipeline </br> - The private key, from the asymmetric key pair that decrypts the passwords, in reset or change request payloads </br> - The ServiceBus listener keys </br></br> The AES key (K1) and the asymmetric keypair rotate a minimum of every 180 days, a duration you can change during certain onboarding or offboarding configuration events. An example is a customer disables and re-enables password writeback, which might occur during component upgrade during service and maintenance. </br> The writeback keys and data stored in the Azure AD Connect database are encrypted by data protection application programming interfaces (DPAPI) (CALG_AES_256). The result is the master ADSync encryption key stored in the Windows Credential Vault in the context of the ADSync on-premises service account. The Windows Credential Vault supplies automatic secret re-encryption as the password for the service account changes. To reset the service account password invalidates secrets in the Windows Credential Vault for the service account. Manual changes to a new service account might invalidate the stored secrets.</br> By default, the ADSync service runs in the context of a virtual service account. The account might be customized during installation to a least-privileged domain service account, a managed service account (MSA), or a group managed service account (gMSA). While virtual and managed service accounts have automatic password rotation, customers manage password rotation for a custom provisioned domain account. As noted, to reset the password causes loss of stored secrets. |In region|
-|Azure AD Device Registration Service |Azure AD Device Registration Service has computer and device lifecycle management in the directory, which enable scenarios such as device-state conditional access, and mobile device management.|In region|
-|Azure AD provisioning|Azure AD provisioning creates, removes, and updates users in systems, such as software as service (SaaS) applications. It manages user creation in Azure AD and on-premises AD from cloud HR sources, like Workday. The service stores its configuration in an Azure Cosmos DB, which stores the group membership data for the user directory it keeps. Cosmos DB replicates the database to multiple datacenters in the same region as the tenant, which isolates the data, according to the Azure AD cloud solution model. Replication creates high availability and multiple reading and writing endpoints. Cosmos DB has encryption on the database information, and the encryption keys are stored in the secrets storage for Microsoft.|In region|
-|Azure AD business-to-business (B2B) collaboration|Azure AD B2B collaboration has no directory data. Users and other directory objects in a B2B relationship, with another tenant, result in user data copied in other tenants, which might have data residency implications.|In region|
-|Azure AD Identity Protection|Azure AD Identity Protection uses real-time user log-in data, with multiple signals from company and industry sources, to feed its machine-learning systems that detect anomalous logins. Personal data is scrubbed from real-time log-in data before itΓÇÖs passed to the machine learning system. The remaining log-in data identifies potentially risky usernames and logins. After analysis, the data goes to Microsoft reporting systems. Risky logins and usernames appear in reporting for Administrators.|In region|
-|Azure AD managed identities for Azure resources|Azure AD managed identities for Azure resources with managed identities systems can authenticate to Azure services, without storing credentials. Rather than use username and password, managed identities authenticate to Azure services with certificates. The service writes certificates it issues in Azure Cosmos DB in the East US region, which fail over to another region, as needed. Azure Cosmos DB geo-redundancy occurs by global data replication. Database replication puts a read-only copy in each region that Azure AD managed identities runs. To learn more, see [Azure services that can use managed identities to access other services](/azure/active-directory/managed-identities-azure-resources/managed-identities-status#azure-services-that-support-managed-identities-for-azure-resources). Microsoft isolates each Cosmos DB instance in an Azure AD cloud solution model. </br> The resource provider, such as the virtual machine (VM) host, stores the certificate for authentication, and identity flows, with other Azure services. The service stores its master key to access Azure Cosmos DB in a datacenter secrets management service. Azure Key Vault stores the master encryption keys.|In region|
-|Azure Active Directory business-to-consumer (B2C)|Azure Active Directory B2C is an identity management service to customize and manage how customers sign up, sign in, and manage their profiles when using applications. B2C uses the Core Store to keep user identity information. The Core Store database follows known storage, replication, deletion, and data-residency rules. B2C uses an Azure Cosmos DB system to store service policies and secrets. Cosmos DB has encryption and replication services on database information. Its encryption key is stored in the secrets storage for Microsoft. Microsoft isolates Cosmos DB instances in an Azure AD cloud solution model.|Customer-selectable region|
+|Azure AD password writeback in Azure AD Connect|During initial configuration, Azure AD Connect generates an asymmetric keypair, using the RivestΓÇôShamirΓÇôAdleman (RSA) cryptosystem. It then sends the public key to the self-service password reset (SSPR) cloud service, which performs two operations: </br></br>1. Creates two Azure Service Bus relays for the Azure AD Connect on-premises service to communicate securely with the SSPR service </br> 2. Generates an Advanced Encryption Standard (AES) key, K1 </br></br> The Azure Service Bus relay locations, corresponding listener keys, and a copy of the AES key (K1) goes to Azure AD Connect in the response. Future communications between SSPR and Azure AD Connect occur over the new ServiceBus channel and are encrypted using SSL. </br> New password resets, submitted during operation, are encrypted with the RSA public key generated by the client during onboarding. The private key on the Azure AD Connect machine decrypts them, which prevents pipeline subsystems from accessing the plaintext password. </br> The AES key encrypts the message payload (encrypted passwords, more data, and metadata), which prevents malicious ServiceBus attackers from tampering with the payload, even with full access to the internal ServiceBus channel. </br> For password writeback, Azure AD Connect need keys and data: </br></br> - The AES key (K1) that encrypts the reset payload, or change requests from the SSPR service to Azure AD Connect, via the ServiceBus pipeline </br> - The private key, from the asymmetric key pair that decrypts the passwords, in reset or change request payloads </br> - The ServiceBus listener keys </br></br> The AES key (K1) and the asymmetric keypair rotate a minimum of every 180 days, a duration you can change during certain onboarding or offboarding configuration events. An example is a customer disables and re-enables password writeback, which might occur during component upgrade during service and maintenance. </br> The writeback keys and data stored in the Azure AD Connect database are encrypted by data protection application programming interfaces (DPAPI) (CALG_AES_256). The result is the master ADSync encryption key stored in the Windows Credential Vault in the context of the ADSync on-premises service account. The Windows Credential Vault supplies automatic secret re-encryption as the password for the service account changes. To reset the service account password invalidates secrets in the Windows Credential Vault for the service account. Manual changes to a new service account might invalidate the stored secrets.</br> By default, the ADSync service runs in the context of a virtual service account. The account might be customized during installation to a least-privileged domain service account, a managed service account (MSA), or a group managed service account (gMSA). While virtual and managed service accounts have automatic password rotation, customers manage password rotation for a custom provisioned domain account. As noted, to reset the password causes loss of stored secrets. |In geo location|
+|Azure AD Device Registration Service |Azure AD Device Registration Service has computer and device lifecycle management in the directory, which enable scenarios such as device-state conditional access, and mobile device management.|In geo location|
+|Azure AD provisioning|Azure AD provisioning creates, removes, and updates users in systems, such as software as service (SaaS) applications. It manages user creation in Azure AD and on-premises AD from cloud HR sources, like Workday. The service stores its configuration in an Azure Cosmos DB, which stores the group membership data for the user directory it keeps. Cosmos DB replicates the database to multiple datacenters in the same region as the tenant, which isolates the data, according to the Azure AD cloud solution model. Replication creates high availability and multiple reading and writing endpoints. Cosmos DB has encryption on the database information, and the encryption keys are stored in the secrets storage for Microsoft.|In geo location|
+|Azure AD business-to-business (B2B) collaboration|Azure AD B2B collaboration has no directory data. Users and other directory objects in a B2B relationship, with another tenant, result in user data copied in other tenants, which might have data residency implications.|In geo location|
+|Azure AD Identity Protection|Azure AD Identity Protection uses real-time user log-in data, with multiple signals from company and industry sources, to feed its machine-learning systems that detect anomalous logins. Personal data is scrubbed from real-time log-in data before itΓÇÖs passed to the machine learning system. The remaining log-in data identifies potentially risky usernames and logins. After analysis, the data goes to Microsoft reporting systems. Risky logins and usernames appear in reporting for Administrators.|In geo location|
+|Azure AD managed identities for Azure resources|Azure AD managed identities for Azure resources with managed identities systems can authenticate to Azure services, without storing credentials. Rather than use username and password, managed identities authenticate to Azure services with certificates. The service writes certificates it issues in Azure Cosmos DB in the East US region, which fail over to another region, as needed. Azure Cosmos DB geo-redundancy occurs by global data replication. Database replication puts a read-only copy in each region that Azure AD managed identities runs. To learn more, see [Azure services that can use managed identities to access other services](/azure/active-directory/managed-identities-azure-resources/managed-identities-status#azure-services-that-support-managed-identities-for-azure-resources). Microsoft isolates each Cosmos DB instance in an Azure AD cloud solution model. </br> The resource provider, such as the virtual machine (VM) host, stores the certificate for authentication, and identity flows, with other Azure services. The service stores its master key to access Azure Cosmos DB in a datacenter secrets management service. Azure Key Vault stores the master encryption keys.|In geo location|
+|Azure Active Directory B2C |[Azure AD B2C](/azure/active-directory-b2c/data-residency) is an identity management service to customize and manage how customers sign up, sign in, and manage their profiles when using applications. B2C uses the Core Store to keep user identity information. The Core Store database follows known storage, replication, deletion, and data-residency rules. B2C uses an Azure Cosmos DB system to store service policies and secrets. Cosmos DB has encryption and replication services on database information. Its encryption key is stored in the secrets storage for Microsoft. Microsoft isolates Cosmos DB instances in an Azure AD cloud solution model.|Customer-selectable geo location|
## Related resources
-For more information on data residency in Microsoft Cloud offerings see the following articles:
+For more information on data residency in Microsoft Cloud offerings, see the following articles:
* [Azure Active Directory ΓÇô Where is your data located?](https://aka.ms/aaddatamap) * [Data Residency in Azure | Microsoft Azure](https://azure.microsoft.com/explore/global-infrastructure/data-residency/#overview)
active-directory Custom Security Attributes Manage https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/fundamentals/custom-security-attributes-manage.md
Previously updated : 06/30/2022 Last updated : 01/07/2023
The following table provides a high-level comparison of the custom security attr
| Permission | Global Admin | Attribute Definition Admin | Attribute Assignment Admin | Attribute Definition Reader | Attribute Assignment Reader | | | :: | :: | :: | :: | :: | | Read attribute sets | | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
-| Read attribute definitions | | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | |
+| Read attribute definitions | | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| Read attribute assignments for users and applications (service principals) | | | :heavy_check_mark: | | :heavy_check_mark: | | Add or edit attribute sets | | :heavy_check_mark: | | | | | Add, edit, or deactivate attribute definitions | | :heavy_check_mark: | | | |
Once you have a better understanding of how your attributes will be organized an
| <ul><li>Read attribute definitions in a scoped attribute set</li><li>Read attribute assignments that use attributes in a scoped attribute set for users</li><li>Read attribute assignments that use attributes in a scoped attribute set for applications (service principals)</li><li>[Assign attributes in a scoped attribute set to users](../enterprise-users/users-custom-security-attributes.md)</li><li>[Assign attributes in a scoped attribute set to applications (service principals)](../manage-apps/custom-security-attributes-apps.md)</li><li>[Author Azure role assignment conditions that use the Principal attribute for all attributes in a scoped attribute set](../../role-based-access-control/conditions-format.md#attributes)</li><li>**Cannot** read attributes in other attribute sets</li><li>**Cannot** read attribute assignments that use attributes in other attribute sets</li></ul> | [Attribute Assignment Administrator](../roles/permissions-reference.md#attribute-assignment-administrator) | ![Icon for attribute set scope.](./media/custom-security-attributes-manage/icon-attribute-set.png)<br/>Attribute set | | <ul><li>Read all attribute sets in a tenant</li><li>Read all attribute definitions in a tenant</li></ul> | [Attribute Definition Reader](../roles/permissions-reference.md#attribute-definition-reader) | ![Icon for tenant scope.](./media/custom-security-attributes-manage/icon-tenant.png)<br/>Tenant | | <ul><li>Read attribute definitions in a scoped attribute set</li><li>**Cannot** read other attribute sets</li></ul> | [Attribute Definition Reader](../roles/permissions-reference.md#attribute-definition-reader) | ![Icon for attribute set scope.](./media/custom-security-attributes-manage/icon-attribute-set.png)<br/>Attribute set |
-| <ul><li>Read all attribute sets in a tenant</li><li>Read all attribute assignments in a tenant for users</li><li>Read all attribute assignments in a tenant for applications (service principals)</li></ul> | [Attribute Assignment Reader](../roles/permissions-reference.md#attribute-assignment-reader) | ![Icon for tenant scope.](./media/custom-security-attributes-manage/icon-tenant.png)<br/>Tenant |
-| <ul><li>Read attribute assignments that use attributes in a scoped attribute set for users</li><li>Read attribute assignments that use attributes in a scoped attribute set for applications (service principals)</li><li>**Cannot** read attribute assignments that use attributes in other attribute sets</li></ul> | [Attribute Assignment Reader](../roles/permissions-reference.md#attribute-assignment-reader) | ![Icon for attribute set scope.](./media/custom-security-attributes-manage/icon-attribute-set.png)<br/>Attribute set |
+| <ul><li>Read all attribute sets in a tenant</li><li>Read all attribute definitions in a tenant</li><li>Read all attribute assignments in a tenant for users</li><li>Read all attribute assignments in a tenant for applications (service principals)</li></ul> | [Attribute Assignment Reader](../roles/permissions-reference.md#attribute-assignment-reader) | ![Icon for tenant scope.](./media/custom-security-attributes-manage/icon-tenant.png)<br/>Tenant |
+| <ul><li>Read attribute definitions in a scoped attribute set</li><li>Read attribute assignments that use attributes in a scoped attribute set for users</li><li>Read attribute assignments that use attributes in a scoped attribute set for applications (service principals)</li><li>**Cannot** read attributes in other attribute sets</li><li>**Cannot** read attribute assignments that use attributes in other attribute sets</li></ul> | [Attribute Assignment Reader](../roles/permissions-reference.md#attribute-assignment-reader) | ![Icon for attribute set scope.](./media/custom-security-attributes-manage/icon-attribute-set.png)<br/>Attribute set |
## Step 6: Assign roles
To grant access to the appropriate people, follow these steps to assign one of t
> [!NOTE] > If you are using Azure AD Privileged Identity Management (PIM), eligible role assignments at attribute set scope currently aren't supported. Permanent role assignments at attribute set scope are supported, but the **Assigned roles** page for a user doesn't list the role assignments.
-
- > [!NOTE]
- > Users with attribute set scope role assignments currently can see other attribute sets and custom security attribute definitions.
#### PowerShell
active-directory Secure External Access Resources https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/fundamentals/secure-external-access-resources.md
Previously updated : 11/03/2022 Last updated : 12/21/2022
# Plan an Azure Active Directory B2B collaboration deployment
-Secure collaboration with external partners ensures that the right external partners have appropriate access to internal resources for the right length of time. Through a holistic security and governance approach, you can reduce security risks, meet compliance goals, and ensure that you know who has access.
+Secure collaboration with your external partners ensures they have correct access to internal resources, and for the expected duration. Learn about governance practices to reduce security risks, meet compliance goals, and ensure accurate access.
-Ungoverned collaboration leads to a lack of clarity on ownership of access, and the possibility of sensitive resources being exposed. Moving to secure and governed collaboration can ensure that there are clear lines of ownership and accountability for external usersΓÇÖ access. This includes:
+Governed collaboration improves clarity of ownership of access, reduces exposure of sensitive resources, and enables you to attest to access policy.
-* Managing the external organizations, and users within them, that have access to resources.
+* Manage external organizations, and their users who access resources
+* Ensure access is correct, reviewed, and time bound
+* Empower business owners to manage collaboration with delegation
-* Ensuring that access is appropriate, reviewed, and time bound where appropriate.
+Traditionally, organizations use one of two methods to collaborate:
-* Empowering business owners to manage collaboration within IT-created guard rails via delegation.
-
-Where you have a compliance requirement, governed collaboration enables you to attest to the appropriateness of access.
-
-Traditionally, organizations have used one of the two methods to collaborate:
-
-1. Creating locally managed credentials for external users, or
-2. Establishing federations with partner Identity Providers.
+* Create locally managed credentials for external users, or
+* Establish federations with partner identity providers (IdP)
-Both methods have significant drawbacks in themselves.
+Both methods have drawbacks. For more information, see the following table.
| Area of concern | Local credentials | Federation |
-|:--|:-|:-|
-| Security | - Access continues after external user terminated<br> - Usertype is ΓÇ£memberΓÇ¥ by default which grants too much default access | - No user level visibility <br> - Unknown partner security posture|
-| Expense | - Password + Multi-Factor Authentication management<br> - Onboarding process<br> - Identity cleanup<br> - Overhead of running a separate directory | - Small partners cannot afford the infrastructure<br> - Small partners do not have the expertise<br> - Small Partners might only have consumer emails (no IT) |
-| Complexity | - Partner users need to manage an additional set of credentials | - Complexity grows with each new partner<br> - Complexity grows on partnersΓÇÖ side as well |
--
-Microsoft offers comprehensive suites of tools for secure external access. Azure Active Directory (Azure AD) B2B Collaboration is at the center of any external collaboration plan. Azure AD B2B can integrate with other tools in Azure AD, and tools in Microsoft 365 services, to help secure and manage your external access.
-
-Azure AD B2B simplifies collaboration, reduces expense, and increases security compared to traditional collaboration methods. Benefits of Azure AD B2B include:
--- External users cannot access resources if the home identity is disabled or deleted. --- Authentication and credential management are handled by the userΓÇÖs home identity provider. --- Resource tenant controls all access and authorization of guest users. --- Can collaborate with any user who has an email address without need for partner infrastructure. --- No need for IT departments to connect out-of-band to set up access/federation. --- Guest user access is protected by the same enterprise-grade security as internal users.
+|-|||
+| Security | - Access continues after external user terminates<br> - UserType is Member by default, which grants too much default access | - No user-level visibility <br> - Unknown partner security posture|
+| Expense | - Password and multi-factor authentication (MFA) management<br> - Onboarding process<br> - Identity cleanup<br> - Overhead of running a separate directory | Small partners can't afford the infrastructure, lack expertise, and might user consumer email|
+| Complexity | Partner users manage more credentials | Complexity grows with each new partner, and increased for partners|
-- Easy end user experience with no additional credentials needed.
+Azure Active Directory (Azure AD) B2B integrates with other tools in Azure AD, and Microsoft 365 services. Azure AD B2B simplifies collaboration, reduces expense, and increases security.
-- Users can collaborate easily with partners without needing their IT departments involvement.
+Azure AD B2B benefits:
-- No need for Guest default permissions in the Azure AD directory can be limited or highly restricted. -
-This document set is designed to enable you to move from ad hoc or loosely governed external collaboration to a more secure state.
+- If the home identity is disabled or deleted, external users can't access resources
+- User home IdP handles authentication and credential management
+- Resource tenant controls guest-user access and authorization
+- Collaborate with users who have an email address, but no infrastructure
+- IT departments don't connect out-of-band to set up access or federation
+- Guest user access is protected by the same security processes as internal users
+- Clear end-user experience with no extra credentials required
+- Users collaborate with partners without IT department involvement
+- Guest default permissions in the Azure AD directory aren't limited or highly restricted
## Next steps
-See the following articles on securing external access to resources. We recommend you take the actions in the listed order.
--
-1. [Determine your security posture for external access](1-secure-access-posture.md)
-
-2. [Discover your current state](2-secure-access-current-state.md)
-
-3. [Create a governance plan](3-secure-access-plan.md)
-
-4. [Use groups for security](4-secure-access-groups.md)
-
-5. [Transition to Azure AD B2B](5-secure-access-b2b.md)
-
-6. [Secure access with Entitlement Management](6-secure-access-entitlement-managment.md)
-
-7. [Secure access with Conditional Access policies](7-secure-access-conditional-access.md)
-
-8. [Secure access with Sensitivity labels](8-secure-access-sensitivity-labels.md)
-
-9. [Secure access to Microsoft Teams, OneDrive, and SharePoint](9-secure-access-teams-sharepoint.md)
+* [Determine your security posture for external access](1-secure-access-posture.md)
+* [Discover the current state of external collaboration in your organization](2-secure-access-current-state.md)
+* [Create a security plan for external access](3-secure-access-plan.md)
+* [Securing external access with groups](4-secure-access-groups.md)
+* [Transition to governed collaboration with Azure Active Directory B2B collaboration](5-secure-access-b2b.md)
+* [Manage external access with entitlement management](6-secure-access-entitlement-managment.md)
+* [Secure access with Conditional Access policies](7-secure-access-conditional-access.md)
+* [Control access with sensitivity labels](8-secure-access-sensitivity-labels.md)
+* [Secure external access to Microsoft Teams, SharePoint, and OneDrive for Business](9-secure-access-teams-sharepoint.md)
-10. [Convert local guest accounts to B2B](10-secure-local-guest.md)
active-directory Whats New Archive https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/fundamentals/whats-new-archive.md
Azure Support is now available for Azure AD integration components of Microsoft
**Service category:** Enterprise Apps **Product capability:** SSO
-Previously, the number of groups you could use when you conditionally change claims based on group membership within any single application configuration was limited to 10. The use of group membership conditions in SSO claims configuration has now increased to a maximum of 50 groups. For more information on how to configure claims, refer to [Enterprise Applications SSO claims configuration](../develop/active-directory-saml-claims-customization.md#emitting-claims-based-on-conditions).
+Previously, the number of groups you could use when you conditionally change claims based on group membership within any single application configuration was limited to 10. The use of group membership conditions in SSO claims configuration has now increased to a maximum of 50 groups. For more information on how to configure claims, refer to [Enterprise Applications SSO claims configuration](../develop/active-directory-saml-claims-customization.md).
active-directory Trigger Custom Task https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/governance/trigger-custom-task.md
To use a custom task extension in your workflow, first a custom task extension m
1. In the left menu, select **Workflows (Preview)**.
-1. On the workflows screen, select **custom task extension**.
+1. On the workflows screen, select **Custom task extension**.
:::image type="content" source="media/trigger-custom-task/custom-task-extension-select.png" alt-text="Screenshot of selecting a custom task extension from a workflow overview page.":::
-1. On the custom task extensions page, select **create custom task extension**.
+1. On the custom task extensions page, select **Create custom task extension**.
:::image type="content" source="media/trigger-custom-task/create-custom-task-extension.png" alt-text="Screenshot for creating a custom task extension selection.":::
-1. On the basics page you, give a display name and description for the custom task extension and select **Next**.
+1. On the basics page you, enter a unique display name and description for the custom task extension and select **Next**.
:::image type="content" source="media/trigger-custom-task/custom-task-extension-basics.png" alt-text="Screenshot of the basics section for creating a custom task extension."::: 1. On the **Task behavior** page, you specify how the custom task extension will behave after executing the Azure Logic App and select **Next**. :::image type="content" source="media/trigger-custom-task/custom-task-extension-behavior.png" alt-text="Screenshot for choose task behavior for custom task extension.":::
active-directory Understanding Lifecycle Workflows https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/governance/understanding-lifecycle-workflows.md
Title: 'Understanding lifecycle workflows' description: Describes an overview of Lifecycle workflows and the various parts. -+
# Understanding lifecycle workflows
-The following reference document provides an overview of a workflow created using Lifecycle Workflows. Lifecycle Workflows allow you to create workflows that automate common tasks associated with user lifecycle in organizations. Lifecycle Workflows automate tasks based on the joiner-mover-leaver cycle of lifecycle management, and splits tasks for users up into categories of where they are in the lifecycle of an organization. These categories extend into templates where they can be quickly customized to suit the needs of users in your organization. For more information, see: [What are Lifecycle Workflows?](what-are-lifecycle-workflows.md).
+The following document provides an overview of a workflow created using Lifecycle Workflows. Workflows automate tasks based on the joiner-mover-leaver(JML) cycle of lifecycle management, and split tasks for users into categories of where they fall in the lifecycle of an organization. These categories extend into templates, where they can be quickly customized to suit the needs of users in your organization. For more information, see: [What are Lifecycle Workflows?](what-are-lifecycle-workflows.md).
- [![Diagram of a lifecycle workflow](media/understanding-lifecycle-workflows/workflow-2.png)](media/understanding-lifecycle-workflows/workflow-2.png#lightbox)
+ [![Diagram of a lifecycle workflow.](media/understanding-lifecycle-workflows/workflow-2.png)](media/understanding-lifecycle-workflows/workflow-2.png#lightbox)
## License requirements
The following permissions are required for Lifecycle Workflows:
|LifecycleWorkflows.ReadWrite.All | Read and write all lifecycle workflows and tasks.| Allows the app to create, update, list, read and delete all workflows and tasks related to lifecycle workflows on behalf of the signed-in user.| Yes ## Parts of a workflow
-A workflow can be broken down in to the following three main parts.
+
+A workflow can be broken down into the following three main parts:
|Workflow part|Description| |--|--|
-|General information|This portion of a workflow covers basic information such as display name and a description of what the workflow does.|
+|General information|This portion of a workflow covers basic information such as display name, and a description of what the workflow does.|
|Tasks|Tasks are the actions that will be taken when a workflow is executed.|
-|Execution conditions| The execution condition section of a workflow sets up<br><br>- Who(scope) the workflow runs against <br><br>- When(trigger) the workflow runs|
+|Execution conditions| Defines when(trigger), and for who(scope), a scheduled workflow will run. For more information on these two parameters, see [Trigger details](understanding-lifecycle-workflows.md#trigger-details) and [Configure Scope](understanding-lifecycle-workflows.md#configure-scope).|
## Templates
-Creating a workflow via the portal requires the use of a template. A Lifecycle Workflow template is a framework that is used for pre-defined tasks and helps automate the creation of a workflow.
+
+Creating a workflow via the Azure portal requires the use of a template. A Lifecycle Workflow template is a framework that is used for pre-defined tasks, and helps automate the creation of a workflow.
[![Understanding workflow template diagram.](media/understanding-lifecycle-workflows/workflow-3.png)](media/understanding-lifecycle-workflows/workflow-3.png#lightbox)
-The template will define the task that is to be used and then guide you through the creation of the workflow. The template provides input for description information and execution condition information.
+The template, depending on its category, will define which tasks are available to be used, and then guide you through the creation of the workflow. The template provides input for basic description, execution conditions, and task information.
>[!NOTE]
->Depending on the template you select, the options that will be available may vary. This document uses the **Onboarding pre-hire employee** template to illustrate the parts of a workflow.
+>Depending on the template you select, the options that will be available may vary. The images in this document uses the [**Onboarding pre-hire employee**](lifecycle-workflow-templates.md#onboard-pre-hire-employee) template to illustrate the parts of a workflow.
For more information, see [Lifecycle workflow templates.](lifecycle-workflow-templates.md)
-## Workflow basics
+## Workflow overview
-After selecting a template, on the basics screen:
+Every workflow has its own overview section, where you can either take quick actions with the workflow, or view its details. This overview section is split into the three following parts:
- [![Basics of a workflow.](media/understanding-lifecycle-workflows/workflow-4.png)](media/understanding-lifecycle-workflows/workflow-4.png#lightbox)
+- Basic Information
+- My Feed
+- Quick Action
+
+In this section you'll learn what each section tells you, and what actions you'll be able to take from this information.
-### Workflow details
-Under the workflow details section, you can provide the following information:
+### Basic Information
+
+When selecting a workflow, the overview provides you a list of basic details in the **Basic Information** section. These basic details provide you information such as the workflow category, its ID, when it was modified, and when it's scheduled to run again. This information is important in providing quick details surrounding its current usage for administrative purposes. Basic information is also live data, meaning any quick change action that you take place on the overview page, is shown immediately within this section.
+
+Within the **Basic Information** you can view the following information:
|Name|Description| |--|--| |Name|The name of the workflow.| |Description|A brief description that describes the workflow.|
+ |Category|A string identifying the category of the workflow.|
+ |Date Created|The date and time the workflow was created.|
+ |Workflow ID|A unique identifier for the workflow.|
+ |Schedule|Defines if the workflow is currently scheduled to run.|
+ |Last run date|The last date and time the workflow ran.|
+ |Last Modified|The last date and time the workflow was modified.|
-### Trigger details
-Under the trigger details section, you can provide the following information.
+### My Feed
- |Name|Description|
- |--|--|
- |Days for event|The number of days before or after the date specified in the **Event user attribute**.|
+The **My Feed** section of the workflow overview contains a quick peek into when and how the workflow ran. This section also allows you to quickly jump to the target areas for more information. The following information is provided:
-This section defines **when** the workflow will run. Currently, there are two supported types of triggers:
-
-- Trigger and scope based - runs the task on all users in scope once the workflow is triggered.-- On-demand - can be run immediately. Typically used for real-time employee terminations.
+- Next target run: The date and time of the next scheduled workflow run.
+- Total processed users: The total number of users processed by the workflow.
+- Processed users with failures: The total users processed with failed status by the workflow.
+- Failed tasks: The total number of failed
+- Number of tasks: The total number of tasks within the workflow.
+- Current version: How many new versions of the workflow have been created.
-## Configure scope
-After you define the basics tab, on the configure scope screen:
-The configure scope section determines **who** the workflow will run against.
+### Quick Action
- [![Screenshot showing the rule section](media/understanding-lifecycle-workflows/workflow-5.png)](media/understanding-lifecycle-workflows/workflow-5.png#lightbox)
+The **Quick Action** section allows you to quickly take action with your workflow. These quick actions can either be making the workflow do something, or used for history or editing purposes. The following actions you can take are:
-You can add extra expressions using **And/Or** to create complex conditionals, and apply the workflow more granularly across your organization.
+- Run on Demand: Allows you to quickly run the workflow on demand. For more information on this process, see: [Run a workflow on-demand](on-demand-workflow.md)
+- Edit tasks: Allows you to add, delete, edit, or reorder tasks within the workflow. For more information on this process, see: [Edit the tasks of a workflow using the Azure portal](manage-workflow-tasks.md#edit-the-tasks-of-a-workflow-using-the-azure-portal)
+- View Workflow History: Allows you to view the history of the workflow. For more information on the three history perspectives, see: [Lifecycle Workflows history](lifecycle-workflow-history.md)
- [![Extra expressions.](media/understanding-lifecycle-workflows/workflow-8.png)](media/understanding-lifecycle-workflows/workflow-8.png#lightbox)
+Actions taken from the overview of a workflow allow you to quickly complete tasks, which can normally be done via the manage section of a workflow.
-> [!NOTE]
-> For a full list of user properties supported by Lifecycle Workflows, see [Supported user properties and query parameters](/graph/api/resources/identitygovernance-rulebasedsubjectset?view=graph-rest-beta&preserve-view=true#supported-user-properties-and-query-parameters)
+[![Update manage workflow section review.](media/understanding-lifecycle-workflows/workflow-11.png)](media/understanding-lifecycle-workflows/workflow-11.png#lightbox)
-For more information, see [Create a lifecycle workflow.](create-lifecycle-workflow.md)
+## Workflow basics
+After selecting a template, on the basics screen:
+ - Provide the information that will be used in the description portion of the workflow.
+ - The trigger, defines when of the execution condition.
+
+ [![Basics of a workflow.](media/understanding-lifecycle-workflows/workflow-4.png)](media/understanding-lifecycle-workflows/workflow-4.png#lightbox)
-## Review tasks
-After defining the scope the review tasks screen will allow you to:
+## Trigger details
-[![Screenshot showing the review tasks screen.](media/understanding-lifecycle-workflows/workflow-6.png)](media/understanding-lifecycle-workflows/workflow-6.png#lightbox)
+The trigger of a workflow defines when a scheduled workflow will run for users in scope for the workflow. The trigger is a combination of a time-based attribute, and an offset value. For example, if the attribute is employeeHireDate and offsetInDays is -1, then the workflow should trigger one day before the employee hire date. The value can range between -60 and 60 days.
-You can use the **Add task** button to add extra tasks for the workflow. Select the additional tasks from the list provided.
+The time-based attribute can be either one of two values, which are automatically chosen based on the template in which you select during the creation of your workflow. The two values can be:
- [![Screenshot showing additional tasks section.](media/understanding-lifecycle-workflows/workflow-6.png)](media/understanding-lifecycle-workflows/workflow-6.png#lightbox)
+- employeeHireDate: If the template is a joiner workflow.
+- employeeLeaveDateTime: If the template is a leaver workflow.
-For more information, see: [Lifecycle workflow tasks](lifecycle-workflow-tasks.md)
+These two values must be set within Azure AD for users. For more information on this process, see [How to synchronize attributes for Lifecycle workflows](how-to-lifecycle-workflow-sync-attributes.md)
-## Review and create
+The offset determines how many days before or after the time-based attribute the workflow should be triggered. For example, if the attribute is employeeHireDate and offsetInDays is 7, then the workflow should trigger one week(7 days) before the employee hire date. The offsetInDays value can be as far ahead, or behind, as 60.
-After reviewing the tasks on the review and create screen, you:
- Based on what was defined in the previous sections our workflow will now show:
-- It's named **on-board pre-hire employee**.-- Based on the date in the **EmployeeHireDate** attribute, it will trigger **seven** (7) days prior to the date.-- It will run against users who have **marketing** for the **department** attribute value.-- It will generate a **TAP (temporary access password)**, and send an email to the user in the **manager** attribute of the pre-hire employee.
+## Configure scope
- [![Review and create workflow template.](media/understanding-lifecycle-workflows/workflow-7.png)](media/understanding-lifecycle-workflows/workflow-7.png#lightbox)
+[![Screenshot showing the rule section.](media/understanding-lifecycle-workflows/workflow-5.png)](media/understanding-lifecycle-workflows/workflow-5.png#lightbox)
-## Scheduling
-A workflow isn't scheduled to run by default. To enable the workflow, it needs to be scheduled.
+The scope defines for who the scheduled workflow will run. Configuring this parameter allows you to further narrow down the users for whom the workflow is to be executed.
-To verify whether the workflow is scheduled, you can view the **Scheduled** column.
+The scope is made up of the following two parts:
-To enable the workflow, select the **Enable schedule** option for the workflow.
+- Scope type: Always preset as Rule based.
+- Rule: Where you can set expressions on user properties that define for whom the scheduled workflow will run. You can add extra expressions using **And, And not, Or, Or not** to create complex conditionals, and apply the workflow more granularly across your organization. Lifecycle Workflows supports a [rich set of user properties](/graph/api/resources/identitygovernance-rulebasedsubjectset#supported-user-properties-and-query-parameters) for configuring the scope.
-Once scheduled, the workflow will be evaluated every 3 hours to determine whether or not it should run based on the execution conditions.
+[![Extra expressions.](media/understanding-lifecycle-workflows/workflow-8.png)](media/understanding-lifecycle-workflows/workflow-8.png#lightbox)
+
+For a detailed guide on setting the execution conditions for a workflow, see: [Create a lifecycle workflow.](create-lifecycle-workflow.md)
+
+## Scheduling
+
+While newly created workflows are enabled by default, scheduling is an option that must be enabled manually. To verify whether the workflow is scheduled, you can view the **Scheduled** column.
+
+Once scheduling is enabled, the workflow will be evaluated every three hours to determine whether or not it should run based on the execution conditions.
[![Workflow template schedule.](media/understanding-lifecycle-workflows/workflow-10.png)](media/understanding-lifecycle-workflows/workflow-10.png#lightbox)
+To view a detailed guide on scheduling a workflow, see: [Customize the schedule of workflows](customize-workflow-schedule.md).
### On-demand scheduling
A workflow can be run on-demand for testing or in situations where it's required
Use the **Run on demand** feature to execute the workflow immediately. The workflow must be enabled before you can run it on demand. >[!NOTE]
-> A workflow that is run on demand for any user does not take into account whether or not a user meets the workflow's execution. It will apply the task regardless of whether the execution conditions are met or not.
+> A workflow that is run on demand for a user does not take into account whether or not a user meets the workflow's execution conditions. It will apply the tasks regardless of whether the execution conditions are met by the user or not.
-For more information, see [Run a workflow on-demand](on-demand-workflow.md)
+For more information, see: [Run a workflow on-demand](on-demand-workflow.md)
-## Managing the workflow
+## History
-By selecting on a workflow you created, you can manage the workflow.
+When you've selected a workflow, you can view its historical information through the lens of its users, runs, and tasks. Being able to view information specifically from these viewpoints allows you to quickly narrow down specific information about how a workflow was processed.
-You can select which portion of the workflow you wish to update or change using the left navigation bar. Select the section you wish to update.
+For more information, see: [Lifecycle Workflows history](lifecycle-workflow-history.md)
-[![Update manage workflow section review.](media/understanding-lifecycle-workflows/workflow-11.png)](media/understanding-lifecycle-workflows/workflow-11.png#lightbox)
-
-For more information, see [Manage lifecycle workflow properties](manage-workflow-properties.md)
## Versioning
-Workflow versions are separate workflows built using the same information of an original workflow, but with updated parameters so that they're reported differently within logs. Workflow versions can change the actions or even scope of an existing workflow.
-
-You can view versioning information by selecting **Versions** under **Manage** from the left.
+Workflow versions are separate workflows built using the same information of an original workflow, but with either the tasks or scope updated, so that they're reported differently within logs. Workflow versions can change the actions or even scope of an existing workflow.
[![Manage workflow versioning selection.](media/understanding-lifecycle-workflows/workflow-12.png)](media/understanding-lifecycle-workflows/workflow-12.png#lightbox)
-For more information, see [Lifecycle Workflow versioning](lifecycle-workflow-versioning.md)
-
-## Developer information
-This document covers the parts of a lifecycle workflow
+For more information, see: [Lifecycle Workflows Versioning](lifecycle-workflow-versioning.md)
-For more information, see the [Workflow API Reference](lifecycle-workflows-developer-reference.md)
## Next steps - [Create a custom workflow using the Azure portal](tutorial-onboard-custom-workflow-portal.md)
active-directory Howto Troubleshoot Upn Changes https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/hybrid/howto-troubleshoot-upn-changes.md
Title: Plan and troubleshoot Azure User Principal name (UPN) changes description: Understand known issues and mitigations for UPN changes- Previously updated : 09/27/2022--- Last updated : 12/19/2022+++ # Plan and troubleshoot User Principal Name changes in Azure Active Directory
-A User Principal Name (UPN) is an attribute that is an internet communication standard for user accounts. A UPN consists of a UPN prefix (the user account name) and a UPN suffix (a DNS domain name). The prefix joins the suffix using the "\@" symbol. For example, someone@example.com. A UPN must be unique among all security principal objects within a directory forest.
-
-**This article assumes you're using UPN as the user identifier. It addresses planning for UPN changes, and recovering from issues that may result from UPN changes.**
+The User Principal Name (UPN) attribute is an internet communication standard for user accounts. A UPN consists of a prefix (user account name) and a suffix (DNS domain name). The prefix joins the suffix using the "\@" symbol. For example, someone@example.com. Ensure the UPN is unique among security principal objects in a directory forest.
> [!NOTE]
-> For developers, we recommend that you use the user objectID as the immutable identifier, rather than UPN or email addresses as their values can change.
--
-## Learn about UPNs and UPN changes
-Sign-in pages often prompt users to enter their email address when the required value is actually their UPN. Therefore, you should be sure to change users' UPN anytime their primary email address changes.
-
-Users' primary email addresses might change for many reasons:
+>This article assumes the UPN is the user identifier. It addresses UPN-change planning, and recovering from issues that might result from changes.
+>For developers, we recommend you use the user objectID as the immutable identifier, rather than UPN or email addresses.
-* company rebranding
+## UPN and their changes
-* employees moving to different company divisions
+Sign-in pages often prompt users to enter an email address, when the value is their UPN. Therefore, change user UPN when their primary email address changes. User primary email address might change:
-* mergers and acquisitions
+* Rebranding
+* Employee moves to another division
+* Mergers and acquisitions
+* Employee name change
-* employee name changes
+### UPN change types
-### Types of UPN changes
+Change the prefix, suffix, or both.
-You can change a UPN by changing the prefix, suffix, or both.
+* **Change the prefix**:
+ * BSimon@contoso.com becomes BJohnson@contoso.com
+ * Bsimon@contoso.com becomes Britta.Simon@contoso.com
+* **Changing the suffix**:
+ * Britta.Simon@contoso.com becomes Britta.Simon@contosolabs.com, or
+ * Britta.Simon@corp.contoso.com becomes Britta.Simon@labs.contoso.com
-* **Changing the prefix**.
+We recommend you change user UPN when their primary email address changes. During initial synchronization from Active Directory to Azure AD, ensure user emails are identical to their UPNs.
- * For example, if a person's name changed, you might change their account name:
-ΓÇÄBSimon@contoso.com to BJohnson@contoso.com
-
- * You might also change the corporate standard for prefixes:
-ΓÇÄBsimon@contoso.com to Britta.Simon@contoso.com
+### UPNs in Active Directory
-* **Changing the suffix**. <br>
+In Active Directory, the default UPN suffix is the domain DNS name where you created the user account. In most cases, you register this domain name as the enterprise domain. If you create the user account in the contoso.com domain, the default UPN is: username@contoso.com. However, you can add more UPN suffixes by using Active Directory domains and trusts. Learn more: [Add your custom domain name using the Azure Active Directory portal](../fundamentals/add-custom-domain.md).
- For example, if a person changed divisions, you might change their domain:
+For example, if you add labs.contoso.com and change the user UPNs and email to reflect that, the result is: username@labs.contoso.com.
- * Britta.Simon@contoso.com to Britta.Simon@contosolabs.com <br>
- Or<br>
- * Britta.Simon@corp.contoso.com to Britta.Simon@labs.contoso.com
+>[!IMPORTANT]
+> If you change the suffix in Active Directory, add and verify a matching custom domain name in Azure AD.
+> [Add your custom domain name using the Azure Active Directory portal](../fundamentals/add-custom-domain.md)
-We recommend to change users' UPN every time their primary email address is updated.
+ ![Screenshot of the Add customer domain option, under Custom domain names.](./media/howto-troubleshoot-upn-changes/custom-domains.png)
-During the initial synchronization from Active Directory to Azure AD, ensure the users' emails are identical to their UPNs.
+### UPNs in Azure Active Directory
-### UPNs in Active Directory
+Users sign in to Azure AD with their userPrincipalName attribute value.
-In Active Directory, the default UPN suffix is the DNS name of the domain where you created the user account. In most cases, this is the domain name that you register as the enterprise domain on the internet. If you create the user account in the contoso.com domain, the default UPN is
+When you use Azure AD with on-premises Active Directory, user accounts are synchronized by using the Azure AD Connect service. The Azure AD Connect wizard uses the userPrincipalName attribute from the on-premises Active Directory as the UPN in Azure AD. You can change it to a different attribute in a custom installation.
-username@contoso.com
+>[!NOTE]
+> Define a process for when you update a User Principal Name (UPN) of a user, or for your organization.
- However, you can [add more UPN suffixes](../fundamentals/add-custom-domain.md) by using Active Directory domains and trusts.
+When you synchronize user accounts from Active Directory to Azure AD, ensure the UPNs in Active Directory map to verified domains in Azure AD.
-For example, you may want to add labs.contoso.com and have the users' UPNs and email reflect that. They would then become
+ ![Screenshot of Active Director UPN suffixes and related domains.](./media/howto-troubleshoot-upn-changes/verified-domains.png)
-username@labs.contoso.com.
+If the userPrincipalName attribute value doesn't correspond to a verified domain in Azure AD, synchronization replaces the suffix with .onmicrosoft.com.
->[!IMPORTANT]
-> If you are [changing the suffix in Active Directory](../fundamentals/add-custom-domain.md), you must ensure that a matching custom domain name has been [added and verified on Azure AD](../fundamentals/add-custom-domain.md).
+### Bulk UPN change rollout
-![A screenshot of verified domains](./media/howto-troubleshoot-upn-changes/custom-domains.png)
+Use our best practices to test bulk UPN changes. Have a tested roll-back plan for reverting UPNs if issues can't be resolved. After your pilot is running, target small user sets, with organizational roles, and sets of apps or devices. This process helps you understand the user experience. Include this information in your communications to stakeholders and users.
-### UPNs in Azure Active Directory
+Learn more: [Azure Active Directory deployment plans](../fundamentals/active-directory-deployment-plans.md)
-Users sign in to Azure AD with the value in their userPrincipalName attribute.
+Create a procedure to change UPNs for individual users. We recommend a procedure that includes documentation about known issues and workarounds.
-When you use Azure AD in conjunction with your on-premises Active Directory, user accounts are synchronized by using the Azure AD Connect service. By default the Azure AD Connect wizard uses the userPrincipalName attribute from the on-premises Active Directory as the UPN in Azure AD. You can change it to a different attribute in a custom installation.
+Read the following sections for known issues and workarounds during UPN change.
-It's important that you have a defined process when you update a User Principal Name (UPN) of a single user, or for your entire organization.
+## Apps known issues and workarounds
-See the Known issues and workarounds in this document.
+Software as a service (SaaS) and line of business (LoB) applications often rely on UPNs to find users and store user profile information, including roles. Applications potentially affected by UNP changes use just-in-time (JIT) provisioning to create a user profile when users initially sign in to the app.
-When you're synchronizing user accounts from Active Directory to Azure AD, ensure that the UPNs in Active Directory map to verified domains in Azure AD.
+Learn more:
-![Screenshot that shows examples of UPNs mapped to verified Azure A D domains.](./media/howto-troubleshoot-upn-changes/verified-domains.png)
+* [What is SaaS?](https://azure.microsoft.com/overview/what-is-saas/)
+* [What is app provisioning in Azure Active Directory?](../app-provisioning/user-provisioning.md)
-If the value of the userPrincipalName attribute doesn't correspond to a verified domain in Azure AD, the synchronization process replaces the suffix with a default .onmicrosoft.com value.
+### Known issues
+Changing user UPN can break the relationship between the Azure AD user and the user profile on the application. If the application uses JIT provisioning, it might create a new user profile. Then, the application administrator makes manual changes to fix the relationship.
-### Roll-out bulk UPN changes
+### Workarounds
-Follow the [best practices for a pilot](../fundamentals/active-directory-deployment-plans.md) for bulk UPN changes. Also have a tested rollback plan for reverting UPNs if you find issues that can't be quickly resolved. Once your pilot is running, you can start targeting small sets of users with various organizational roles and their specific sets of apps or devices.
+Use automated app provisioning in Azure AD to create, maintain, and remove user identities in supported cloud applications. Configure automated user provisioning on your applications to update UPNs on the applications. Test the applications to validate they aren't affected by UPN changes. If you're a developer, consider adding SCIM support to your application to enable automatic user provisioning.
-Going through this first subset of users will give you a good idea of what users should expect as part of the change. Include this information on your user communications.
+Learn more:
-Create a defined procedure for changing UPNs on individual users as part of normal operations. We recommend having a tested procedure that includes documentation about known issues and workarounds.
+* [What is app provisioning in Azure Active Directory?](../app-provisioning/user-provisioning.md)
+* [Tutorial: Develop and plan provisioning for a SCIM endpoint in Azure Active Directory](../app-provisioning/use-scim-to-provision-users-and-groups.md)
-The following sections detail potential known issues and workarounds when UPNs are changed.
+## Managed devices known issues and workarounds
-## Apps known issues and workarounds
+If you bring your devices to Azure AD, you maximize user productivity with single sign-on (SSO) across cloud and on-premises resources.
-[Software as a service (SaaS)](https://azure.microsoft.com/overview/what-is-saas/) and Line of Business (LoB) applications often rely on UPNs to find users and store user profile information, including roles. Applications that use [Just in Time provisioning](../app-provisioning/user-provisioning.md) to create a user profile when users sign in to the app for the first time can be affected by UPN changes.
+Learn more: [What is a device identity?](../devices/overview.md)
-**Known issue**<br>
-Changing a user's UPN could break the relationship between the Azure AD user and the user profile created on the application. If the application uses [Just in Time provisioning](../app-provisioning/user-provisioning.md), it might create a brand-new user profile. This will require the application administrator to make manual changes to fix this relationship.
+### Azure AD joined devices
-**Workaround**<br>
-[Azure AD Automated User Provisioning](../app-provisioning/user-provisioning.md) lets you automatically create, maintain, and remove your user identities in supported cloud applications. Configuring automated user provisioning on your applications automatically updates UPNs on the applications. Test the applications as part of the progressive rollout to validate that they are not impacted by UPN changes.
-If you are a developer, consider [adding SCIM support to your application](../app-provisioning/use-scim-to-provision-users-and-groups.md) to enable automatic user provisioning from Azure Active Directory.
+Azure AD joined devices are joined to Azure AD. Users sign in to the device using their organization identity.
-## Managed devices known issues and workarounds
+Learn more: [Azure AD joined devices](../devices/concept-azure-ad-join.md)
-By [bringing your devices to Azure AD](../devices/overview.md), you maximize your users' productivity through single sign-on (SSO) across your cloud and on-premises resources.
+### Known issues and resolution
-### Azure AD joined devices
+Users might experience single sign-on issues with applications that depend on Azure AD for authentication. This issue was fixed in the Windows 10 May-2020 update (2004).
-[Azure AD joined](../devices/concept-azure-ad-join.md) devices are joined directly to Azure AD and allow users to sign in to the device using their organization's identity.
+### Workaround
-**Known issues** <br>
-Users may experience single sign-on issues with applications that depend on Azure AD for authentication.
+Allow enough time for the UPN change to sync to Azure AD. After you verify the new UPN appears in the Azure portal, ask the user to select the "Other user" tile to sign in with their new UPN. You can verify using PowerShell. See, [Get-AzureADUser](/powershell/module/azuread/get-azureaduser?view=azureadps-2.0&preserve-view=true). After users sign in with a new UPN, references to the old UPN might appear on the **Access work or school** Windows setting.
-**Resolution** <br>
-The issues mentioned on this section have been fixed on the Windows 10 May 2020 update (2004).
+ ![Screenshot of User-1 and Other-user domains, on the sign-in screen.](./media/howto-troubleshoot-upn-changes/other-user.png)
-**Workaround** <br>
-Allow enough time for the UPN change to sync to Azure AD. Once you verify that the new UPN is reflected on the Azure AD Portal, ask the user to select the "Other user" tile to sign in with their new UPN. You can also verify through [PowerShell](/powershell/module/azuread/get-azureaduser). After signing in with their new UPN, references to the old UPN might still appear on the "Access work or school" Windows setting.
+### Hybrid Azure AD joined devices
-![Screenshot of verified domains](./media/howto-troubleshoot-upn-changes/other-user.png)
+Hybrid Azure AD joined devices are joined to Active Directory and Azure AD. You can implement Hybrid Azure AD join if your environment has an on-premises Active Directory footprint.
+
+Learn more: [Hybrid Azure AD joined devices](../devices/concept-azure-ad-join-hybrid.md)
+### Known issues and resolution
-### Hybrid Azure AD joined devices
+Windows 10 Hybrid Azure AD joined devices are likely to experience unexpected restarts and access issues. If users sign in to Windows before the new UPN synchronizes to Azure AD, or they continue using a Windows session, they might experience single sign-on (SSO) issues with apps that use Azure AD for authentication. This situation occurs if Conditional Access is configured to enforce the use of hybrid joined devices to access resources.
-[Hybrid Azure AD joined](../devices/concept-azure-ad-join-hybrid.md) devices are joined to Active Directory and Azure AD. You can implement Hybrid Azure AD join if your environment has an on-premises Active Directory footprint and you also want to benefit from the capabilities provided by Azure AD.
+In addition, the following message can appear, which forces a restart after one minute:
-**Known issues**
+Your PC will automatically restart in one minute. Windows ran into a problem and needs to restart. You should close this message now and save your work.
-Windows 10 Hybrid Azure AD joined devices are likely to experience unexpected restarts and access issues.
+This issue was fixed in the Windows 10 May-2020 update (2004).
-If users sign in to Windows before the new UPN has been synchronized to Azure AD, or continue to use an existing Windows session, they may experience single sign-on issues with applications that use Azure AD for authentication if Conditional Access has been configured to enforce the use of Hybrid Joined devices to access resources.
+### Workaround
-Additionally, the following message will appear, forcing a restart after one minute.
+1. Unjoin the device from Azure AD and restart.
+2. The device joins Azure AD.
+3. The user signs in by selecting the **Other user** tile.
-"Your PC will automatically restart in one minute. Windows ran into a problem and needs to restart. You should close this message now and save your work".
+To unjoin a device from Azure AD, run the following command at a command prompt: dsregcmd/leave
-**Resolution** <br>
-The issues mentioned on this section have been fixed on the Windows 10 May 2020 update (2004).
+>[!NOTE]
+>The user re-enrolls for Windows Hello for Business, if it's in use.
-**Workaround**
+>[!TIP]
+>Windows 7 and 8.1 devices are not affected by this issue.
-The device must be unjoined from Azure AD and restarted. After restart, the device will automatically join Azure AD again and the user must sign in using the new UPN by selecting the "Other user" tile.
-To unjoin a device from Azure AD, run the following command at a command prompt:
+## Mobile Application Management app protection policies
-**dsregcmd /leave**
+### Known issues
-The user will need to [re-enroll](/windows/security/identity-protection/hello-for-business/hello-hybrid-cert-whfb-provision) for Windows Hello for Business if it's being used.
-Windows 7 and 8.1 devices are not affected by this issue after UPN changes.
+Your organization might use Mobile Application Management (MAM) to protect corporate data in apps on user devices. MAM app protection policies aren't resilient during UPN changes, which can break the connection between MAM enrollments and active users in MAM integrated applications. This scenario could leave data in an unprotected state.
+Learn more:
-## Mobile Application Management (MAM) app protection policies known issues and workarounds
+* [App protection policies overview](/mem/intune/apps/app-protection-policy)
+* [Frequently asked questions about MAM and app protection](/mem/intune/apps/mam-faq)
-**Known Issues**
+### Workaround
-Your organization may use [MAM app protection policies](/mem/intune/apps/app-protection-policy) to protect corporate data in apps on end users' devices.
-MAM app protection policies are currently not resiliant to UPN changes. UPN changes can break the connection between existing MAM enrollments and active users in MAM integrated applications, resulting in undefined behavior. This could leave data in an unprotected state.
+IT admins can wipe data from affected devices, after UPN changes. This forces users to reauthenticate and reenroll with new UPNs.
-**Work Around**
-
-IT admins should [issue a selective wipe](/mem/intune/apps/apps-selective-wipe) to impacted users following UPN changes. This will force impacted end users to reauthenticate and reenroll with their new UPNs.
+Learn more: [How to wipe only corporate data from Intune-managed apps](/mem/intune/apps/apps-selective-wipe)
## Microsoft Authenticator known issues and workarounds
-Your organization might require the use of the [Microsoft Authenticator app](https://support.microsoft.com/account-billing/how-to-use-the-microsoft-authenticator-app-9783c865-0308-42fb-a519-8cf666fe0acc) to sign in and access organizational applications and data. Although a username might appear in the app, the account isn't set up to function as a verification method until the user completes the registration process.
-
-The [Microsoft Authenticator app](https://support.microsoft.com/account-billing/how-to-use-the-microsoft-authenticator-app-9783c865-0308-42fb-a519-8cf666fe0acc) has four main functions:
+Your organization might require the Microsoft Authenticator app to sign in and access applications and data. Although a username might appear in the app, the account isn't a verification method until the user completes registration.
-* Multi-factor authentication via a push notification or verification code
+Learn more: [How to use the Microsoft Authenticator app](https://support.microsoft.com/account-billing/how-to-use-the-microsoft-authenticator-app-9783c865-0308-42fb-a519-8cf666fe0acc)
-* Act as an Authentication Broker on iOS and Android devices to provide single sign-on for applications that use [Brokered authentication](../develop/msal-android-single-sign-on.md)
+Microsoft Authenticator app has four main functions:
-* Device registration (also known as Workplace Join) to Azure AD, which is a requirement for other features like Intune App Protection and Device Enrolment/Management,
+* **Multi-factor authentication** with push notification or verification code
+* **Authentication broker** on iOS and Android devices fir SSO for applications using brokered authentication
+ * [Enable cross-app SSO on Android using MSAL](../develop/msal-android-single-sign-on.md)
+* **Device registration** or workplace join, to Azure AD, which is a requirement for Intune App Protection and Device Enrolment/Management
+* **Phone sign in**, which requires MFA and device registration
-* Phone sign in, which requires MFA and device registration.
+### Multi-factor authentication with Android devices
-### Multi-Factor Authentication with Android devices
+Use the Microsoft Authenticator app for out-of-band verification. Instead of an automated phone call, or SMS, to the user during sign-in, MFA pushes a notification to the Microsoft Authenticator app on the user device. The user selects **Approve**, or the user enters a PIN or biometric and selects **Authenticate**.
-The Microsoft Authenticator app offers an out-of-band verification option. Instead of placing an automated phone call or SMS to the user during sign-in, [Multi-Factor Authentication (MFA)](../authentication/concept-mfa-howitworks.md) pushes a notification to the Microsoft Authenticator app on the user's smartphone or tablet. The user simply taps Approve (or enters a PIN or biometric and taps "Authenticate") in the app to complete their sign-in.
+Learn more: [How it works: Azure AD Multi-Factor Authentication](../authentication/concept-mfa-howitworks.md)
**Known issues**
-When you change a user's UPN, the old UPN still displays on the user account and a notification might not be received. [Verification codes](https://support.microsoft.com/account-billing/common-problems-with-the-microsoft-authenticator-app-12d283d1-bcef-4875-9ae5-ac360e2945dd) continue to work.
+When you change user UPN, the old UPN appears on the user account and notification might not be received. Use verification codes.
+
+Learn more: [Common questions about the Microsoft Authenticator app](/account-billing/common-problems-with-the-microsoft-authenticator-app-12d283d1-bcef-4875-9ae5-ac360e2945dd)
**Workaround**
-If a notification is received, instruct the user to dismiss the notification, open the Authenticator app, tap the "Check for notifications" option and approve the MFA prompt. After this, the UPN displayed on the account will be updated. Note the updated UPN might be displayed as a new account, this is due to other Authenticator functionality being used. For more information refer to the additional known issues in this article.
+If notification appears, instruct the user to dismiss it, open the Authenticator app, select **Check for notifications** and approve the MFA prompt. The UPN on the account updates. Note the updated UPN might appear as a new account. This change is due to other Authenticator functionality. For more information, see the known issues in this article.
### Brokered authentication
-On Android and iOS brokers like Microsoft Authenticator enable:
+On Android and iOS. brokers like Microsoft Authenticator enable:
+
+* **SSO** - Users don't sign in to each application
+* **Device identification** - The broker accesses the device certificate created on the device when it was workplace-joined
+* **Application identification verification** - When an application calls the broker, it passes its redirect URL, and the broker verifies it
-* Single sign-on (SSO) - Your users won't need to sign in to each application.
+In addition, applications can participate in other features:
-* Device identification - The broker accesses the device certificate created on the device when it was workplace joined.
+* [Azure AD Conditional Access documentation](../conditional-access/index.yml)
+* [Use Microsoft Authenticator or Intune Company Portal on Xamarin applications](../develop/msal-net-use-brokers-with-xamarin-apps.md).
-* Application identification verification - When an application calls the broker, it passes its redirect URL, and the broker verifies it.
+### Known issues
-Additionally, it allows applications to participate in more advanced features such as [Conditional Access](../conditional-access/index.yml), and supports [Microsoft Intune scenarios](../develop/msal-net-use-brokers-with-xamarin-apps.md).
+Due to a mismatch, between the login_hint passed by the application and the UPN stored on the broker, the user experiences more interactive authentication prompts on new applications that use broker-assisted sign-in.
-**Known issues**<br>
-User is presented with more interactive authentication prompts on new applications that use broker-assisted sign-in due to a mismatch between the login_hint passed by the application and the UPN stored on the broker.
+### Workaround
-**Workaround** <br> The user needs to manually remove the account from Microsoft Authenticator and start a new sign-in from a broker-assisted application. The account will be automatically added after the initial authentication.
+The user manually removes the account from Microsoft Authenticator and starts a new sign-in from a broker-assisted application. The account is added after initial authentication.
### Device registration
-The Microsoft Authenticator app is responsible for registering the device to Azure AD. Device registration allows the device to authenticate to Azure AD and is a requirement for the following scenarios:
+The Microsoft Authenticator app registers the device in Azure AD, which allows the device to authenticate to Azure AD. This registration is a requirement for:
-* Intune App Protection
+* Intune app protection
+* Intune device enrollment
+* Phone sign-in
-* Intune Device Enrollment
+### Known issues
-* Phone Sign In
+If you change UPN, a new account with the new UPN appears on the Microsoft Authenticator app. The account with the old UPN remains listed. Also, the old UPN appears on the Device Registration section in app settings. There's no change in functionality of Device Registration or dependant scenarios.
-**Known issues**<br>
-When you change the UPN, a new account with the new UPN appears listed on the Microsoft Authenticator app, while the account with the old UPN is still listed. Additionally, the old UPN displays on the Device Registration section on the app settings. There is no change in the normal functionality of Device Registration or the dependant scenarios.
+### Workaround
-**Workaround** <br>
-To remove all references to the old UPN on the Microsoft Authenticator app, instruct the user to manually remove both the old and new accounts from Microsoft Authenticator, re-register for MFA and rejoin the device.
+To remove references to the old UPN on the Microsoft Authenticator app, the user removes the old and new accounts from Microsoft Authenticator, re-registers for MFA, and rejoins the device.
### Phone sign-in
-Phone sign-in allows users to sign in to Azure AD without a password. To enable phone sign-in, the user needs to register for MFA using the Authenticator app and then enable phone sign-in directly on Authenticator. As part of the configuration, the device registers with Azure AD.
+User phone sign-in for users to sign in to Azure AD without a password. To enable this feature, the user registers for MFA using the Authenticator app and then enables phone sign-in on Authenticator. The device registers with Azure AD.
+
+### Known issues
+
+Users can't use phone sign-in because they don't receive notification. If the user selects **Check for Notifications**, an error appears.
-**Known issues** <br>
-Users are not able to use Phone sign-in because they do not receive any notification. If the user taps on Check for Notifications, they get an error.
+### Workaround
-**Workaround**<br>
-The user needs to select the drop-down menu on the account enabled for Phone sign-in and select Disable phone sign-in. If desired, Phone sign-in can be enabled again.
+The user selects the drop-down menu on the account enabled for phone sign-in. Next, the user selects **Disable phone sign-in**. Phone sign-in can be re-enabled.
-## Security Key (FIDO2) known issues and workarounds
+## Security key (FIDO2) known issues and workarounds
-**Known issues** <br>
-When multiple users are registered on the same key, the sign in screen shows an account selection page where the old UPN is displayed. Sign-ins using Security Keys are not affected by UPN changes.
+### Known issues
-**Workaround**<br>
-To remove references to old UPNs, users must [reset the security key and re-register](../authentication/howto-authentication-passwordless-security-key.md#known-issues).
+When multiple users are registered on the same key, the sign-in screen shows account selection where the old UPN appears. Sign-in with security keys isn't affected by UPN changes.
+
+### Workaround
+
+To remove references to old UPNs, users reset the security key and re-register.
+
+Learn more: [Enable passwordless security key sign-in, Known issue, UPN changes](../authentication/howto-authentication-passwordless-security-key.md#known-issues)
## OneDrive known issues and workarounds OneDrive users are known to experience issues after UPN changes.
-For more information, see
-[How UPN changes affect the OneDrive URL and OneDrive features](/onedrive/upn-changes).
+
+Learn more: [How UPN changes affect the OneDrive URL and OneDrive features](/sharepoint/upn-changes)
## Teams Meeting Notes known issues and workarounds
-Teams Meeting Notes is a feature that allows users to take notes during their Teams meeting. This support document describes the feature in detail: [Take meeting notes in Teams](https://support.microsoft.com/office/take-meeting-notes-in-teams-3eadf032-0ef8-4d60-9e21-0691d317d103).
+Use Teams Meeting Notes to take and share notes.
-**Known issues** <br>
-When a userΓÇÖs UPN changes, the meeting notes created under the old UPN are no longer accessible by that user or any other user via Microsoft Teams or the Meeting Notes URL.
+Learn more: [Take meeting notes in Teams](/office/take-meeting-notes-in-teams-3eadf032-0ef8-4d60-9e21-0691d317d103).
-**Workaround**<br>
-After the UPN change, users can recover the meeting notes they lost access to by downloading them from OneDrive (navigate to My Files -> Microsoft Teams Data -> Wiki). New meeting notes created after the UPN change are not affected and should behave as normal.
+### Known issues
+When a user UPN changes, meeting notes created under the old UPN are not accessible with Microsoft Teams or the Meeting Notes URL.
+### Workaround
+After the UPN change, users can recover meeting notes by downloading them from OneDrive
+
+1. Go to **My Files**.
+2. Select **Microsoft Teams Data**.
+3. Select **Wiki**.
+
+New meeting notes created after the UPN change aren't affected.
## Next steps
-See these resources:
* [Azure AD Connect: Design concepts](./plan-connect-design-concepts.md)- * [Azure AD UserPrincipalName population](./plan-connect-userprincipalname.md)- * [Microsoft identity platform ID tokens](../develop/id-tokens.md)
active-directory Howto Identity Protection Configure Risk Policies https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/identity-protection/howto-identity-protection-configure-risk-policies.md
Previously updated : 10/04/2022 Last updated : 01/06/2023
Before organizations enable remediation policies, they may want to [investigate]
1. Under **Configure user risk levels needed for policy to be enforced**, select **High**. ([This guidance is based on Microsoft recommendations and may be different for each organization](#choosing-acceptable-risk-levels)) 1. Select **Done**. 1. Under **Access controls** > **Grant**.
- 1. Select **Grant access**, **Require password change**.
+ 1. Select **Grant access**, **Require multifactor authentication** and **Require password change**.
1. Select **Select**. 1. Under **Session**. 1. Select **Sign-in frequency**.
active-directory Overview Identity Protection https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/identity-protection/overview-identity-protection.md
Conditional Access administrators can create policies that factor in user or sig
| Capability | Details | Azure AD Free / Microsoft 365 Apps | Azure AD Premium P1 | Azure AD Premium P2 | | | | | | |
-| Risk policies | User risk policy (via Identity Protection) | No | No | Yes |
-| Risk policies | Sign-in risk policy (via Identity Protection or Conditional Access) | No | No | Yes |
+| Risk policies | Sign-in and user risk policies (via Identity Protection or Conditional Access) | No | No | Yes |
| Security reports | Overview | No | No | Yes | | Security reports | Risky users | Limited Information. Only users with medium and high risk are shown. No details drawer or risk history. | Limited Information. Only users with medium and high risk are shown. No details drawer or risk history. | Full access| | Security reports | Risky sign-ins | Limited Information. No risk detail or risk level is shown. | Limited Information. No risk detail or risk level is shown. | Full access |
active-directory Application Sign In Problem Application Error https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/application-sign-in-problem-application-error.md
In this scenario, Azure Active Directory (Azure AD) signs the user in. But the application displays an error message and doesn't let the user finish the sign-in flow. The problem is that the app didn't accept the response that Azure AD issued.
-There are several possible reasons why the app didn't accept the response from Azure AD. If there is an error message or code displayed, use the following resources to diagnose the error:
+There are several possible reasons why the app didn't accept the response from Azure AD. If there's an error message or code displayed, use the following resources to diagnose the error:
* [Azure AD Authentication and authorization error codes](../develop/reference-aadsts-error-codes.md)
To change the User Identifier value, follow these steps:
### Change the NameID format
-If the application expects another format for the **NameID** (User Identifier) attribute, see [Editing nameID](../develop/active-directory-saml-claims-customization.md#editing-nameid) to change the NameID format.
+If the application expects another format for the **NameID** (User Identifier) attribute, see the [Edit nameID](../develop/active-directory-saml-claims-customization.md#edit-nameid) section to change the NameID format.
Azure AD selects the format for the **NameID** attribute (User Identifier) based on the value that's selected or the format that's requested by the app in the SAML AuthRequest. For more information, see the "NameIDPolicy" section of [Single sign-on SAML protocol](../develop/single-sign-on-saml-protocol.md#nameidpolicy).
active-directory Migrate Application Authentication To Azure Active Directory https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/migrate-application-authentication-to-azure-active-directory.md
Title: 'Migrate application authentication to Azure Active Directory'
-description: This whitepaper details the planning for and benefits of migrating your application authentication to Azure AD.
+description: Describes in detail the benefits and what you need to do to migrate your application authentication to Azure Active Directory (Azure AD).
-+ Previously updated : 02/05/2021-- Last updated : 01/06/2023+ # Migrate application authentication to Azure Active Directory
-## About this paper
+This article describes the benefits and how to plan for migrating your application authentication to Azure AD. It's intended for Azure administrators and identity professionals.
-This whitepaper details the planning for and benefits of migrating your application authentication to Azure AD. It is designed for Azure administrators and identity professionals.
-
-Breaking the process into four phases, each with detailed planning and exit criteria, it is designed to help you plan your migration strategy and understand how Azure AD authentication supports your organizational goals.
+The process is broken into four phases, each with detailed planning and exit criteria, and designed to help you plan your migration strategy and understand how Azure AD authentication supports your organizational goals.
## Introduction Today, your organization requires a slew of applications (apps) for users to get work done. You likely continue to add, develop, or retire apps every day. Users access these applications from a vast range of corporate and personal devices, and locations. They open apps in many ways, including: -- through a company homepage or portal--- by bookmarking on their browsers--- via a vendorΓÇÖs URL for software as a service (SaaS) apps--- links pushed directly to userΓÇÖs desktops or mobile devices via a mobile device/application management (MDM/ MAM) solution
+- Through a company homepage or portal
+- By bookmarking on their browsers
+- Through a vendorΓÇÖs URL for software as a service (SaaS) apps
+- Links pushed directly to userΓÇÖs desktops or mobile devices via a mobile device/application management (MDM/ MAM) solution
Your applications are likely using the following types of authentication: - On-premises federation solutions (such as Active Directory Federation Services (ADFS) and Ping)- - Active Directory (such as Kerberos Auth and Windows-Integrated Auth)- - Other cloud-based identity and access management (IAM) solutions (such as Okta or Oracle)- - On-premises web infrastructure (such as IIS and Apache)- - Cloud-hosted infrastructure (such as Azure and AWS)
-**To ensure that the users can easily and securely access applications, your goal is to have a single set of access controls and policies across your on-premises and cloud environments.**
+To ensure that the users can easily and securely access applications, your goal is to have a single set of access controls and policies across your on-premises and cloud environments.
[Azure Active Directory (Azure AD)](../fundamentals/active-directory-whatis.md) offers a universal identity platform that provides your people, partners, and customers a single identity to access the applications they want and collaborate from any platform and device.
-![A diagram of Azure Active Directory connectivity](media/migrating-application-authentication-to-azure-active-directory-1.jpg)
+![A diagram of Azure AD connectivity.](media/migrating-application-authentication-to-azure-active-directory-1.jpg)
-Azure AD has a [full suite of identity management capabilities](../fundamentals/active-directory-whatis.md#which-features-work-in-azure-ad). Standardizing your app authentication and authorization to Azure AD enables you get the benefits these capabilities provide.
+Azure AD has a [full suite of identity management capabilities](../fundamentals/active-directory-whatis.md#which-features-work-in-azure-ad). Standardizing your app authentication and authorization to Azure AD gets you the benefits that these capabilities provide.
You can find more migration resources at [https://aka.ms/migrateapps](./migration-resources.md)
Moving app authentication to Azure AD will help you manage risk and cost, increa
Safeguarding your apps requires that you have a full view of all the risk factors. Migrating your apps to Azure AD consolidates your security solutions. With it you can: - Improve secure user access to applications and associated corporate data using [Conditional Access policies](../conditional-access/overview.md), [Multi-Factor Authentication](../authentication/concept-mfa-howitworks.md), and real-time risk-based [Identity Protection](../identity-protection/overview-identity-protection.md) technologies.- - Protect privileged userΓÇÖs access to your environment with [Just-In-Time](../../azure-resource-manager/managed-applications/request-just-in-time-access.md) admin access.- - Use the [multi-tenant, geo-distributed, high availability design of Azure AD](https://cloudblogs.microsoft.com/enterprisemobility/2014/09/02/azure-ad-under-the-hood-of-our-geo-redundant-highly-available-distributed-cloud-directory/)for your most critical business needs.- - Protect your legacy applications with one of our [secure hybrid access partner integrations](https://aka.ms/secure-hybrid-access) that you may have already deployed. ### Manage cost
-Your organization may have multiple Identity Access Management (IAM) solutions in place. Migrating to one Azure AD infrastructure is an opportunity to reduce dependencies on IAM licenses (on-premises or in the cloud) and infrastructure costs. In cases where you may have already paid for Azure AD via Microsoft 365 licenses, there is no reason to pay the added cost of another IAM solution.
+Your organization may have multiple Identity Access Management (IAM) solutions in place. Migrating to one Azure AD infrastructure is an opportunity to reduce dependencies on IAM licenses (on-premises or in the cloud) and infrastructure costs. In cases where you may have already paid for Azure AD via Microsoft 365 licenses, there's no reason to pay the added cost of another IAM solution.
-**With Azure AD, you can reduce infrastructure costs by:**
+With Azure AD, you can reduce infrastructure costs by:
- Providing secure remote access to on-premises apps using [Azure AD Application Proxy](../app-proxy/application-proxy.md).--- Decoupling apps from the on-prem credential approach in your tenant by [setting up Azure AD as the trusted universal identity provider](../hybrid/plan-connect-user-signin.md#choosing-the-user-sign-in-method-for-your-organization).
+- Decoupling apps from the on-premises credential approach in your tenant by [setting up Azure AD as the trusted universal identity provider](../hybrid/plan-connect-user-signin.md#choosing-the-user-sign-in-method-for-your-organization).
### Increase productivity Economics and security benefits drive organizations to adopt Azure AD, but full adoption and compliance are more likely if users benefit too. With Azure AD, you can: -- Improve end-user [Single Sign-On (SSO)](./what-is-single-sign-on.md) experience through seamless and secure access to any application, from any device and any location.-
+- Improve end-user [single sign-on (SSO)](./what-is-single-sign-on.md) experience through seamless and secure access to any application, from any device and any location.
- Use self-service IAM capabilities, such as [Self-Service Password Resets](../authentication/concept-sspr-howitworks.md) and [SelfService Group Management](../enterprise-users/groups-self-service-management.md).- - Reduce administrative overhead by managing only a single identity for each user across cloud and on-premises environments: - [Automate provisioning](../app-provisioning/user-provisioning.md) of user accounts (in [Azure AD Gallery](https://azuremarketplace.microsoft.com/marketplace/apps/category/azure-active-directory-apps))based on Azure AD identities - Access all your apps from MyApps panel in the [Azure portal](https://portal.azure.com/) - Enable developers to secure access to their apps and improve the end-user experience by using the [Microsoft Identity Platform](../develop/v2-overview.md) with the Microsoft Authentication Library (MSAL).- - Empower your partners with access to cloud resources using [Azure AD B2B collaboration](../external-identities/what-is-b2b.md). Cloud resources remove the overhead of configuring point-to-point federation with your partners. ### Address compliance and governance
-Ensure compliance with regulatory requirements by enforcing corporate access policies and monitoring user access to applications and associated data using integrated audit tools and APIs. With Azure AD, you can monitor application sign-ins through reports that use [Security Incident and Event Monitoring (SIEM) tools](../reports-monitoring/plan-monitoring-and-reporting.md). You can access the reports from the portal or APIs, and programmatically audit who has access to your applications and remove access to inactive users via access reviews.
+To comply with regulatory requirements, enforce corporate access policies and monitor user access to applications and associated data using integrated audit tools and APIs. With Azure AD, you can monitor application sign-ins through reports that use [Security Incident and Event Monitoring (SIEM) tools](../reports-monitoring/plan-monitoring-and-reporting.md). You can access the reports from the portal or APIs, and programmatically audit who has access to your applications and remove access to inactive users via access reviews.
## Plan your migration phases and project strategy
-When technology projects fail, it is often due to mismatched expectations, the right stakeholders not being involved, or a lack of communication. Ensure your success by planning the project itself.
+When technology projects fail, it's often due to mismatched expectations, the right stakeholders not being involved, or a lack of communication. Ensure your success by planning the project itself.
### The phases of migration
The following table includes the key roles and their contributions:
| Role | Contributions | | - | - | | **Project Manager** | Project coach accountable for guiding the project, including:<br /> - gain executive support<br /> - bring in stakeholders<br /> - manage schedules, documentation, and communications |
-| **Identity Architect / Azure AD App Administrator** | They are responsible for the following:<br /> - design the solution in cooperation with stakeholders<br /> - document the solution design and operational procedures for handoff to the operations team<br /> - manage the pre-production and production environments |
+| **Identity Architect / Azure AD App Administrator** | They're responsible for the following:<br /> - design the solution in cooperation with stakeholders<br /> - document the solution design and operational procedures for handoff to the operations team<br /> - manage the pre-production and production environments |
| **On premises AD operations team** | The organization that manages the different on-premises identity sources such as AD forests, LDAP directories, HR systems etc.<br /> - perform any remediation tasks needed before synchronizing<br /> - Provide the service accounts required for synchronization<br /> - provide access to configure federation to Azure AD | | **IT Support Manager** | A representative from the IT support organization who can provide input on the supportability of this change from a helpdesk perspective. | | **Security Owner** | A representative from the security team that can ensure that the plan will meet the security requirements of your organization. |
The following table includes the key roles and their contributions:
### Plan communications
-Effective business engagement and communication is the key to success. It is important to give stakeholders and end-users an avenue to get information and keep informed of schedule updates. Educate everyone about the value of the migration, what the expected timelines are, and how to plan for any temporary business disruption. Use multiple avenues such as briefing sessions, emails, one-to-one meetings, banners, and townhalls.
+Effective business engagement and communication are the keys to success. It's important to give stakeholders and end-users an avenue to get information and keep informed of schedule updates. Educate everyone about the value of the migration, what the expected timelines are, and how to plan for any temporary business disruption. Use multiple avenues such as briefing sessions, emails, one-to-one meetings, banners, and townhalls.
Based on the communication strategy that you have chosen for the app you may want to remind users of the pending downtime. You should also verify that there are no recent changes or business impacts that would require to postpone the deployment.
-In the following table you will find the minimum suggested communication to keep your stakeholders informed:
+In the following table you'll find the minimum suggested communication to keep your stakeholders informed:
-**Plan phases and project strategy**:
+#### Plan phases and project strategy
| Communication | Audience | | | - |
The migration states you might consider using are as follows:
| **Configuration in Progress** | Develop the changes necessary to manage authentication against Azure AD | | **Test Configuration Successful** | Evaluate the changes and authenticate the app against the test Azure AD tenant in the test environment | | **Production Configuration Successful** | Change the configurations to work against the production AD tenant and assess the app authentication in the test environment |
-| **Complete / Sign Off** | Deploy the changes for the app to the production environment and execute the against the production Azure AD tenant |
+| **Complete / Sign Off** | Deploy the changes for the app to the production environment and execute against the production Azure AD tenant |
This will ensure app owners know what the app migration and testing schedule are when their apps are up for migration, and what the results are from other apps that have already been migrated. You might also consider providing links to your bug tracker database for owners to be able to file and view issues for apps that are being migrated.
The following are our customer and partnerΓÇÖs success stories, and suggested be
### Find your apps
-The first decision point in an application migration is which apps to migrate, which if any should remain, and which apps to deprecate. There is always an opportunity to deprecate the apps that you will not use in your organization. There are several ways to find apps in your organization. **While discovering apps, ensure you are including in-development and planned apps. Use Azure AD for authentication in all future apps.**
+The first decision point in an application migration is which apps to migrate, which if any should remain, and which apps to deprecate. There is always an opportunity to deprecate the apps that you will not use in your organization. There are several ways to find apps in your organization. While discovering apps, ensure you are including in-development and planned apps. Use Azure AD for authentication in all future apps.
-**Using Active Directory Federation Services (AD FS) To gather a correct app inventory:**
+Using Active Directory Federation Services (AD FS) To gather a correct app inventory:
- **Use Azure AD Connect Health.** If you have an Azure AD Premium license, we recommend deploying [Azure AD Connect Health](../hybrid/how-to-connect-health-adfs.md) to analyze the app usage in your on premises environment. You can use the [ADFS application report](./migrate-adfs-application-activity.md) (preview) to discover ADFS applications that can be migrated and evaluate the readiness of the application to be migrated. After completing your migration, deploy [Cloud Discovery](/cloud-app-security/set-up-cloud-discovery) that allows you to continuously monitor Shadow IT in your organization once youΓÇÖre in the cloud.
For other identity providers (such as Okta or Ping), you can use their tools to
In the cloud environment, you need rich visibility, control over data travel, and sophisticated analytics to find and combat cyber threats across all your cloud services. You can gather your cloud app inventory using the following tools: - **Cloud Access Security Broker (CASB**) ΓÇô A [CASB](/cloud-app-security/) typically works alongside your firewall to provide visibility into your employeesΓÇÖ cloud application usage and helps you protect your corporate data from cybersecurity threats. The CASB report can help you determine the most used apps in your organization, and the early targets to migrate to Azure AD.- - **Cloud Discovery** - By configuring [Cloud Discovery](/cloud-app-security/set-up-cloud-discovery), you gain visibility into the cloud app usage, and can discover unsanctioned or Shadow IT apps.- - **APIs** - For apps connected to cloud infrastructure, you can use the APIs and tools on those systems to begin to take an inventory of hosted apps. In the Azure environment:- - Use the [Get-AzureWebsite](/powershell/module/servicemanagement/azure.service/get-azurewebsite) cmdlet to get information about Azure websites.-
- - Use the [Get-AzureRMWebApp](/powershell/module/azurerm.websites/get-azurermwebapp) cmdlet to get information about your Azure Web Apps.
-D
+ - Use the [Get-AzureRMWebApp](/powershell/module/azurerm.websites/get-azurermwebapp) cmdlet to get information about your Azure Web Apps.D
- You can find all the apps running on Microsoft IIS from the Windows command line using [AppCmd.exe](/iis/get-started/getting-started-with-iis/getting-started-with-appcmdexe#working-with-sites-applications-virtual-directories-and-application-pools).- - Use [Applications](/previous-versions/azure/ad/graph/api/entity-and-complex-type-reference#application-entity) and [Service Principals](/previous-versions/azure/ad/graph/api/entity-and-complex-type-reference#serviceprincipal-entity) to get you information on an app and app instance in a directory in Azure AD. ### Using manual processes
D
Once you have taken the automated approaches described above, you will have a good handle on your applications. However, you might consider doing the following to ensure you have good coverage across all user access areas: - Contact the various business owners in your organization to find the applications in use in your organization.- - Run an HTTP inspection tool on your proxy server, or analyze proxy logs, to see where traffic is commonly routed.- - Review weblogs from popular company portal sites to see what links users access the most.- - Reach out to executives or other key business members to ensure that you have covered the business-critical apps. ### Type of apps to migrate
Once you have taken the automated approaches described above, you will have a go
Once you find your apps, you will identify these types of apps in your organization: - Apps that use modern authentication protocols already- - Apps that use legacy authentication protocols that you choose to modernize- - Apps that use legacy authentication protocols that you choose NOT to modernize- - New Line of Business (LoB) apps ### Apps that use modern authentication already
In addition to the choices in the [Azure AD app gallery,](https://azuremarketpla
For legacy apps that you want to modernize, moving to Azure AD for core authentication and authorization unlocks all the power and data-richness that the [Microsoft Graph](https://developer.microsoft.com/graph/gallery/?filterBy=Samples,SDKs) and [Intelligent Security Graph](https://www.microsoft.com/security/operations/intelligence?rtc=1) have to offer.
-We recommend **updating the authentication stack code** for these applications from the legacy protocol (such as Windows-Integrated Authentication, Kerberos Constrained Delegation, HTTP Headers-based authentication) to a modern protocol (such as SAML or OpenID Connect).
+We recommend updating the authentication stack code for these applications from the legacy protocol (such as Windows-Integrated Authentication, Kerberos Constrained Delegation, HTTP Headers-based authentication) to a modern protocol (such as SAML or OpenID Connect).
### Legacy apps that you choose NOT to modernize For certain apps using legacy authentication protocols, sometimes modernizing their authentication is not the right thing to do for business reasons. These include the following types of apps: - Apps kept on-premises for compliance or control reasons.- - Apps connected to an on-premises identity or federation provider that you do not want to change.- - Apps developed using on-premises authentication standards that you have no plans to move Azure AD can bring great benefits to these legacy apps, as you can enable modern Azure AD security and governance features like [Multi-Factor Authentication](../authentication/concept-mfa-howitworks.md), [Conditional Access](../conditional-access/overview.md), [Identity Protection](../identity-protection/index.yml), [Delegated Application Access](./access-panel-manage-self-service-access.md), and [Access Reviews](../governance/manage-user-access-with-access-reviews.md#create-and-perform-an-access-review) against these apps without touching the app at all!
You usually develop LoB apps for your organizationΓÇÖs in-house use. If you have
Apps without clear owners and clear maintenance and monitoring present a security risk for your organization. Consider deprecating applications when: -- their **functionality is highly redundant** with other systems ΓÇó there is **no business owner**--- there is clearly **no usage**.
+- Their **functionality is highly redundant** with other systems
+- There is **no business owner**
+- There is clearly **no usage**
We recommend that you **do not deprecate high impact, business-critical applications**. In those cases, work with business owners to determine the right strategy.
We recommend that you **do not deprecate high impact, business-critical applicat
You are successful in this phase with: - A good understanding of the systems in scope for your migration (that you can retire once you have moved to Azure AD)- - A list of apps that includes: - What systems those apps connect to
First, start by gathering key details about your applications. The [Application
Information that is important to making your migration decision includes: - **App name** ΓÇô what is this app known as to the business?- - **App type** ΓÇô is it a third-party SaaS app? A custom line-of-business web app? An API?- - **Business criticality** ΓÇô is its high criticality? Low? Or somewhere in between?- - **User access volume** ΓÇô does everyone access this app or just a few people?- - **Planned lifespan** ΓÇô how long will this app be around? Less than six months? More than two years?- - **Current identity provider** ΓÇô what is the primary IdP for this app? Or does it rely on local storage?- - **Method of authentication** ΓÇô does the app authenticate using open standards?- - **Whether you plan to update the app code** ΓÇô is the app under planned or active development?- - **Whether you plan to keep the app on-premises** ΓÇô do you want to keep the app in your datacenter long term?- - **Whether the app depends on other apps or APIs** ΓÇô does the app currently call into other apps or APIs?- - **Whether the app is in the Azure AD gallery** ΓÇô is the app currently already integrated with the [Azure AD Gallery](https://azuremarketplace.microsoft.com/marketplace/apps/category/azure-active-directory-apps)? Other data that will help you later, but that you do not need to make an immediate migration decision includes: - **App URL** ΓÇô where do users go to access the app?- - **App description** ΓÇô what is a brief description of what the app does?- - **App owner** ΓÇô who in the business is the main POC for the app?- - **General comments or notes** ΓÇô any other general information about the app or business ownership Once you have classified your application and documented the details, then be sure to gain business owner buy-in to your planned migration strategy.
Once you have classified your application and documented the details, then be su
The app(s) you select for the pilot should represent the key identity and security requirements of your organization, and you must have clear buy-in from the application owners. Pilots typically run in a separate test environment. See [best practices for pilots](../fundamentals/active-directory-deployment-plans.md#best-practices-for-a-pilot) on the deployment plans page.
-**DonΓÇÖt forget about your external partners.** Make sure that they participate in migration schedules and testing. Finally, ensure they have a way to access your helpdesk if there were breaking issues.
+DonΓÇÖt forget about your external partners. Make sure that they participate in migration schedules and testing. Finally, ensure they have a way to access your helpdesk if there were breaking issues.
### Plan for limitations
-While some apps are easy to migrate, others may take longer due to multiple servers or instances. For example, SharePoint migration may take longer due to custom sign in pages.
+While some apps are easy to migrate, others may take longer due to multiple servers or instances. For example, SharePoint migration may take longer due to custom sign-in pages.
Many SaaS app vendors charge for changing the SSO connection. Check with them and plan for this.
Most organizations have specific requirements about identities and data protecti
You can use this information to protect access to all services integrated with Azure AD. These recommendations are aligned with Microsoft Secure Score and the [identity score in Azure AD](../fundamentals/identity-secure-score.md). The score helps you to: - Objectively measure your identity security posture- - Plan identity security improvements- - Review the success of your improvements This will also help you implement the [five steps to securing your identity infrastructure](../../security/fundamentals/steps-secure-identity.md). Use the guidance as a starting point for your organization and adjust the policies to meet your organization's specific requirements.
You are successful in this phase when you:
- Have prioritized apps based on business criticality, usage volume, and lifespan - Have selected apps that represent your requirements for a pilot- - Business-owner buy-in to your prioritization and strategy- - Understand your security posture needs and how to implement them ## Phase 3: Plan migration and testing
Once you have gained business buy-in, the next step is to start migrating these
Use the tools and guidance below to follow the precise steps needed to migrate your applications to Azure AD: - **General migration guidance** ΓÇô Use the whitepaper, tools, email templates, and applications questionnaire in the [Azure AD apps migration toolkit](./migration-resources.md) to discover, classify, and migrate your apps.- - **SaaS applications** ΓÇô See our list of [hundreds of SaaS app tutorials](../saas-apps/tutorial-list.md) and the complete [Azure AD SSO deployment plan](https://aka.ms/ssodeploymentplan) to walk through the end-to-end process.- - **Applications running on-premises** ΓÇô Learn all [about the Azure AD Application Proxy](../app-proxy/application-proxy.md) and use the complete [Azure AD Application Proxy deployment plan](https://aka.ms/AppProxyDPDownload) to get going quickly.- - **Apps youΓÇÖre developing** ΓÇô Read our step-by-step [integration](../develop/quickstart-register-app.md) and [registration](../develop/quickstart-register-app.md) guidance. After migration, you may choose to send communication informing the users of the successful deployment and remind them of any new steps that they need to take.
You can test each app by logging in with a test user and make sure all functiona
Once you have migrated the apps, go to the [Azure portal](https://aad.portal.azure.com/) to test if the migration was a success. Follow the instructions below: - Select **Enterprise Applications &gt; All applications** and find your app from the list.- - Select **Manage &gt; Users and groups** to assign at least one user or group to the app.- - Select **Manage &gt; Conditional Access**. Review your list of policies and ensure that you are not blocking access to the application with a [conditional access policy](../conditional-access/overview.md). Depending on how you configure your app, verify that SSO works properly.
If you run into problems, check out our [apps troubleshooting guide](../app-prov
If your migration fails, the best strategy is to roll back and test. Here are the steps that you can take to mitigate migration issues: - **Take screenshots** of the existing configuration of your app. You can look back if you must reconfigure the app once again.- - You might also consider **providing links to the legacy authentication**, if there was issues with cloud authentication.- - Before you complete your migration, **do not change your existing configuration** with the earlier identity provider.- - Begin by migrating **the apps that support multiple IdPs**. If something goes wrong, you can always change to the preferred IdPΓÇÖs configuration.- - Ensure that your app experience has a **Feedback button** or pointers to your **helpdesk** issues. ### Exit criteria
If your migration fails, the best strategy is to roll back and test. Here are th
You are successful in this phase when you have: - Determined how each app will be migrated- - Reviewed the migration tools- - Planned your testing including test environments and groups- - Planned rollback ## Phase 4: Plan management and insights
You are successful in this phase when you have:
Once apps are migrated, you must ensure that: - Users can securely access and manage- - You can gain the appropriate insights into usage and app health We recommend taking the following actions as appropriate to your organization.
We recommend taking the following actions as appropriate to your organization.
Once you have migrated the apps, you can enrich your userΓÇÖs experience in many ways
-**Make apps discoverable**
-
-**Point your user** to the [MyApps](https://support.microsoft.com/account-billing/sign-in-and-start-apps-from-the-my-apps-portal-2f3b1bae-0e5a-4a86-a33e-876fbd2a4510#download-and-install-the-my-apps-secure-sign-in-extension)portal experience. Here, they can access all cloud-based apps, apps you make available by using [Azure AD Connect](../hybrid/whatis-azure-ad-connect.md), and apps using [Application Proxy](../app-proxy/application-proxy.md) provided they have permissions to access those apps.
+- Make apps discoverable
+- Point your user to the [MyApps](https://support.microsoft.com/account-billing/sign-in-and-start-apps-from-the-my-apps-portal-2f3b1bae-0e5a-4a86-a33e-876fbd2a4510#download-and-install-the-my-apps-secure-sign-in-extension)portal experience. Here, they can access all cloud-based apps, apps you make available by using [Azure AD Connect](../hybrid/whatis-azure-ad-connect.md), and apps using [Application Proxy](../app-proxy/application-proxy.md) provided they have permissions to access those apps.
You can guide your users on how to discover their apps: - Use the [Existing Single Sign-on](./view-applications-portal.md) feature to **link your users to any app**- - Enable [Self-Service Application Access](./manage-self-service-access.md)to an app and **let users add apps that you curate**--- [Hide applications from end-users](./hide-application-from-user-portal.md) (default Microsoft apps or other apps) to **make the apps they do need more discoverable**
+- [Hide applications from end-users](./hide-application-from-user-portal.md) (default Microsoft apps or other apps) to make the apps they do need more discoverable
### Make apps accessible
-**Let users access apps from their mobile devices**. Users can access the MyApps portal with Intune-managed browser on their [iOS](./hide-application-from-user-portal.md) 7.0 or later or [Android](./hide-application-from-user-portal.md) devices.
+#### Let users access apps from their mobile devices
-Users can download an **Intune-managed browser**:
+Users can access the MyApps portal with Intune-managed browser on their [iOS](./hide-application-from-user-portal.md) 7.0 or later or [Android](./hide-application-from-user-portal.md) devices.
-- **For Android devices**, from the [Google play store](https://play.google.com/store/apps/details?id=com.microsoft.intune)
+Users can download an Intune-managed browser:
+- **For Android devices**, from the [Google play store](https://play.google.com/store/apps/details?id=com.microsoft.intune)
- **For Apple devices**, from the [Apple App Store](https://apps.apple.com/us/app/intune-company-portal/id719171358) or they can download the [My Apps mobile app for iOS ](https://appadvice.com/app/my-apps-azure-active-directory/824048653)
-**Let users open their apps from a browser extension.**
+#### Let users open their apps from a browser extension
Users can [download the MyApps Secure Sign-in Extension](https://www.microsoft.com/p/my-apps-secure-sign-in-extension/9pc9sckkzk84?rtc=1&activetab=pivot%3Aoverviewtab) in [Chrome,](https://chrome.google.com/webstore/detail/my-apps-secure-sign-in-ex/ggjhpefgjjfobnfoldnjipclpcfbgbhl) or [Microsoft Edge](https://www.microsoft.com/p/my-apps-secure-sign-in-extension/9pc9sckkzk84?rtc=1&activetab=pivot%3Aoverviewtab) and can launch apps right from their browser bar to: -- **Search for their apps and have their most-recently-used apps appear**--- **Automatically convert internal URLs** that you have configured in [Application Proxy](../app-proxy/application-proxy.md) to the appropriate external URLs. Your users can now work with the links they are familiar with no matter where they are.
+- Search for their apps and have their most-recently-used apps appear
+- Automatically convert internal URLs that you have configured in [Application Proxy](../app-proxy/application-proxy.md) to the appropriate external URLs. Your users can now work with the links they are familiar with no matter where they are.
-**Let users open their apps from Office.com.**
+#### Let users open their apps from Office.com
Users can go to [Office.com](https://www.office.com/) to **search for their apps and have their most-recently-used apps appear** for them right from where they do work.
Users can go to [Office.com](https://www.office.com/) to **search for their apps
Azure AD provides a centralized access location to manage your migrated apps. Go to the [Azure portal](https://portal.azure.com/) and enable the following capabilities: - **Secure user access to apps.** Enable [Conditional Access policies](../conditional-access/overview.md)or [Identity Protection](../identity-protection/overview-identity-protection.md)to secure user access to applications based on device state, location, and more.- - **Automatic provisioning.** Set up [automatic provisioning of users](../app-provisioning/user-provisioning.md) with various third-party SaaS apps that users need to access. In addition to creating user identities, it includes the maintenance and removal of user identities as status or roles change.- - **Delegate user access** **management**. As appropriate, enable self-service application access to your apps and *assign a business approver to approve access to those apps*. Use [Self-Service Group Management](../enterprise-users/groups-self-service-management.md)for groups assigned to collections of apps.- - **Delegate admin access.** using **Directory Role** to assign an admin role (such as Application administrator, Cloud Application administrator, or Application developer) to your user. ### Audit and gain insights of your apps
Azure AD provides a centralized access location to manage your migrated apps. Go
You can also use the [Azure portal](https://portal.azure.com/) to audit all your apps from a centralized location, - **Audit your app** using **Enterprise Applications, Audit**, or access the same information from the [Azure AD Reporting API](../reports-monitoring/concept-reporting-api.md) to integrate into your favorite tools.- - **View the permissions for an app** using **Enterprise Applications, Permissions** for apps using OAuth / OpenID Connect.- - **Get sign-in insights** using **Enterprise Applications, Sign-Ins**. Access the same information from the [Azure AD Reporting API.](../reports-monitoring/concept-reporting-api.md)- - **Visualize your appΓÇÖs usage** from the [Azure AD Power BI content pack](../reports-monitoring/howto-use-azure-monitor-workbooks.md) ### Exit criteria
You can also use the [Azure portal](https://portal.azure.com/) to audit all your
You are successful in this phase when you: - Provide secure app access to your users- - Manage to audit and gain insights of the migrated apps ### Do even more with deployment plans
Many [deployment plans](../fundamentals/active-directory-deployment-plans.md) ar
Visit the following support links to create or track support ticket and monitor health. -- **Azure Support:** You can call [Microsoft Support](https://azure.microsoft.com/support) and open a ticket for any Azure-
-Identity deployment issue depending on your Enterprise Agreement with Microsoft.
-
+- **Azure Support:** You can call [Microsoft Support](https://azure.microsoft.com/support) and open a ticket for any Azure Identity deployment issue depending on your Enterprise Agreement with Microsoft.
- **FastTrack**: If you have purchased Enterprise Mobility and Security (EMS) or Azure AD Premium licenses, you are eligible to receive deployment assistance from the [FastTrack program.](/enterprise-mobility-security/solutions/enterprise-mobility-fasttrack-program)- - **Engage the Product Engineering team:** If you are working on a major customer deployment with millions of users, you are entitled to support from the Microsoft account team or your Cloud Solutions Architect. Based on the projectΓÇÖs deployment complexity, you can work directly with the [Azure Identity Product Engineering team.](https://aad.portal.azure.com/#blade/Microsoft_Azure_Marketplace/MarketplaceOffersBlade/selectedMenuItemId/solutionProviders)- - **Azure AD Identity blog:** Subscribe to the [Azure AD Identity blog](https://techcommunity.microsoft.com/t5/Azure-Active-Directory-Identity/bg-p/Identity) to stay up to date with all the latest product announcements, deep dives, and roadmap information provided directly by the Identity engineering team.
active-directory Protect Against Consent Phishing https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/protect-against-consent-phishing.md
Administrators should be in control of application use by providing the right in
- Block [consent phishing emails with Microsoft Defender for Office 365](/microsoft-365/security/office-365-security/set-up-anti-phishing-policies#impersonation-settings-in-anti-phishing-policies-in-microsoft-defender-for-office-365) by protecting against phishing campaigns where an attacker is impersonating a known user in the organization. - Configure Microsoft Defender for Cloud Apps policies to help manage abnormal application activity in the organization. For example, [activity policies](/cloud-app-security/user-activity-policies), [anomaly detection](/cloud-app-security/anomaly-detection-policy), and [OAuth app policies](/cloud-app-security/app-permission-policy). - Investigate and hunt for consent phishing attacks by following the guidance on [advanced hunting with Microsoft 365 Defender](/microsoft-365/security/defender/advanced-hunting-overview).-- Allow access to trusted applications and protect against those applications that aren't:
- - Use applications that have been publisher verified. [Publisher verification](../develop/publisher-verification-overview.md) helps administrators and users understand the authenticity of application developers through a Microsoft supported vetting process.
- - [Configure user consent settings](./configure-user-consent.md?tabs=azure-portal) to allow users to only consent to specific trusted applications, such as applications developed by the organization or from verified publishers and only for low risk permissions you select.
+- Allow access to trusted applications that meet certain criteria and that protect against those applications that don't:
+ - [Configure user consent settings](./configure-user-consent.md?tabs=azure-portal) to allow users to only consent to applications that meet certain criteria, such as applications developed by your organization or from verified publishers and only for low risk permissions you select.
+ - Use applications that have been publisher verified. [Publisher verification](../develop/publisher-verification-overview.md) helps administrators and users understand the authenticity of application developers through a Microsoft supported vetting process. Even if an application does have a verified publisher, it is still important to review the consent prompt to understand and evaluate the request. For example, reviewing the permissions being requested to ensure they align with the scenario the app is requesting them to enable, additional app and publisher details on the consent prompt, etc.
- Create proactive [application governance](/microsoft-365/compliance/app-governance-manage-app-governance) policies to monitor third-party application behavior on the Microsoft 365 platform to address common suspicious application behaviors. ## Next steps
active-directory Secure Hybrid Access Integrations https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/secure-hybrid-access-integrations.md
Previously updated : 09/13/2022 Last updated : 12/16/2022 # Secure hybrid access with Azure Active Directory partner integrations
-Azure Active Directory (Azure AD) supports modern authentication protocols that help keep applications secure in a highly connected, cloud-based world. However, many business applications were created to work in a protected corporate network, and some of these applications use legacy authentication methods. As companies look to build a Zero Trust strategy and support hybrid and cloud-first work environments, they need solutions that connect apps to Azure AD and provide modern authentication solutions for legacy applications.
+Azure Active Directory (Azure AD) supports modern authentication protocols that help keep applications secure. However, many business applications work in a protected corporate network, and some use legacy authentication methods. As companies build Zero Trust strategies and support hybrid and cloud environments, there are solutions that connect apps to Azure AD and provide authentication for legacy applications.
-Azure AD natively supports modern protocols like SAML, WS-Fed, and OIDC. App Proxy in Azure AD supports Kerberos and header-based authentication. Other protocols, like SSH, NTLM, LDAP, and cookies, aren't yet supported. But ISVs can create solutions to connect these applications with Azure AD to support customers on their journey to Zero Trust.
+Learn more: [Zero Trust Deployment Guide for Microsoft Azure Active Directory](/security/blog/2020/04/30/zero-trust-deployment-guide-azure-active-directory/)
-ISVs have the opportunity to help customers discover and migrate software as a service (SaaS) applications into Azure AD. They can also connect apps that use legacy authentication methods with Azure AD. This will help customers consolidate onto a single platform (Azure AD) to simplify their app management and enable them to implement Zero Trust principles. Supporting apps that use legacy authentication makes users more secure. This solution can be a great stopgap until the customers modernize their apps to support modern authentication protocols.
+Azure AD natively supports modern protocols:
-## Solution overview
-
-The solution that you build can include the following parts:
-
-1. **App discovery**. Often, customers aren't aware of all the applications they're using. So as a first step, you can build application discovery capabilities into your solution and surface discovered applications in the user interface. This enables the customer to prioritize how they want to approach integrating their applications with Azure AD.
-2. **App migration**. Next, you can create an in-product workflow where the customer can directly integrate apps with Azure AD without having to go to the Azure AD portal. If you don't implement discovery capabilities in your solution, you can start your solution here, integrating the applications that customers do know about with Azure AD.
-3. **Legacy authentication support**. You can connect apps by using legacy authentication methods to Azure AD so that they get the benefits of single sign-on (SSO) and other features.
-4. **Conditional Access**. As an additional feature, you can enable customers to apply Azure AD [Conditional Access](../conditional-access/overview.md) policies to the applications from within your solution without having to go the Azure AD portal.
-
-The rest of this guide explains the technical considerations and our recommendations for implementing a solution.
+* Security Assertion Markup Language (SAML)
+* Web Service Federation (WS-Fed)
+* OpenID Connect (OIDC)
-## Publishing your application to Azure Marketplace
+Azure Active Directory Application Proxy, or Azure AD App Proxy supports Kerberos and header-based authentication. Other protocols, like Secure Shell (SSH), (Microsoft Windows NT LAN Manager) NTLM, Lightweight Directory Access Protocol (LDAP), and cookies, aren't supported. But, independent software vendors (ISVs) can create solutions to connect these applications with Azure AD.
-You can pre-integrate your application with Azure AD to support SSO and automated provisioning by following the process to [publish it in Azure Marketplace](../manage-apps/v2-howto-app-gallery-listing.md). Azure Marketplace is a trusted source of applications for IT admins. Applications listed there have been validated to be compatible with Azure AD. They support SSO, automate user provisioning, and can easily integrate into customer tenants with automated app registration.
+ISVs can help customers discover and migrate software as a service (SaaS) applications into Azure AD. They can connect apps that use legacy authentication methods with Azure AD. Customers can consolidate onto Azure AD to simplify their app management and implement Zero Trust principles.
-In addition, we recommend that you become a [verified publisher](../develop/publisher-verification-overview.md) so that customers know you're the trusted publisher of the app.
-
-## Enabling single sign-on for IT admins
-
-[Choose either OIDC or SAML](/azure/active-directory/manage-apps/sso-options#choosing-a-single-sign-on-method/) to enable SSO for IT administrators to your solution. The best option is to use OIDC.
-
-Microsoft Graph uses [OIDC/OAuth](../develop/v2-protocols-oidc.md). If your solution uses OIDC with Azure AD for IT administrator SSO, your customers will have a seamless end-to-end experience. They'll use OIDC to sign in to your solution, and the same JSON Web Token (JWT) that Azure AD issued can then be used to interact with Microsoft Graph.
+## Solution overview
-If your solution instead uses [SAML](/azure/active-directory/manage-apps/configure-saml-single-sign-on/) for IT administrator SSO, the SAML token won't enable your solution to interact with Microsoft Graph. You can still use SAML for IT administrator SSO, but your solution needs to support OIDC integration with Azure AD so it can get a JWT from Azure AD to properly interact with Microsoft Graph. You can use one of the following approaches:
+The solution that you build can include the following parts:
-- **Recommended SAML approach**: Create a new registration in Azure Marketplace, which is [an OIDC app](../saas-apps/openidoauth-tutorial.md). This provides the most seamless experience for your customers. They'll add both the SAML and OIDC apps to their tenant. If your application isn't in the Azure AD gallery today, you can start with a non-gallery [multi-tenant application](../develop/howto-convert-app-to-be-multi-tenant.md).
+* **App discovery** - Often, customers aren't aware of every application in use
+ * Application discovery finds applications, facilitating app integrating with Azure AD
+* **App migration** - Create a workflow to integrate apps with Azure AD without using the Azure AD portal
+ * Integrate apps that customers use today
+* **Legacy authentication support** - Connect apps with legacy authentication methods and single sign-on (SSO)
+* **Conditional Access** - Enable customers to apply Azure AD policies to apps in your solution without using the Azure AD portal
-- **Alternate SAML approach**: Your customers can manually [create an OIDC application registration](../saas-apps/openidoauth-tutorial.md) in their Azure AD tenant and ensure that they set the right URIs, endpoints, and permissions specified later in this article.
+Learn more: [What is Conditional Access?](../conditional-access/overview.md)
-You'll want to use the [client_credentials grant type](../develop/v2-oauth2-client-creds-grant-flow.md#get-a-token). It will require that your solution allows each customer to enter a client ID and secret into your user interface, and that you store this information. Get a JWT from Azure AD, and then use it to interact with Microsoft Graph.
+See the following sections for technical considerations and recommendations.
-If you choose this route, you should have ready-made documentation for your customer about how to create this application registration within their Azure AD tenant. This information includes the endpoints, URIs, and required permissions.
+## Publishing applications to Azure Marketplace
-> [!NOTE]
-> Before any applications can be used for either IT administrator or user SSO, the customer's IT administrator will need to [consent to the application in their tenant](./grant-admin-consent.md).
+Azure Marketplace is a trusted source of applications for IT admins. Applications are compatible with Azure AD and support SSO, automate user provisioning, and integrate into customer tenants with automated app registration.
-## Authentication flows
+You can pre-integrate your application with Azure AD to support SSO and automated provisioning. See, [Submit a request to publish your application in Azure Active Directory application gallery](../manage-apps/v2-howto-app-gallery-listing.md).
-The solution includes three key authentication flows that support the following scenarios:
+We recommend you become a verified publisher, so customers know you're the trusted publisher. See, [Publisher verification](../develop/publisher-verification-overview.md).
-- The customer's IT administrator signs in with SSO to administer your solution.
+## Enable single sign-on for IT admins
-- The customer's IT administrator uses your solution to integrate applications with Azure AD via Microsoft Graph.
+There are several ways to enable SSO for IT administrators to your solution. See, [Plan a single sign-on deployment, SSO options](/azure/active-directory/manage-apps/plan-sso-deployment#single-sign-on-options).
-- Users sign in to legacy applications secured by your solution and Azure AD.
+Microsoft Graph uses OIDC/OAuth. Customers use OIDC to sign in to your solution. Use the JSON Web Token (JWT) Azure AD issues to interact with Microsoft Graph. See, [OpenID Connect on the Microsoft identity platform](../develop/v2-protocols-oidc.md).
-### Your customer's IT administrator does single sign-on to your solution
+If your solution uses SAML for IT administrator SSO, the SAML token won't enable your solution to interact with Microsoft Graph. You can use SAML for IT administrator SSO, but your solution needs to support OIDC integration with Azure AD, so it can get a JWT from Azure AD to interact with Microsoft Graph. See, [How the Microsoft identity platform uses the SAML protocol](/azure/active-directory/develop/active-directory-saml-protocol-reference).
-Your solution can use either SAML or OIDC for SSO when the customer's IT administrator signs in. Either way, we recommend that the IT administrator can sign in to your solution by using their Azure AD credentials. It enables a seamless experience and allows them to use the existing security controls that they already have in place. Your solution should be integrated with Azure AD for SSO through either SAML or OIDC.
+You can use one of the following SAML approaches:
-Here's a diagram and summary of this user authentication flow:
+* **Recommended SAML approach**: Create a new registration in Azure Marketplace, which is an OIDC app. Customers add the SAML and OIDC apps to their tenant. If your application isn't in the Azure AD gallery, you can start with a non-gallery multi-tenant app.
+ * [Configure an OpenID Connect OAuth application from Azure AD app gallery](../saas-apps/openidoauth-tutorial.md)
+ * [Making your application multi-tenant](../develop/howto-convert-app-to-be-multi-tenant.md)
+* **Alternate SAML approach**: Customers can create an OIDC application registration in their Azure AD tenant and set the URIs, endpoints, and permissions
-![Diagram that shows an I T administrator being redirected by the solution to Azure AD to sign in, and then being redirected by Azure AD back to the solution in a user authentication flow.](./media/secure-hybrid-access-integrations/admin-flow.png)
+Use the client credentials grant type, which requires the solution to allow customers to enter a client ID and secret. The solution also requires you store this information. Get a JWT from Azure AD, and then use it to interact with Microsoft Graph. See, [Get a token](../develop/v2-oauth2-client-creds-grant-flow.md#get-a-token). We recommend you repare customer documentation about how to create application registration in their Azure AD tenant. Include endpoints, URIs, and permissions.
-1. The IT administrator wants to sign in to your solution with their Azure AD credentials.
+> [!NOTE]
+> Before applications are used for IT administrator or user SSO, the customer IT administrator must consent to the application in their tenant. See, [Grant tenant-wide admin consent to an application](./grant-admin-consent.md).
-2. Your solution redirects the IT administrator to Azure AD with either a SAML or an OIDC sign-in request.
+## Authentication flows
-3. Azure AD authenticates the IT administrator and then sends them back to your solution with either a SAML token or JWT in tow to be authorized within your solution.
+The solution authentication flows support the following scenarios:
-### The IT administrator integrates applications with Azure AD by using your solution
+- The customer IT administrator signs in with SSO to administer your solution
+- The customer IT administrator uses your solution to integrate applications with Azure AD with Microsoft Graph
+- Users sign in to legacy applications secured by your solution and Azure AD
-The second leg of the IT administrator journey is to integrate applications with Azure AD by using your solution. To do this, your solution will use Microsoft Graph to create application registrations and Azure AD Conditional Access policies.
+### Your customer IT administrator does single sign-on to your solution
-Here's a diagram and summary of this user authentication flow:
+Your solution can use SAML or OIDC for SSO, when the customer IT administrator signs in. We recommend the IT administrator signs in to your solution with their Azure AD credentials, which enables use of current security controls. Integrate your with Azure AD for SSO through SAML or OIDC.
-![Diagram of redirects and other interactions between the I T administrator, Azure Active Directory, your solution, and Microsoft Graph in a user authentication flow.](./media/secure-hybrid-access-integrations/registration-flow.png)
+The following diagram illustrates the user authentication flow:
+ ![Diagram of an administrator redirected to Azure AD to sign in, then redirected to the solution.](./media/secure-hybrid-access-integrations/admin-flow.png)
-1. The IT administrator wants to sign in to your solution with their Azure AD credentials.
+1. The IT administrator signs in to your solution with their Azure AD credentials
+2. The solution redirects the IT administrator to Azure AD with a SAML or an OIDC sign-in request
+3. Azure AD authenticates the IT administrator and redirects them to your solution, with a SAML token or JWT to be authorized in your solution
-2. Your solution redirects the IT administrator to Azure AD with either a SAML or an OIDC sign-in request.
+### IT administrators integrate applications with Azure AD
-3. Azure AD authenticates the IT administrator and then sends them back to your solution with either a SAML token or JWT for authorization within your solution.
+IT administrators integrate applications with Azure AD by using your solution, which employs Microsoft Graph to create application registrations and Azure AD Conditional Access policies.
-4. When the IT administrator wants to integrate one of their applications with Azure AD, rather than having to go to the Azure AD portal, your solution calls Microsoft Graph with their existing JWT to register those applications or apply Azure AD Conditional Access policies to them.
+The following diagram illustrates the user authentication flow:
-### Users sign in to the applications secured by your solution and Azure AD
+ ![Diagram of interactions between the IT administrator, Azure AD, your solution, and Microsoft Graph.](./media/secure-hybrid-access-integrations/registration-flow.png)
-When users need to sign in to individual applications secured with your solution and Azure AD, they use either OIDC or SAML. If the applications need to interact with Microsoft Graph or any Azure AD-protected API, we recommend that you configure them to use OICD. This configuration will ensure that the JWT that the applications get from Azure AD to authenticate them into the applications can also be applied for interacting with Microsoft Graph. If there's no need for the individual applications to interact with Microsoft Graph or any Azure AD protected API, then SAML will suffice.
-Here's a diagram and summary of this user authentication flow:
+1. The IT administrator signs in to your solution with their Azure AD credentials
+2. The solution redirects the IT administrator to Azure AD with a SAML or an OIDC sign-in request
+3. Azure AD authenticates the IT administrator and redirects them to your solution with a SAML token or JWT for authorization
+4. When the IT administrator integrates an application with Azure AD, the solution calls Microsoft Graph with their JWT to register applications, or apply Azure AD Conditional Access policies
-![Diagram of redirects and other interactions between the user, Azure Active Directory, your solution, and the application in a user authentication flow.](./media/secure-hybrid-access-integrations/end-user-flow.png)
+### Users sign in to the applications
-1. The user wants to sign in to an application secured by your solution and Azure AD.
-2. Your solution redirects the user to Azure AD with either a SAML or an OIDC sign-in request.
-3. Azure AD authenticates the user and then sends them back to your solution with either a SAML token or JWT for authorization within your solution.
-4. After authorization, your solution allows the original request to the application to go through by using the preferred protocol of the application.
+When users sign in to applications, they use OIDC or SAML. If the applications need to interact with Microsoft Graph or Azure AD-protected API, we recommend you configure them to use OICD. This configuration ensures the JWT is applied to interact with Microsoft Graph. If there's no need for applications to interact with Microsoft Graph, or Azure AD protected APIs, then use SAML.
-## Summary of Microsoft Graph APIs
+The following diagram shows user authentication flow:
-Your solution needs to use the following APIs. Azure AD allows you to configure either delegated permissions or application permissions. For this solution, you need only delegated permissions.
+ ![Diagram of interactions between the user, Azure AD, your solution, and the app.](./media/secure-hybrid-access-integrations/end-user-flow.png)
-- [Application Templates API](/graph/application-saml-sso-configure-api#retrieve-the-gallery-application-template-identifier/): If you're interested in searching Azure Marketplace, you can use this API to find a matching application template. **Permission required**: Application.Read.All.
+1. The user signs in to an application
+2. The solution redirects the user to Azure AD with a SAML or an OIDC sign-in request
+3. Azure AD authenticates the user and redirects them to your solution with a SAML token or JWT for authorization
+4. The solution allows the request by using the application protocol
-- [Application Registration API](/graph/api/application-post-applications): You use this API to create either OIDC or SAML application registrations so that users can sign in to the applications that the customers have secured with your solution. Doing this enables these applications to also be secured with Azure AD. **Permissions required**: Application.Read.All, Application.ReadWrite.All.
+## Microsoft Graph API
-- [Service Principal API](/graph/api/serviceprincipal-update): After you register the app, you need to update the service principal object to set some SSO properties. **Permissions required**: Application.ReadWrite.All, Directory.AccessAsUser.All, AppRoleAssignment.ReadWrite.All (for assignment).
+We recommend use of the following APIs. Use Azure AD to configure delegated permissions or application permissions. For this solution, use delegated permissions.
-- [Conditional Access API](/graph/api/resources/conditionalaccesspolicy): If you want to also apply Azure AD Conditional Access policies to these user applications, you can use this API. **Permissions required**: Policy.Read.All, Policy.ReadWrite.ConditionalAccess, and Application.Read.All.
+* **Applications templates API** - In Azure Marketplace, use this API to find a matching application template
+ * Permissions required: Application.Read.All
+* **Application registration API** - Create OIDC or SAML application registrations for users to sign in to applications secured with your solution
+ * Permissions required: Application.Read.All, Application.ReadWrite.All
+* **Service principal API** - After you register the app, update the service principal object to set SSO properties
+ * Permissions required: Application.ReadWrite.All, Directory.AccessAsUser.All, AppRoleAssignment.ReadWrite.All (for assignment)
+* **Conditional Access API** - Apply Azure AD Conditional Access policies to user applications
+ * Permissions required: Policy.Read.All, Policy.ReadWrite.ConditionalAccess, and Application.Read.All
-## Example Graph API scenarios
+Learn more [Use the Microsoft Graph API](/graph/use-the-api?context=graph%2Fapi%2F1.0&view=graph-rest-1.0&preserve-view=true)
-This section provides a reference example for using Microsoft Graph APIs to implement application registrations, connect legacy applications, and enable Conditional Access policies via your solution. This section also gives guidance on automating admin consent, getting the token-signing certificate, and assigning users and groups. This functionality might be useful in your solution.
+## Microsoft Graph API scenarios
-### Use the Graph API to register apps with Azure AD
+Use the following information to implement application registrations, connect legacy applications, and enable Conditional Access policies. Learn to automate admin consent, get the token-signing certificate, and assign users and groups.
-#### Add apps that are in Azure Marketplace
+### Use Microsoft Graph API to register apps with Azure AD
-Some of the applications that your customer is using will already be available in [Azure Marketplace](https://azuremarketplace.microsoft.com/marketplace/apps). You can create a solution that programmatically adds these applications to the customer's tenant. The following code is an example of using the Microsoft Graph API to search Azure Marketplace for a matching template and then registering the application in the customer's Azure AD tenant.
+#### Add apps in Azure Marketplace
-Search Azure Marketplace for a matching application. When you're using the Application Templates API, the display name is case-sensitive.
+Some applications your customers use are in the [Azure Marketplace](https://azuremarketplace.microsoft.com/marketplace/apps). You can create a solution that adds applications to the customer tenant. Use the following example with Microsoft Graph API to search Azure Marketplace for a template.
+> [!NOTE]
+> In Application Templates API, the display name is case-sensitive.
+
```http Authorization: Required with a valid Bearer token Method: Get
Method: Get
https://graph.microsoft.com/v1.0/applicationTemplates?$filter=displayname eq "Salesforce.com" ```
-If a match is found from the preceding API call, capture the ID and then make the following API call while providing a user-friendly display name for the application in the JSON body:
+If you find a match from the API call, capture the ID. Make the following API call and provide a display name for the application in the JSON body:
```https Authorization: Required with a valid Bearer token
https://graph.microsoft.com/v1.0/applicationTemplates/cd3ed3de-93ee-400b-8b19-b6
} ```
-When you make the preceding API call, you'll also generate a service principal object, which might take a few seconds. Be sure to capture the application ID and the service principal ID. You'll use them in the next API calls.
+After you make the API call, you generate a service principal object. Capture the application ID and the service principal ID to use in the next API calls.
-Next, patch the service principal object with the SAML protocol and the appropriate login URL:
+Patch the service principal object with the SAML protocol and a login URL:
```https Authorization: Required with a valid Bearer token
https://graph.microsoft.com/v1.0/servicePrincipals/3161ab85-8f57-4ae0-82d3-7a1f7
} ```
-Finally, patch the application object with the appropriate redirect URIs and the identifier URIs:
+Patch the application object with redirect URIs and the identifier URIs:
```https Authorization: Required with a valid Bearer token
https://graph.microsoft.com/v1.0/applications/54c4806b-b260-4a12-873c-9671169837
} ```
-#### Add apps that are not in Azure Marketplace
+#### Add apps not in Azure Marketplace
-If you can't find a match in Azure Marketplace or you just want to integrate a custom application, you can register a custom application in Azure AD by using this template ID: **8adf8e6e-67b2-4cf2-a259-e3dc5476c621**. Then, make the following API call while providing a user-friendly display name of the application in the JSON body:
+If there's no match in Azure Marketplace, or to integrate a custom application, register a custom application in Azure AD with the template ID: 8adf8e6e-67b2-4cf2-a259-e3dc5476c621. Then, make the following API call and provide an application display name in the JSON body:
```https Authorization: Required with a valid Bearer token
https://graph.microsoft.com/v1.0/applicationTemplates/8adf8e6e-67b2-4cf2-a259-e3
} ```
-When you make the preceding API call, you'll also generate a service principal object, which might take a few seconds. Be sure to capture the application ID and the service principal ID. You'll use them in the next API calls.
+After you make the API call, you generate a service principal object. Capture the application ID and the service principal ID to use in the next API calls.
-Next, patch the service principal object with the SAML protocol and the appropriate login URL:
+Patch the service principal object with the SAML protocol and a login URL:
```https Authorization: Required with a valid Bearer token
https://graph.microsoft.com/v1.0/servicePrincipals/3161ab85-8f57-4ae0-82d3-7a1f7
} ```
-Finally, patch the application object with the appropriate redirect URIs and the identifier URIs:
+Patch the application object with redirect URIs and identifier URIs:
```https Authorization: Required with a valid Bearer token
https://graph.microsoft.com/v1.0/applications/54c4806b-b260-4a12-873c-9671169837
} ```
-#### Cut over to Azure AD single sign-on
+#### Use Azure AD single sign-on
-After you have the SaaS applications registered inside Azure AD, the applications still need to be cut over to start using Azure AD as their identity provider. There are two ways to do this:
+After the SaaS applications are registered in Azure AD, the applications need to start using Azure AD as the identity provider (IdP):
-- If the applications support one-click SSO, Azure AD can cut over the applications for the customer. The customer just needs to go into the Azure AD portal and perform the one-click SSO with the administrative credentials for the supported SaaS applications. For more information, see [One-click app configuration of single sign-on](./one-click-sso-tutorial.md).-- If the applications don't support one-click SSO, the customer needs to manually cut over the applications to start using Azure AD. For more information, see [Tutorials for integrating SaaS applications with Azure Active Directory](../saas-apps/tutorial-list.md).
+- **Applications support one-click SSO** - Azure AD enables the applications. In the Azure portal, the customer performs one-click SSO with the administrative credentials for the supported SaaS applications.
+ - Learn more: [One-click app configuration of single sign-on](./one-click-sso-tutorial.md)
+- **Applications don't support one-click SSO** - The customer enables the applications to use Azure AD.
+ - [Tutorials for integrating SaaS applications with Azure Active Directory](../saas-apps/tutorial-list.md)
-### Connect apps by using legacy authentication methods to Azure AD
+### Connect apps to Azure AD with legacy authentication
-This is where your solution can sit in between Azure AD and the application and enable the customer to get the benefits of SSO and other Azure Active Directory features, even for applications that are not supported. To do so, your application will call Azure AD to authenticate the user and apply Azure AD Conditional Access policies before the user can access these applications with legacy protocols.
-
-You can enable customers to do this integration directly from your console so that the discovery and integration is a seamless end-to-end experience. This will involve your platform creating either a SAML or an OIDC application registration between your platform and Azure AD.
+Your solution can enable the customer to use SSO and Azure Active Directory features, even unsupported applications. To allow access with legacy protocols, your application calls Azure AD to authenticate the user and apply Azure AD Conditional Access policies. Enable this integration from your console. Create a SAML or an OIDC application registration between your solution and Azure AD.
#### Create a SAML application registration
-To create a SAML application registration, use this custom application template ID for a custom application: **8adf8e6e-67b2-4cf2-a259-e3dc5476c621**. Then make the following API call while providing a user-friendly display name in the JSON body:
+Use the following custom application template ID: 8adf8e6e-67b2-4cf2-a259-e3dc5476c621. Then, make the following API call and provide a display name in the JSON body:
```https Authorization: Required with a valid Bearer token
https://graph.microsoft.com/v1.0/applicationTemplates/8adf8e6e-67b2-4cf2-a259-e3
} ```
-When you make the preceding API call, you'll also generate a service principal object, which might take a few seconds. Be sure to capture the application ID and the service principal ID. You'll use them in the next API calls.
+After you make the API call, you generate a service principal object. Capture the application ID and the service principal ID to use in the next API calls.
-Next, patch the service principal object with the SAML protocol and the appropriate login URL:
+Patch the service principal object with the SAML protocol and a login URL:
```https Authorization: Required with a valid Bearer token
https://graph.microsoft.com/v1.0/servicePrincipals/3161ab85-8f57-4ae0-82d3-7a1f7
} ```
-Finally, patch the application object with the appropriate redirect URIs and the identifier URIs:
+Patch the application object with redirect URIs and identifier URIs:
```https Authorization: Required with a valid Bearer token
https://graph.microsoft.com/v1.0/applications/54c4806b-b260-4a12-873c-9671169837
#### Create an OIDC application registration
-To create an OIDC application registration, use this template ID for a custom application: **8adf8e6e-67b2-4cf2-a259-e3dc5476c621**. Then make the following API call while providing a user-friendly display name in the JSON body:
+Use the following template ID for a custom application: 8adf8e6e-67b2-4cf2-a259-e3dc5476c621. Make the following API call and provide a display name in the JSON body:
```https Authorization: Required with a valid Bearer token
https://graph.microsoft.com/v1.0/applicationTemplates/8adf8e6e-67b2-4cf2-a259-e3
} ```
-From the API call, capture the application ID and the service principal ID. You'll use them in the next API calls.
+From the API call, capture the application ID and the service principal ID to use in the next API calls.
```https Authorization: Required with a valid Bearer token
https://graph.microsoft.com/v1.0/applications/{Application Object ID}
``` > [!NOTE]
-> The API permissions listed in within the `resourceAccess` node will grant the application the *openid*, *User.Read*, and *offline_access* permissions, which should be enough to get the user signed in to your solution. For more information about permissions, see the [Microsoft Graph permissions reference](/graph/permissions-reference/).
+> The API permissions in the `resourceAccess` node grant the application the openid, User.Read, and offline_access permissions, which enable sign-in. See, [Overview of Microsoft Graph permissions](/graph/permissions-overview).
### Apply Conditional Access policies
-Customers and partners can also use the Microsoft Graph API to create or apply Conditional Access policies to customer applications. For partners, this can provide additional value because customers can apply these policies directly from your solution without having to go to the Azure AD portal.
-
-You have two options when applying Azure AD Conditional Access policies:
+Customers and partners can use the Microsoft Graph API to create or apply Conditional Access policies to customer applications. For partners, customers can apply these policies from your solution without using the Azure portal. There are two options to apply Azure AD Conditional Access policies:
-- Assign the application to an existing Conditional Access Policy.-- Create a new Conditional Access policy and assign the application to that new policy.
+- Assign the application to a Conditional Access policy
+- Create a new Conditional Access policy and assign the application to it
-#### Use an existing Conditional Access policy
+#### Use a Conditional Access policy
-First, run the following query to get a list of all Conditional Access policies. Get the object ID of the policy that you want to modify.
+For a list of Conditional Access policies, run the following query. Get the policy object ID to modify.
```https Authorization: Required with a valid Bearer token
Method:GET
https://graph.microsoft.com/v1.0/identity/conditionalAccess/policies ```
-Next, patch the policy by including the application object ID to be in scope of `includeApplications` within the JSON body:
+To patch the policy, include the application object ID to be in scope of `includeApplications`, in the JSON body:
```https Authorization: Required with a valid Bearer token
https://graph.microsoft.com/v1.0/identity/conditionalAccess/policies/{policyid}
#### Create a new Conditional Access policy
-Add the application object ID to be in scope of `includeApplications` within the JSON body:
+Add the application object ID to be in scope of `includeApplications`, in the JSON body:
```https Authorization: Required with a valid Bearer token
https://graph.microsoft.com/v1.0/identity/conditionalAccess/policies/
} ```
-If you're interested in creating new Azure AD Conditional Access policies, here are some additional templates that can help get you started with using the [Conditional Access API](../conditional-access/howto-conditional-access-apis.md):
+To create new Azure AD Conditional Access policies, see [Conditional Access: Programmatic access](../conditional-access/howto-conditional-access-apis.md).
```https #Policy Template for Requiring Compliant Device
If you're interested in creating new Azure AD Conditional Access policies, here
### Automate admin consent
-If the customer is onboarding numerous applications from your platform to Azure AD, you can automate admin consent for them so they don't have to manually consent to lots of applications. You can also do this automation via Microsoft Graph. You'll need both the service principal object ID of the application that you created in previous API calls and the service principal object ID of Microsoft Graph from the customer's tenant.
+If the customer is adding applications from your solution to Azure AD, you can automate administrator consent with Microsoft Graph. You need the application service principal object ID you created in API calls, and the Microsoft Graph service principal object ID from the customer tenant.
-Get the service principal object ID of Microsoft Graph by making this API call:
+Get the Microsoft Graph service principal object ID by making the following API call:
```https Authorization: Required with a valid Bearer token
Method:GET
https://graph.microsoft.com/v1.0/serviceprincipals/?$filter=appid eq '00000003-0000-0000-c000-000000000000'&$select=id,appDisplayName ```
-When you're ready to automate admin consent, make this API call:
+To automate admin consent, make the following API call:
```https Authorization: Required with a valid Bearer token
https://graph.microsoft.com/v1.0/oauth2PermissionGrants
### Get the token-signing certificate
-To get the public portion of the token-signing certificate for all these applications, use `GET` from the Azure AD metadata endpoint for the application:
+To get the public portion of the token-signing certificate, use `GET` from the Azure AD metadata endpoint for the application:
```https Method:GET
https://login.microsoftonline.com/{Tenant_ID}/federationmetadata/2007-06/federat
### Assign users and groups
-After you've published the application to Azure AD, you can optionally assign it to users and groups to ensure that it shows up on the [MyApplications](/azure/active-directory/user-help/my-applications-portal-workspaces/) portal. This assignment is stored on the service principal object that was generated when you created the application.
+After you publish the application to Azure AD, you can assign the app to users and groups to ensure it appears on the My Apps portal. This assignment is on the service principal object generated when you created the application. See, [My Apps portal overview](/azure/active-directory/manage-apps/myapps-overview).
-First, get any `AppRole` instances that the application may have associated with it. It's common for SaaS applications to have various `AppRole` instances associated with them. For custom applications, there's typically just the one default `AppRole` instance. Get the ID of the `AppRole` instance that you want to assign:
+Get `AppRole` instances the application might have associated with it. It's common for SaaS applications to have various `AppRole` instances associated with them. Typically, for custom applications, there's one default `AppRole` instance. Get the `AppRole` instance ID you want to assign:
```https Authorization: Required with a valid Bearer token
Method:GET
https://graph.microsoft.com/v1.0/servicePrincipals/3161ab85-8f57-4ae0-82d3-7a1f71680b27 ```
-Next, get the object ID of the user or group from Azure AD that you want to assign to the application. Also take the app role ID from the previous API call and submit it as part of the patch body on the service principal:
+From Azure AD, get the user or group object ID that you want to assign to the application. Take the app role ID from the previous API call and submit it with the patch body on the service principal:
```https Authorization: Required with a valid Bearer token
https://graph.microsoft.com/v1.0/servicePrincipals/3161ab85-8f57-4ae0-82d3-7a1f7
## Partnerships
-Microsoft has partnerships with these application delivery controller (ADC) providers to help protect legacy applications while using existing networking and delivery controllers.
-
-| **ADC provider** | **Link** |
-| | |
-| Akamai Enterprise Application Access | [Akamai Enterprise Application Access](../saas-apps/akamai-tutorial.md) |
-| Citrix ADC | [Citrix ADC](../saas-apps/citrix-netscaler-tutorial.md) |
-| F5 BIG-IP Access Policy Manager | [F5 BIG-IP Access Policy Manager](./f5-aad-integration.md) |
-| Kemp LoadMaster | [Kemp LoadMaster](../saas-apps/kemp-tutorial.md) |
-| Pulse Secure Virtual Traffic Manager | [Pulse Secure Virtual Traffic Manager](../saas-apps/pulse-secure-virtual-traffic-manager-tutorial.md) |
-
-The following VPN solution providers connect with Azure AD to enable modern authentication and authorization methods like SSO and multifactor authentication.
-
-| **VPN vendor** | **Link** |
-| | |
-| Cisco AnyConnect | [Cisco AnyConnect](../saas-apps/cisco-anyconnect.md) |
-| Fortinet FortiGate | [Fortinet FortiGate](../saas-apps/fortigate-ssl-vpn-tutorial.md) |
-| F5 BIG-IP Access Policy Manager | [F5 BIG-IP Access Policy Manager](./f5-aad-password-less-vpn.md) |
-| Palo Alto Networks GlobalProtect | [Palo Alto Networks GlobalProtect](../saas-apps/paloaltoadmin-tutorial.md) |
-| Pulse Connect Secure | [Pulse Connect Secure](../saas-apps/pulse-secure-pcs-tutorial.md) |
-
-The following providers of software-defined perimeter (SDP) solutions connect with Azure AD to enable modern authentication and authorization methods like SSO and multifactor authentication.
-
-| **SDP vendor** | **Link** |
-| | |
-| Datawiza Access Broker | [Datawiza Access Broker](./datawiza-with-azure-ad.md) |
-| Perimeter 81 | [Perimeter 81](../saas-apps/perimeter-81-tutorial.md) |
-| Silverfort Authentication Platform | [Silverfort Authentication Platform](./silverfort-azure-ad-integration.md) |
-| Strata Maverics Identity Orchestrator | [Strata Maverics Identity Orchestrator](../saas-apps/maverics-identity-orchestrator-saml-connector-tutorial.md) |
-| Zscaler Private Access | [Zscaler Private Access](../saas-apps/zscalerprivateaccess-tutorial.md) |
+To help protect legacy applications, while using networking and delivery controllers, Microsoft has partnerships with the following application delivery controller (ADC) providers.
+
+* **Akamai Enterprise Application Access**
+ * [Tutorial: Azure AD SSO integration with Akamai](../saas-apps/akamai-tutorial.md)
+* **Citrix ADC**
+ * [Tutorial: Azure AD SSO integration with Citrix ADC SAML Connector for Azure AD (Kerberos-based authentication)](../saas-apps/citrix-netscaler-tutorial.md)
+* **F5 BIG-IP Access Policy Manager**
+ * [Tutorial: Azure AD SSO integration with Citrix ADC SAML Connector for Azure AD (Kerberos-based authentication)](./f5-aad-integration.md)
+* **Kemp LoadMaster**
+ * [Tutorial: Azure AD SSO integration with Kemp LoadMaster Azure AD integration](../saas-apps/kemp-tutorial.md)
+* **Pulse Secure Virtual Traffic Manager**
+ * [Tutorial: Azure AD SSO integration with Pulse Secure Virtual Traffic Manager](../saas-apps/pulse-secure-virtual-traffic-manager-tutorial.md)
+
+The following VPN solution providers connect with Azure AD to enable modern authentication and authorization methods like SSO and multifactor authentication (MFA).
+
+* **Cisco AnyConnect**
+ * [Tutorial: Azure AD SSO integration with Cisco AnyConnect](../saas-apps/cisco-anyconnect.md)
+* **Fortinet FortiGate**
+ * [Tutorial: Azure AD SSO integration with FortiGate SSL VPN](../saas-apps/fortigate-ssl-vpn-tutorial.md)
+* **F5 BIG-IP Access Policy Manager**
+ * [Tutorial: Configure F5 BIG-IP SSL-VPN for Azure AD SSO](./f5-aad-password-less-vpn.md)
+* **Palo Alto Networks GlobalProtect**
+ * [Tutorial: Azure AD SSO integration with Palo Alto Networks - Admin UI](../saas-apps/paloaltoadmin-tutorial.md)
+* **Pulse Connect Secure**
+ * [Tutorial: Azure AD SSO integration with Pulse Secure PCS](../saas-apps/pulse-secure-pcs-tutorial.md)
+
+The following software-defined perimeter (SDP) solutions providers connect with Azure AD for authentication and authorization methods like SSO and MFA.
+
+* **Datawiza Access Broker**
+ * [Tutorial: Configure Secure Hybrid Access with Azure AD and Datawiza](./datawiza-with-azure-ad.md)
+* **Perimeter 81**
+ * [Tutorial: Azure AD SSO integration with Perimeter 81](../saas-apps/perimeter-81-tutorial.md)
+* **Silverfort Authentication Platform**
+ * [Tutorial: Configure Secure Hybrid Access with Azure AD and Silverfort](./silverfort-azure-ad-integration.md)
+* **Strata Maverics Identity Orchestrator**
+ * [Integrate Azure AD SSO with Maverics Identity Orchestrator SAML Connector](../saas-apps/maverics-identity-orchestrator-saml-connector-tutorial.md)
+* **Zscaler Private Access**
+ * [Tutorial: Integrate Zscaler Private Access with Azure AD](../saas-apps/zscalerprivateaccess-tutorial.md)
active-directory Whats New Docs https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/whats-new-docs.md
Title: "What's new in Azure Active Directory application management" description: "New and updated documentation for the Azure Active Directory application management." Previously updated : 12/01/2022 Last updated : 01/05/2023
Welcome to what's new in Azure Active Directory (Azure AD) application management documentation. This article lists new docs that have been added and those that have had significant updates in the last three months. To learn what's new with the application management service, see [What's new in Azure AD](../fundamentals/whats-new.md).
+## December 2022
+
+### Updated articles
+
+- [Grant consent on behalf of a single user by using PowerShell](grant-consent-single-user.md)
+- [Tutorial: Configure F5 BIG-IP SSL-VPN for Azure AD SSO](f5-aad-password-less-vpn.md)
+- [Integrate F5 BIG-IP with Azure Active Directory](f5-aad-integration.md)
+- [Azure Active Directory application management: What's new](whats-new-docs.md)
+- [Deploy F5 BIG-IP Virtual Edition VM in Azure](f5-bigip-deployment-guide.md)
+- [End-user experiences for applications](end-user-experiences.md)
+- [Tutorial: Migrate your applications from Okta to Azure Active Directory](migrate-applications-from-okta-to-azure-active-directory.md)
+- [Tutorial: Configure F5 BIG-IP Access Policy Manager for Kerberos authentication](f5-big-ip-kerberos-advanced.md)
+- [Tutorial: Configure F5 BIG-IP Easy Button for Kerberos single sign-on](f5-big-ip-kerberos-easy-button.md)
+- [Tutorial: Configure F5 BIG-IP Easy Button for header-based and LDAP single sign-on](f5-big-ip-ldap-header-easybutton.md)
## November 2022 ### Updated articles
Welcome to what's new in Azure Active Directory (Azure AD) application managemen
- [Tutorial: Configure F5 BIG-IP Easy Button for header-based and LDAP single sign-on](f5-big-ip-ldap-header-easybutton.md) - [Tutorial: Migrate your applications from Okta to Azure Active Directory](migrate-applications-from-okta-to-azure-active-directory.md) - [Tutorial: Configure Secure Hybrid Access with Azure Active Directory and Silverfort](silverfort-azure-ad-integration.md)-
-## September 2022
-
-### New articles
--- [Tutorial: Configure Datawiza to enable Azure Active Directory Multi-Factor Authentication and single sign-on to Oracle PeopleSoft](datawiza-azure-ad-sso-oracle-peoplesoft.md)-- [SAML Request Signature Verification (Preview)](howto-enforce-signed-saml-authentication.md)-
-### Updated articles
--- [Manage app consent policies](manage-app-consent-policies.md)-- [Unexpected consent prompt when signing in to an application](application-sign-in-unexpected-user-consent-prompt.md)
active-directory Pim Create Azure Ad Roles And Resource Roles Review https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/privileged-identity-management/pim-create-azure-ad-roles-and-resource-roles-review.md
Previously updated : 10/20/2022 Last updated : 1/9/2023
The need for access to privileged Azure resource and Azure AD roles by employees
To create access reviews for Azure resources, you must be assigned to the [Owner](../../role-based-access-control/built-in-roles.md#owner) or the [User Access Administrator](../../role-based-access-control/built-in-roles.md#user-access-administrator) role for the Azure resources. To create access reviews for Azure AD roles, you must be assigned to the [Global Administrator](../roles/permissions-reference.md#global-administrator) or the [Privileged Role Administrator](../roles/permissions-reference.md#privileged-role-administrator) role.
-Access Reviews for **Service Principals** requires an Entra Workload Identities Premium plan.
+Access Reviews for **Service Principals** requires an Entra Workload Identities Premium plan in addition to Azure AD Premium P2 license.
- Workload Identities Premium licensing: You can view and acquire licenses on the [Workload Identities blade](https://portal.azure.com/#view/Microsoft_Azure_ManagedServiceIdentity/WorkloadIdentitiesBlade) in the Azure portal.
active-directory Pim Deployment Plan https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/privileged-identity-management/pim-deployment-plan.md
Previously updated : 12/10/2021 Last updated : 1/9/2023
In case the role expires, you can **extend** or **renew** these assignments.
## Plan the project
-When technology projects fail, itΓÇÖs typically because of mismatched expectations on impact, outcomes, and responsibilities. To avoid these pitfalls, [ensure that youΓÇÖre engaging the right stakeholders](../fundamentals/active-directory-deployment-plans.md#include-the-right-stakeholders) and that stakeholder roles in the project are well understood.
+When technology projects fail, itΓÇÖs typically because of mismatched expectations on impact, outcomes, and responsibilities. To avoid these pitfalls, [ensure that youΓÇÖre engaging the right stakeholders](../fundamentals/active-directory-deployment-plans.md) and that stakeholder roles in the project are well understood.
### Plan a pilot
active-directory Concept All Sign Ins https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/reports-monitoring/concept-all-sign-ins.md
Previously updated : 11/04/2022 Last updated : 01/05/2023
To access the sign-ins log for a tenant, you must have one of the following role
- Global Reader - Reports Reader
+>[!NOTE]
+>To see Conditional Access data in the sign-ins log, you need to be a user in one of the following roles:
+Company Administrator, Global Reader, Security Administrator, Security Reader, Conditional Access Administrator .
+ The sign-in activity report is available in [all editions of Azure AD](reference-reports-data-retention.md#how-long-does-azure-ad-store-the-data). If you have an Azure Active Directory P1 or P2 license, you can access the sign-in activity report through the Microsoft Graph API. See [Getting started with Azure Active Directory Premium](../fundamentals/active-directory-get-started-premium.md) to upgrade your Azure Active Directory edition. It will take a couple of days for the data to show up in Graph after you upgrade to a premium license with no data activities before the upgrade. **To access the Azure AD sign-ins log preview:**
active-directory Plan Monitoring And Reporting https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/reports-monitoring/plan-monitoring-and-reporting.md
Title: Plan reports & monitoring deployment - Azure AD description: Describes how to plan and execute implementation of reporting and monitoring. --++
Last updated 12/19/2022 -
-# Customer intent: As an Azure AD administrator, I want to monitor logs and report on access to increase security
+# Customer intent: For an Azure AD administrator to monitor logs and report on access
-# Plan an Azure Active Directory reporting and monitoring deployment
+# Azure Active Directory reporting and monitoring deployment dependencies
-Your Azure Active Directory (Azure AD) reporting and monitoring solution depends on your legal, security, and operational requirements and your existing environment and processes. This article presents the various design options and guides you to the right deployment strategy.
+Your Azure Active Directory (Azure AD) reporting and monitoring solution depends on legal, security, operational requirements, and your environment's processes. Use the following sections to learn about design options and deployment strategy.
-### Benefits of Azure AD reporting and monitoring
+## Benefits of Azure AD reporting and monitoring
-Azure AD reporting provides a comprehensive view and logs of Azure AD activity in your environment, including sign-in events, audit events, and changes to your directory.
+Azure AD reporting has a view, and logs, of Azure AD activity in your environment: sign-in and audit events, also changes to your directory.
-The provided data enables you to:
+Use data output to:
* determine how your apps and services are used. * detect potential risks affecting the health of your environment.
For detailed feature and licensing information, see the [Azure Active Directory
To deploy Azure AD monitoring and reporting you'll need a user who is a Global Administrator or Security Administrator for the Azure AD tenant.
-Depending on the final destination of your log data, you'll need one of the following:
-
+* [Azure Monitor data platform](../../azure-monitor/data-platform.md)
+* [Azure Monitor naming and terminology changes](../../azure-monitor/terminology.md)
+* [How long does Azure AD store reporting data?](./reference-reports-data-retention.md)
* An Azure storage account that you have `ListKeys` permissions for. We recommend that you use a general storage account and not a Blob storage account. For storage pricing information, see the [Azure Storage pricing calculator](https://azure.microsoft.com/pricing/calculator/?service=storage). * An Azure Event Hubs namespace to integrate with third-party SIEM solutions. * An Azure Log Analytics workspace to send logs to Azure Monitor logs.
Depending on the final destination of your log data, you'll need one of the foll
Reporting and monitoring are used to meet your business requirements, gain insights into usage patterns, and increase your organization's security posture. In this project, you'll define the audiences that will consume and monitor reports, and define your Azure AD monitoring architecture.
-### Engage the right stakeholders
+## Stakeholders, communications, and documentation
When technology projects fail, they typically do so due to mismatched expectations on effect, outcomes, and responsibilities. To avoid these pitfalls, [ensure that you're engaging the right stakeholders](../fundamentals/active-directory-deployment-plans.md). Also ensure that stakeholder roles in the project are well understood by documenting the stakeholders and their project input and responsibilities.
The following roles can read Azure AD reports:
Learn More About [Azure AD Administrative Roles](../roles/permissions-reference.md). Always apply the concept of least privileges to reduce the risk of an account compromise. Consider implementing [Privileged Identity Management](../privileged-identity-management/pim-configure.md) to further secure your organization.
-### Plan communications
+### Engage stakeholders
-Communication is critical to the success of any new service. Proactively communicate with your users how their experience will change, when it will change, and how to gain support if they experience issues.
+Successful projects align expectations, outcomes, and responsibilities. See, [Azure Active Directory deployment plans](../fundamentals/active-directory-deployment-plans.md). Document and communicate stakeholder roles that require input and accountability.
-### Document your current infrastructure and policies
+### Communications plan
-Your current infrastructure and policies will drive your reporting and monitoring design. Ensure that you know
+Tell your users when, and how, their experience will change. Provide contact information for support.
* What, if any, SIEM tools you're using. * Your Azure infrastructure, including existing storage accounts and monitoring being used.
Your current infrastructure and policies will drive your reporting and monitorin
To better prioritize the use cases and solutions, organize the options by "required for solution to meet business needs," "nice to have to meet business needs," and "not applicable."
-|Area |Description |
-|-|-|
-|Retention| **Log retention of more than 30 days**. ΓÇÄDue to legal or business requirements it's required to store audit logs and sign in logs of Azure AD longer than 30 days. |
-|Analytics| **The logs need to be searchable**. ΓÇÄThe stored logs need to be searchable with analytic tools. |
-| Operational Insights| **Insights for various teams**. The need to give access for different users to gain operational insights such as application usage, sign in errors, self-service usage, trends, etc. |
-| Security Insights| **Insights for various teams**. The need to give access for different users to gain operational insights such as application usage, sign in errors, self service usage, trends, etc. |
-| Integration in SIEM systems | **SIEM integration**. ΓÇÄThe need to integrate and stream Azure AD sign-in logs and audit logs to existing SIEM systems. |
+### Considerations
-### Choose a monitoring solution architecture
+* **Retention** - Log retention: store audit logs and sign in logs of Azure AD longer than 30 days
+* **Analytics** - Logs are searchable with analytic tools
+* **Operational and security insights** - Provide access to application usage, sign-in errors, self-service usage, trends, etc.
+* **SIEM integration** - Integrate and stream Azure AD sign-in logs and audit logs to SIEM systems
-With Azure AD monitoring, you can route your Azure AD activity logs to a system that best meets your business needs. You can then retain them for long-term reporting and analysis to gain insights into your environment, and integrate it with SIEM tools.
+### Monitoring solution architecture
-#### Decision flow chart![An image showing what is described in subsequent sections](media/reporting-deployment-plan/deploy-reporting-flow-diagram.png)
+With Azure AD monitoring, you can route Azure AD activity logs and retain them for long-term reporting and analysis to gain environment insights, and integrate it with SIEM tools. Use the following decision flow chart to help select an architecture.
-#### Archive logs in a storage account
+ ![Decision matrix for business-need architecture.](media/reporting-deployment-plan/deploy-reporting-flow-diagram.png)
-By routing logs to an Azure storage account, you can keep them for longer than the default retention period outlined in our [retention policies](./reference-reports-data-retention.md). Use this method if you need to archive your logs, but don't need to integrate them with an SIEM system, and don't need ongoing queries and analysis. You can still do on-demand searches.
+#### Archive logs in a storage account
-Learn how to [route data to your storage account](./quickstart-azure-monitor-route-logs-to-storage-account.md).
+You can keep logs longer than the default retention period by routing them to an Azure storage account.
-#### Send logs to Azure Monitor logs
+ > [!IMPORTANT]
+ > Use this archival method if there is no need to integrate logs with a SIEM system, or no need for ongoing queries and analysis. You can use on-demand searches.
-[Azure Monitor logs](../../azure-monitor/logs/log-query-overview.md) consolidate monitoring data from different sources. It also provides a query language and analytics engine that gives you insights into the operation of your applications and use of resources. By sending Azure AD activity logs to Azure Monitor logs, you can quickly retrieve, monitor, and alert on collected data. Use this method when you don't have an existing SIEM solution that you want to send your data to directly but do want queries and analysis. Once your data is in Azure Monitor logs, you can then send it to event hub, and from there to a SIEM if you want to.
+Learn more:
-Learn how to [send data to Azure Monitor logs](./howto-integrate-activity-logs-with-log-analytics.md).
+* [How long does Azure AD store reporting data?](./reference-reports-data-retention.md)
+* [Tutorial: Archive Azure AD logs to an Azure storage account](./quickstart-azure-monitor-route-logs-to-storage-account.md)
#### Stream logs to storage and SIEM tools
-Routing logs to an Azure event hub enables integration with third-party SIEM tools. This integration allows you to combine Azure AD activity log data with other data managed by your SIEM, to provide richer insights into your environment.
-
+* [Integrate Azure AD logs with Azure Monitor logs](./howto-integrate-activity-logs-with-log-analytics.md).
+* [Analyze Azure AD activity logs with Azure Monitor logs](/MicrosoftDocs/azure-docs/blob/main/articles/active-directory/reports-monitoring/howto-analyze-activity-logs-log-analytics.md).
* Learn how to [stream logs to an event hub](./tutorial-azure-monitor-stream-logs-to-event-hub.md). * Learn how to [Archive Azure AD logs to an Azure Storage account](./quickstart-azure-monitor-route-logs-to-storage-account.md). * [Integrate Azure AD logs with Splunk by using Azure Monitor](./howto-integrate-activity-logs-with-splunk.md)
Routing logs to an Azure event hub enables integration with third-party SIEM too
- Consider implementing [Azure role-based access control](../../role-based-access-control/overview.md) - [Learn more about report retention policies](./reference-reports-data-retention.md). - [Analyze Azure AD activity logs with Azure Monitor logs](./howto-analyze-activity-logs-log-analytics.md)+
active-directory Reference Azure Ad Sla Performance https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/reports-monitoring/reference-azure-ad-sla-performance.md
The SLA attainment is truncated at three places after the decimal. Numbers are n
| September | 99.999% | 99.998% | | October | 99.999% | 99.999% | | November | 99.998% | 99.999% |
-| December | 99.978% | |
+| December | 99.978% | 99.999% |
### How is Azure AD SLA measured?
active-directory Delegate By Task https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/roles/delegate-by-task.md
Previously updated : 11/24/2022 Last updated : 01/05/2023
You can further restrict permissions by assigning roles at smaller scopes or by
> [!div class="mx-tableFixed"] > | Task | Least privileged role | Additional roles | > | - | | - |
-> | Disable device | [Cloud Device Administrator](permissions-reference.md#cloud-device-administrator) | |
-> | Enable device | [Cloud Device Administrator](permissions-reference.md#cloud-device-administrator) | |
+> | Delete device | [Cloud Device Administrator](permissions-reference.md#cloud-device-administrator) | [Intune Administrator](permissions-reference.md#intune-administrator) |
+> | Disable device | [Cloud Device Administrator](permissions-reference.md#cloud-device-administrator) | [Intune Administrator](permissions-reference.md#intune-administrator) |
+> | Enable device | [Cloud Device Administrator](permissions-reference.md#cloud-device-administrator) | [Intune Administrator](permissions-reference.md#intune-administrator) |
> | Read basic configuration | [Default user role](../fundamentals/users-default-permissions.md) | |
-> | Read BitLocker keys | [Security Reader](permissions-reference.md#security-reader) | [Password Administrator](permissions-reference.md#password-administrator)<br/>[Security Administrator](permissions-reference.md#security-administrator) |
+> | Read BitLocker keys | [Cloud Device Administrator](permissions-reference.md#cloud-device-administrator) | [Helpdesk Administrator](permissions-reference.md#helpdesk-administrator)<br/>[Intune Administrator](permissions-reference.md#intune-administrator)<br/>[Security Administrator](permissions-reference.md#security-administrator)<br/>[Security Reader](permissions-reference.md#security-reader) |
## Enterprise applications
active-directory Amazon Business Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/amazon-business-tutorial.md
Previously updated : 11/21/2022 Last updated : 12/21/2022
Follow these steps to enable Azure AD SSO in the Azure portal.
1. Click **Save**.
-1. On the **Set up Single Sign-On with SAML** page, in the **SAML Signing Certificate** section, find **Metadata XML** and select **Download** to download the certificate and save it on your computer.
+1. On the **Set up single sign-on with SAML** page, In the **SAML Signing Certificate** section, click copy button to copy **App Federation Metadata Url** and save it on your computer.
- ![The Certificate download link](common/metadataxml.png)
+ ![The Certificate download link](common/copy-metadataurl.png)
1. On the **Set up Amazon Business** section, copy the appropriate URL(s) based on your requirement.
In this section, you'll enable B.Simon to use Azure single sign-on by granting a
![Screenshot shows New user account defaults with Microsoft S S O, Requisitioner, and Next selected.](media/amazon-business-tutorial/group.png)
-1. On the **Upload your metadata file** wizard, click **Browse** to upload the **Metadata XML** file, which you have downloaded from the Azure portal and click **Upload**.
+1. On the **Upload your metadata file** wizard, choose **Paste XML Link** option to paste the **App Federation Metadata URL** value, which you have copied from Azure portal and click **Validate**.
![Screenshot shows Upload your metadata file, which allows you to browse to an x m l file and upload it.](media/amazon-business-tutorial/connection-data.png)
+ >[!NOTE]
+ > Alternatively, you can also upload the **Federation Metadata XML** file by clicking on the **Upload XML File** option.
+ 1. After uploading the downloaded metadata file, the fields in the **Connection data** section will populate automatically. After that click **Next**. ![Screenshot shows Connection data, where you can specify an Azure A D Identifier, Login U R L, and SAML Signing Certificate.](media/amazon-business-tutorial/connection.png)
In this section, you'll enable B.Simon to use Azure single sign-on by granting a
![Screenshot shows Attribute mapping, where you can edit your Amazon data SAML attribute names.](media/amazon-business-tutorial/attribute-mapping.png)
-1. On the **Amazon connection data** wizard, click **Next**.
+1. On the **Amazon connection data** wizard, please confirm your IDP has configured and click **Continue**.
![Screenshot shows Amazon connection data, where you can click next to continue.](media/amazon-business-tutorial/amazon-connect.png)
In this section, you test your Azure AD single sign-on configuration with follow
#### SP initiated:
-* Click on **Test this application** in Azure portal. This will redirect to Amazon Business Sign on URL where you can initiate the login flow.
+* Click on **Test this application** in Azure portal. This will redirect to Amazon Business Sign-on URL where you can initiate the login flow.
-* Go to Amazon Business Sign-on URL directly and initiate the login flow from there.
+* Go to the Amazon Business Single Sign-on URL directly and initiate the login flow from there.
#### IDP initiated: * Click on **Test this application** in Azure portal and you should be automatically signed in to the Amazon Business for which you set up the SSO.
-You can also use Microsoft My Apps to test the application in any mode. When you click the Amazon Business tile in the My Apps, if configured in SP mode you would be redirected to the application sign on page for initiating the login flow and if configured in IDP mode, you should be automatically signed in to the Amazon Business for which you set up the SSO. For more information about the My Apps, see [Introduction to the My Apps](https://support.microsoft.com/account-billing/sign-in-and-start-apps-from-the-my-apps-portal-2f3b1bae-0e5a-4a86-a33e-876fbd2a4510).
+You can also use Microsoft My Apps to test the application in any mode. When you click the Amazon Business tile in the My Apps, if configured in SP mode you would be redirected to the application sign-on page for initiating the login flow and if configured in IDP mode, you should be automatically signed in to the Amazon Business for which you set up the SSO. For more information about the My Apps, see [Introduction to the My Apps](https://support.microsoft.com/account-billing/sign-in-and-start-apps-from-the-my-apps-portal-2f3b1bae-0e5a-4a86-a33e-876fbd2a4510).
## Next steps
active-directory Atlassian Cloud Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/atlassian-cloud-tutorial.md
Title: 'Tutorial: Azure Active Directory integration with Atlassian Cloud'
+ Title: 'Tutorial: Azure Active Directory SSO integration with Atlassian Cloud'
description: Learn how to configure single sign-on between Azure Active Directory and Atlassian Cloud.
Previously updated : 11/21/2022 Last updated : 01/06/2023
-# Tutorial: Integrate Atlassian Cloud with Azure Active Directory
+# Tutorial: Azure Active Directory SSO integration with Atlassian Cloud
In this tutorial, you'll learn how to integrate Atlassian Cloud with Azure Active Directory (Azure AD). When you integrate Atlassian Cloud with Azure AD, you can:
To configure the integration of Atlassian Cloud into Azure AD, you need to add A
1. In the **Add from the gallery** section, type **Atlassian Cloud** in the search box. 1. Select **Atlassian Cloud** from results panel and then add the app. Wait a few seconds while the app is added to your tenant.
- Alternatively, you can also use the [Enterprise App Configuration Wizard](https://portal.office.com/AdminPortal/home?Q=Docs#/azureadappintegration). In this wizard, you can add an application to your tenant, add users/groups to the app, assign roles, as well as walk through the SSO configuration as well. [Learn more about Microsoft 365 wizards.](/microsoft-365/admin/misc/azure-ad-setup-guides)
- Alternatively, you can also use the [Enterprise App Configuration Wizard](https://portal.office.com/AdminPortal/home?Q=Docs#/azureadappintegration). In this wizard, you can add an application to your tenant, add users/groups to the app, assign roles, as well as walk through the SSO configuration as well. You can learn more about O365 wizards [here](/microsoft-365/admin/misc/azure-ad-setup-guides?view=o365-worldwide&preserve-view=true). ## Configure and test Azure AD SSO
In this section, you test your Azure AD single sign-on configuration with follow
#### SP initiated:
-* Click on **Test this application** in Azure portal. This will redirect to Atlassian Cloud Sign on URL where you can initiate the login flow.
+* Click on **Test this application** in Azure portal. This will redirect to Atlassian Cloud Sign-on URL where you can initiate the login flow.
* Go to Atlassian Cloud Sign-on URL directly and initiate the login flow from there.
In this section, you test your Azure AD single sign-on configuration with follow
* Click on **Test this application** in Azure portal and you should be automatically signed in to the Atlassian Cloud for which you set up the SSO.
-You can also use Microsoft My Apps to test the application in any mode. When you click the Atlassian Cloud tile in the My Apps, if configured in SP mode you would be redirected to the application sign on page for initiating the login flow and if configured in IDP mode, you should be automatically signed in to the Atlassian Cloud for which you set up the SSO. For more information about the My Apps, see [Introduction to the My Apps](https://support.microsoft.com/account-billing/sign-in-and-start-apps-from-the-my-apps-portal-2f3b1bae-0e5a-4a86-a33e-876fbd2a4510).
+You can also use Microsoft My Apps to test the application in any mode. When you click the Atlassian Cloud tile in the My Apps, if configured in SP mode you would be redirected to the application sign-on page for initiating the login flow and if configured in IDP mode, you should be automatically signed in to the Atlassian Cloud for which you set up the SSO. For more information about the My Apps, see [Introduction to the My Apps](https://support.microsoft.com/account-billing/sign-in-and-start-apps-from-the-my-apps-portal-2f3b1bae-0e5a-4a86-a33e-876fbd2a4510).
## Next steps
active-directory Canvas Lms Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/canvas-lms-tutorial.md
Previously updated : 11/21/2022 Last updated : 01/06/2023 # Tutorial: Azure AD SSO integration with Canvas
Follow these steps to enable Azure AD SSO in the Azure portal.
> [!NOTE] > These values are not real. Update these values with the actual Identifier and Sign on URL. Contact [Canvas Client support team](https://community.canvaslms.com/community/help) to get these values. You can also refer to the patterns shown in the **Basic SAML Configuration** section in the Azure portal.
-5. In the **SAML Signing Certificate** section, click **Edit** button to open **SAML Signing Certificate** dialog.
+1. On the **Set up single sign-on with SAML** page, In the **SAML Signing Certificate** section, click copy button to copy **App Federation Metadata Url** and save it on your computer.
- ![Edit SAML Signing Certificate](common/edit-certificate.png)
-
-6. In the **SAML Signing Certificate** section, copy the **THUMBPRINT** and save it on your computer.
-
- ![Copy Thumbprint value](common/copy-thumbprint.png)
-
-7. On the **Set up Canvas** section, copy the appropriate URL(s) as per your requirement.
-
- ![Copy configuration URLs](common/copy-configuration-urls.png)
+ ![The Certificate download link](common/copy-metadataurl.png)
### Create an Azure AD test user
In this section, you'll enable B.Simon to use Azure single sign-on by granting a
1. In a different web browser window, log in to your Canvas company site as an administrator.
-2. Go to **Courses \> Managed Accounts \> Microsoft**.
-
- ![Canvas](./media/canvas-lms-tutorial/course.png "Canvas")
-
-3. In the navigation pane on the left, select **Authentication**, and then click **Add New SAML Config**.
-
- ![Authentication](./media/canvas-lms-tutorial/tools.png "Authentication")
-
-4. On the Current Integration page, perform the following steps:
-
- ![Current Integration](./media/canvas-lms-tutorial/save.png "Current Integration")
+2. Go to **Admin > Microsoft OneNote > Authentication**.
+3. Choose an authentication service as **SAML**.
- a. In **IdP Entity ID** textbox, paste the value of **Azure Ad Identifier** which you have copied from Azure portal.
+ ![Canvas](./media/canvas-lms-tutorial/admin.png "Canvas")
- b. In **Log On URL** textbox, paste the value of **Login URL** which you have copied from Azure portal .
+4. On the **Current Provider** page, perform the following steps:
- c. In **Log Out URL** textbox, paste the value of **Logout URL** which you have copied from Azure portal.
+ ![Current Integration](./media/canvas-lms-tutorial/current-provider.png "Current Integration")
- d. In **Change Password Link** textbox, paste the value of **Change Password URL** which you have copied from Azure portal.
+ a. In **IdP Metadata URI** textbox, paste the value of **App Federation Metadata URL** value, which you have copied from Azure portal.
- e. In **Certificate Fingerprint** textbox, paste the **Thumbprint** value of certificate which you have copied from Azure portal.
-
- f. From the **Login Attribute** list, select **NameID**.
-
- g. From the **Identifier Format** list, select **emailAddress**.
-
- h. Click **Save Authentication Settings**.
+ b. Click **Save**.
### Create Canvas test user
To enable Azure AD users to log in to Canvas, they must be provisioned into Canv
1. Log in to your **Canvas** tenant.
-2. Go to **Courses \> Managed Accounts \> Microsoft**.
-
- ![Canvas](./media/canvas-lms-tutorial/course.png "Canvas")
-
-3. Click **Users**.
+2. Go to **Admin > Microsoft OneNote > People**.
- ![Screenshot shows Canvas menu with Users selected.](./media/canvas-lms-tutorial/user.png "Users")
+3. Click **+People**.
-4. Click **Add New User**.
+4. On the Add a New User dialog page, perform the following steps:
- ![Screenshot shows the Add a new User button.](./media/canvas-lms-tutorial/add-user.png "Users")
-
-5. On the Add a New User dialog page, perform the following steps:
-
- ![Add User](./media/canvas-lms-tutorial/name.png "Add User")
+ ![Add User](./media/canvas-lms-tutorial/new-user.png "Add User")
a. In the **Full Name** textbox, enter the name of user like **BrittaSimon**. b. In the **Email** textbox, enter the email of user like **brittasimon\@contoso.com**.
- c. In the **Login** textbox, enter the userΓÇÖs Azure AD email address like **brittasimon\@contoso.com**.
-
- d. Select **Email the user about this account creation**.
-
- e. Click **Add User**.
+ c. Click **Add User**.
> [!NOTE] > You can use any other Canvas user account creation tools or APIs provided by Canvas to provision Azure AD user accounts.
To enable Azure AD users to log in to Canvas, they must be provisioned into Canv
In this section, you test your Azure AD single sign-on configuration with following options.
-* Click on **Test this application** in Azure portal. This will redirect to Canvas Sign-on URL where you can initiate the login flow.
+* Click on **Test this application** in Azure portal. This will redirect to Canvas Sign on URL where you can initiate the login flow.
-* Go to Canvas Sign-on URL directly and initiate the login flow from there.
+* Go to Canvas Sign on URL directly and initiate the login flow from there.
* You can use Microsoft My Apps. When you click the Canvas tile in the My Apps, you should be automatically signed in to the Canvas for which you set up the SSO. For more information about the My Apps, see [Introduction to the My Apps](https://support.microsoft.com/account-billing/sign-in-and-start-apps-from-the-my-apps-portal-2f3b1bae-0e5a-4a86-a33e-876fbd2a4510).
active-directory Cch Tagetik Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/cch-tagetik-tutorial.md
Title: 'Tutorial: Azure Active Directory single sign-on (SSO) integration with CCH Tagetik | Microsoft Docs'
+ Title: 'Tutorial: Azure Active Directory SSO integration with CCH Tagetik'
description: Learn how to configure single sign-on between Azure Active Directory and CCH Tagetik.
Previously updated : 11/21/2022 Last updated : 01/06/2023
-# Tutorial: Azure Active Directory single sign-on (SSO) integration with CCH Tagetik
+# Tutorial: Azure Active Directory SSO integration with CCH Tagetik
In this tutorial, you'll learn how to integrate CCH Tagetik with Azure Active Directory (Azure AD). When you integrate CCH Tagetik with Azure AD, you can:
Follow these steps to enable Azure AD SSO in the Azure portal.
1. On the **Select a single sign-on method** page, select **SAML**. 1. On the **Set up single sign-on with SAML** page, click the pencil icon for **Basic SAML Configuration** to edit the settings.
- ![Edit Basic SAML Configuration](common/edit-urls.png)
+ ![Screenshot shows how to edit Basic SAML Configuration.](common/edit-urls.png "Basic Configuration")
-1. On the **Basic SAML Configuration** section, if you wish to configure the application in **IDP** initiated mode,perform the following steps:
+1. On the **Basic SAML Configuration** section, perform the following steps:
a. In the **Identifier** text box, type a URL using the following pattern: `https://<CUSTOMER_NAME>.saastagetik.com/prod/5/`
Follow these steps to enable Azure AD SSO in the Azure portal.
b. In the **Reply URL** text box, type a URL using the following pattern: `https://<CUSTOMER_NAME>.saastagetik.com/prod/5/`
-1. Click **Set additional URLs** and perform the following step if you wish to configure the application in **SP** initiated mode:
+1. Perform the following step if you wish to configure the application in **SP** initiated mode:
In the **Sign-on URL** text box, type a URL using the following pattern:
- `https://<CUSTOMER_NAME>.saastagetik.com/prod/5/`
+ `https://<CUSTOMER_NAME>.saastagetik.com/prod/`
> [!NOTE] > These values are not real. Update these values with the actual Identifier, Reply URL and Sign-on URL. Contact [CCH Tagetik Client support team](mailto:tgk-dl-supportmembers@wolterskluwer.com) to get these values. You can also refer to the patterns shown in the **Basic SAML Configuration** section in the Azure portal. 1. On the **Set up single sign-on with SAML** page, in the **SAML Signing Certificate** section, find **Federation Metadata XML** and select **Download** to download the certificate and save it on your computer.
- ![The Certificate download link](common/metadataxml.png)
+ ![Screenshot shows the Certificate download link.](common/metadataxml.png "Certificate")
1. On the **Set up CCH Tagetik** section, copy the appropriate URL(s) based on your requirement.
- ![Copy configuration URLs](common/copy-configuration-urls.png)
+ ![Screenshot shows to copy configuration appropriate URL.](common/copy-configuration-urls.png "Metadata")
### Create an Azure AD test user
In this section, you test your Azure AD single sign-on configuration with follow
#### SP initiated:
-* Click on **Test this application** in Azure portal. This will redirect to CCH Tagetik Sign on URL where you can initiate the login flow.
+* Click on **Test this application** in Azure portal. This will redirect to CCH Tagetik Sign-on URL where you can initiate the login flow.
* Go to CCH Tagetik Sign-on URL directly and initiate the login flow from there.
In this section, you test your Azure AD single sign-on configuration with follow
* Click on **Test this application** in Azure portal and you should be automatically signed in to the CCH Tagetik for which you set up the SSO.
-You can also use Microsoft My Apps to test the application in any mode. When you click the CCH Tagetik tile in the My Apps, if configured in SP mode you would be redirected to the application sign on page for initiating the login flow and if configured in IDP mode, you should be automatically signed in to the CCH Tagetik for which you set up the SSO. For more information about the My Apps, see [Introduction to the My Apps](https://support.microsoft.com/account-billing/sign-in-and-start-apps-from-the-my-apps-portal-2f3b1bae-0e5a-4a86-a33e-876fbd2a4510).
+You can also use Microsoft My Apps to test the application in any mode. When you click the CCH Tagetik tile in the My Apps, if configured in SP mode you would be redirected to the application sign-on page for initiating the login flow and if configured in IDP mode, you should be automatically signed in to the CCH Tagetik for which you set up the SSO. For more information about the My Apps, see [Introduction to the My Apps](https://support.microsoft.com/account-billing/sign-in-and-start-apps-from-the-my-apps-portal-2f3b1bae-0e5a-4a86-a33e-876fbd2a4510).
## Next steps
active-directory Facebook Work Accounts Provisioning Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/facebook-work-accounts-provisioning-tutorial.md
Title: 'Tutorial: Configure Facebook Work Accounts for automatic user provisioning with Azure Active Directory | Microsoft Docs' description: Learn how to automatically provision and de-provision user accounts from Azure AD to Facebook Work Accounts. -
-writer: Zhchia
--++++ Previously updated : 11/21/2022- Last updated : 01/06/2023 # Tutorial: Configure Facebook Work Accounts for automatic user provisioning This tutorial describes the steps you need to perform in both Facebook Work Accounts and Azure Active Directory (Azure AD) to configure automatic user provisioning. When configured, Azure AD automatically provisions and de-provisions users and groups to [Facebook Work Accounts](https://work.facebook.com) using the Azure AD Provisioning service. For important details on what this service does, how it works, and frequently asked questions, see [Automate user provisioning and deprovisioning to SaaS applications with Azure Active Directory](../app-provisioning/user-provisioning.md). - ## Capabilities supported+ > [!div class="checklist"] > * Create users in Facebook Work Accounts > * Remove users in Facebook Work Accounts when they do not require access anymore
The scenario outlined in this tutorial assumes that you already have the followi
* An admin account in Work Accounts with the permission to change company settings and configure integrations. ## Step 1. Plan your provisioning deployment+ 1. Learn about [how the provisioning service works](../app-provisioning/user-provisioning.md). 1. Determine who will be in [scope for provisioning](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md). 1. Determine what data to [map between Azure AD and Facebook Work Accounts](../app-provisioning/customize-application-attributes.md). - ## Step 2. Add Facebook Work Accounts from the Azure AD application gallery Add Facebook Work Accounts from the Azure AD application gallery to start managing provisioning to Facebook Work Accounts. If you have previously setup Facebook Work Accounts for SSO, you can use the same application. However it is recommended that you create a separate app when testing out the integration initially. Learn more about adding an application from the gallery [here](../manage-apps/add-application-portal.md).
The Azure AD provisioning service allows you to scope who will be provisioned ba
* If you need additional roles, you can [update the application manifest](../develop/howto-add-app-roles-in-azure-ad-apps.md) to add new roles. - ## Step 4. Configure automatic user provisioning to Facebook Work Accounts This section guides you through the steps to configure the Azure AD provisioning service to create, update, and disable users and/or groups in TestApp based on user and/or group assignments in Azure AD.
This section guides you through the steps to configure the Azure AD provisioning
1. Sign in to the [Azure portal](https://portal.azure.com). Select **Enterprise Applications**, then select **All applications**.
- ![Enterprise applications blade](common/enterprise-applications.png)
-
-2. In the applications list, select **Facebook Work Accounts**.
+1. In the applications list, select **Facebook Work Accounts**.
- ![The Facebook Work Accounts link in the Applications list](common/all-applications.png)
+1. Select the **Provisioning** tab.
-3. Select the **Provisioning** tab.
+1. Set the **Provisioning Mode** to **Automatic**.
- ![Provision tab](common/provisioning.png)
+1. Under the **Admin Credentials** section, click on **Authorize**. You will be redirected to **Facebook Work Accounts**'s authorization page. Input your Facebook Work Accounts username and click on the **Continue** button. Click **Test Connection** to ensure Azure AD can connect to Facebook Work Accounts. If the connection fails, ensure your Facebook Work Accounts account has Admin permissions and try again.
-4. Set the **Provisioning Mode** to **Automatic**.
+ :::image type="content" source="media/facebook-work-accounts-provisioning-tutorial/azure-connect.png" alt-text="Screenshot shows the Facebook Work Accounts authorization page.":::
- ![Provisioning tab](common/provisioning-automatic.png)
+1. In the **Notification Email** field, enter the email address of a person or group who should receive the provisioning error notifications and select the **Send an email notification when a failure occurs** check box.
-5. Under the **Admin Credentials** section, click on **Authorize**. You will be redirected to **Facebook Work Accounts**'s authorization page. Input your Facebook Work Accounts username and click on the **Continue** button. Click **Test Connection** to ensure Azure AD can connect to Facebook Work Accounts. If the connection fails, ensure your Facebook Work Accounts account has Admin permissions and try again.
+1. Select **Save**.
- :::image type="content" source="media/facebook-work-accounts-provisioning-tutorial/azure-connect.png" alt-text="OAuth Screen":::
+1. Under the **Mappings** section, select **Synchronize Azure Active Directory Users to Facebook Work Accounts**.
-6. In the **Notification Email** field, enter the email address of a person or group who should receive the provisioning error notifications and select the **Send an email notification when a failure occurs** check box.
-
- ![Notification Email](common/provisioning-notification-email.png)
-
-7. Select **Save**.
-
-8. Under the **Mappings** section, select **Synchronize Azure Active Directory Users to Facebook Work Accounts**.
-
-9. Review the user attributes that are synchronized from Azure AD to Facebook Work Accounts in the **Attribute-Mapping** section. The attributes selected as **Matching** properties are used to match the user accounts in Facebook Work Accounts for update operations. If you choose to change the [matching target attribute](../app-provisioning/customize-application-attributes.md), you will need to ensure that the Facebook Work Accounts API supports filtering users based on that attribute. Select the **Save** button to commit any changes.
+1. Review the user attributes that are synchronized from Azure AD to Facebook Work Accounts in the **Attribute-Mapping** section. The attributes selected as **Matching** properties are used to match the user accounts in Facebook Work Accounts for update operations. If you choose to change the [matching target attribute](../app-provisioning/customize-application-attributes.md), you will need to ensure that the Facebook Work Accounts API supports filtering users based on that attribute. Select the **Save** button to commit any changes.
|Attribute|Type|Supported for filtering| ||||
This section guides you through the steps to configure the Azure AD provisioning
|urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:employeeNumber|String| |urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:department|String|
-10. To configure scoping filters, refer to the following instructions provided in the [Scoping filter tutorial](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+1. To configure scoping filters, refer to the following instructions provided in the [Scoping filter tutorial](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
-11. To enable the Azure AD provisioning service for Facebook Work Accounts, change the **Provisioning Status** to **On** in the **Settings** section.
+1. To enable the Azure AD provisioning service for Facebook Work Accounts, change the **Provisioning Status** to **On** in the **Settings** section.
- ![Provisioning Status Toggled On](common/provisioning-toggle-on.png)
+1. Define the users and/or groups that you would like to provision to Facebook Work Accounts by choosing the desired values in **Scope** in the **Settings** section.
-12. Define the users and/or groups that you would like to provision to Facebook Work Accounts by choosing the desired values in **Scope** in the **Settings** section.
+ ![Screenshot shows the Scope dropdown in the Settings section.](common/provisioning-scope.png)
- ![Provisioning Scope](common/provisioning-scope.png)
-
-13. When you are ready to provision, click **Save**.
-
- ![Saving Provisioning Configuration](common/provisioning-configuration-save.png)
+1. When you are ready to provision, click **Save**.
This operation starts the initial synchronization cycle of all users and groups defined in **Scope** in the **Settings** section. The initial cycle takes longer to perform than subsequent cycles, which occur approximately every 40 minutes as long as the Azure AD provisioning service is running. ## Step 5. Monitor your deployment+ Once you've configured provisioning, use the following resources to monitor your deployment: * Use the [provisioning logs](../reports-monitoring/concept-provisioning-logs.md) to determine which users have been provisioned successfully or unsuccessfully
active-directory Jfrog Artifactory Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/jfrog-artifactory-tutorial.md
Title: 'Tutorial: Azure Active Directory integration with JFrog Artifactory | Microsoft Docs'
+ Title: 'Tutorial: Azure Active Directory SSO integration with JFrog Artifactory'
description: Learn how to configure single sign-on between Azure Active Directory and JFrog Artifactory.
Previously updated : 11/21/2022 Last updated : 01/06/2023
-# Tutorial: Integrate JFrog Artifactory with Azure Active Directory
+# Tutorial: Azure Active Directory SSO integration with JFrog Artifactory
In this tutorial, you'll learn how to integrate JFrog Artifactory with Azure Active Directory (Azure AD). When you integrate JFrog Artifactory with Azure AD, you can:
Follow these steps to enable Azure AD SSO in the Azure portal.
1. On the **Select a Single sign-on method** page, select **SAML**. 1. On the **Set up Single Sign-On with SAML** page, click the pencil icon for **Basic SAML Configuration** to edit the settings.
- ![Edit Basic SAML Configuration](common/edit-urls.png)
+ ![Screenshot shows how to edit Basic SAML Configuration.](common/edit-urls.png "Basic Configuration")
1. On the **Basic SAML Configuration** section, if you wish to configure the application in **IDP** initiated mode, enter the values for the following fields:
Follow these steps to enable Azure AD SSO in the Azure portal.
b. In the **Reply URL** text box, type a URL using the following pattern:
- - For Artifactory Self-hosted: `https://<servername>.jfrog.io/artifactory/webapp/saml/loginResponse`
+ - For Artifactory Self-hosted: `https://<FQDN>/artifactory/webapp/saml/loginResponse`
- For Artifactory SaaS: `https://<servername>.jfrog.io/artifactory/webapp/saml/loginResponse`
-1. Click **Set additional URLs** and perform the following step if you wish to configure the application in **SP** initiated mode:
+1. Perform the following step if you wish to configure the application in **SP** initiated mode:
In the **Sign-on URL** text box, type a URL using the following pattern:
- - For Artifactory Self-hosted: `https://<servername>.jfrog.io/<servername>/webapp/`
+ - For Artifactory Self-hosted: `https://<FQDN>/<servername>/webapp/`
- For Artifactory SaaS: `https://<servername>.jfrog.io/ui/login` > [!NOTE]
Follow these steps to enable Azure AD SSO in the Azure portal.
c. Click **Save**.
-4. In the **Set up Single Sign-On with SAML** page, in the **SAML Signing Certificate** section, locate the **Certificate (Base64)** and select **Download** to download the certificate and save it on your computer.
+1. In the **Set up Single Sign-On with SAML** page, in the **SAML Signing Certificate** section, locate the **Certificate (Base64)** and select **Download** to download the certificate and save it on your computer.
- ![The Certificate download link](./media/jfrog-artifactory-tutorial/certificate-base.png)
+ ![Screenshot shows the Certificate download link.](./media/jfrog-artifactory-tutorial/certificate-base.png "Certificate")
-6. Configure the Artifactory (SAML Service Provider Name) with the 'Identifier' field (see step 4). In the **Set up JFrog Artifactory** section, copy the appropriate URL(s) based on your requirement.
+1. Configure the Artifactory (SAML Service Provider Name) with the 'Identifier' field (see step 4). In the **Set up JFrog Artifactory** section, copy the appropriate URL(s) based on your requirement.
- - For Artifactory Self-hosted: `https://<servername>.jfrog.io/artifactory/webapp/saml/loginResponse`
+ - For Artifactory Self-hosted: `https://<FQDN>/artifactory/webapp/saml/loginResponse`
- For Artifactory SaaS: `https://<servername>.jfrog.io/<servername>/webapp/saml/loginResponse`
- ![Copy configuration URLs](common/copy-configuration-urls.png)
+ ![Screenshot shows to copy configuration appropriate URL.](common/copy-configuration-urls.png "Metadata")
### Create an Azure AD test user
In this section, you'll enable B.Simon to use Azure single sign-on by granting a
## Configure JFrog Artifactory SSO
-To configure single sign-on on **JFrog Artifactory** side, you need to send the downloaded **Certificate (Raw)** and appropriate copied URLs from Azure portal to [JFrog Artifactory support team](https://support.jfrog.com). They set this setting to have the SAML SSO connection set properly on both sides.
+To configure single sign-on on **JFrog Artifactory** side, you need to send the downloaded **Certificate (Base64)** and appropriate copied URLs from Azure portal to [JFrog Artifactory support team](https://support.jfrog.com). They set this setting to have the SAML SSO connection set properly on both sides.
### Create JFrog Artifactory test user
In this section, you test your Azure AD single sign-on configuration with follow
#### SP initiated:
-* Click on **Test this application** in Azure portal. This will redirect to JFrog Artifactory Sign on URL where you can initiate the login flow.
+* Click on **Test this application** in Azure portal. This will redirect to JFrog Artifactory Sign-on URL where you can initiate the login flow.
* Go to JFrog Artifactory Sign-on URL directly and initiate the login flow from there.
In this section, you test your Azure AD single sign-on configuration with follow
* Click on **Test this application** in Azure portal and you should be automatically signed in to the JFrog Artifactory for which you set up the SSO.
-You can also use Microsoft My Apps to test the application in any mode. When you click the JFrog Artifactory tile in the My Apps, if configured in SP mode you would be redirected to the application sign on page for initiating the login flow and if configured in IDP mode, you should be automatically signed in to the JFrog Artifactory for which you set up the SSO. For more information about the My Apps, see [Introduction to the My Apps](https://support.microsoft.com/account-billing/sign-in-and-start-apps-from-the-my-apps-portal-2f3b1bae-0e5a-4a86-a33e-876fbd2a4510).
+You can also use Microsoft My Apps to test the application in any mode. When you click the JFrog Artifactory tile in the My Apps, if configured in SP mode you would be redirected to the application sign-on page for initiating the login flow and if configured in IDP mode, you should be automatically signed in to the JFrog Artifactory for which you set up the SSO. For more information about the My Apps, see [Introduction to the My Apps](https://support.microsoft.com/account-billing/sign-in-and-start-apps-from-the-my-apps-portal-2f3b1bae-0e5a-4a86-a33e-876fbd2a4510).
## Next steps
active-directory Netpresenter Provisioning Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/netpresenter-provisioning-tutorial.md
Title: 'Tutorial: Configure Netpresenter Next for automatic user provisioning with Azure Active Directory | Microsoft Docs' description: Learn how to automatically provision and de-provision user accounts from Azure AD to Netpresenter Next. -
-writer: Zhchia
--++++ Previously updated : 11/21/2022- Last updated : 01/06/2023 # Tutorial: Configure Netpresenter Next for automatic user provisioning
-This tutorial describes the steps you need to perform in both Netpresenter Next and Azure Active Directory (Azure AD) to configure automatic user provisioning. When configured, Azure AD automatically provisions and de-provisions users and groups to [Netpresenter Next](https://www.Netpresenter.com/) using the Azure AD Provisioning service. For important details on what this service does, how it works, and frequently asked questions, see [Automate user provisioning and deprovisioning to SaaS applications with Azure Active Directory](../app-provisioning/user-provisioning.md).
-
+This tutorial describes the steps you need to perform in both Netpresenter Next and Azure Active Directory (Azure AD) to configure automatic user provisioning. When configured, Azure AD automatically provisions and de-provisions users and groups to [Netpresenter Next](https://www.Netpresenter.com/) using the Azure AD Provisioning service. For important details on what this service does, how it works, and frequently asked questions, see [Automate user provisioning and deprovisioning to SaaS applications with Azure Active Directory](../app-provisioning/user-provisioning.md).
## Capabilities supported+ > [!div class="checklist"] > * Create users in Netpresenter Next > * Remove users in Netpresenter Next when they do not require access anymore
The scenario outlined in this tutorial assumes that you already have the followi
* An administrator account with Netpresenter Next. ## Step 1. Plan your provisioning deployment+ 1. Learn about [how the provisioning service works](../app-provisioning/user-provisioning.md).
-2. Determine who will be in [scope for provisioning](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
-3. Determine what data to [map between Azure AD and Netpresenter Next](../app-provisioning/customize-application-attributes.md).
+1. Determine who will be in [scope for provisioning](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+1. Determine what data to [map between Azure AD and Netpresenter Next](../app-provisioning/customize-application-attributes.md).
## Step 2. Configure Netpresenter Next to support provisioning with Azure AD 1. Sign in to the Netpresenter Next with an administrator account.
-2. Click on cogwheel icon to go to settings page.
-3. In the settings page, click on **System** to open the submenu and click on **Azure AD**.
-4. Click on the **Generate Token** button.
-5. Save the **SCIM Endpoint URL** and **Token** at a secure place, you'll need it in the **Step 5**.
+1. Click on cogwheel icon to go to settings page.
+1. In the settings page, click on **System** to open the submenu and click on **Azure AD**.
+1. Click on the **Generate Token** button.
+1. Save the **SCIM Endpoint URL** and **Token** at a secure place, you'll need it in the **Step 5**.
- ![Token and URL](media/netpresenter/get-token-and-url.png)
+ ![Screenshot shows the Token and URL values in Netpresenter Next.](media/netpresenter/get-token-and-url.png)
-1. **Optional:** Under **Sign in options**, 'Force sign in with Microsoft' can be enabled or disabled. By enabling it, users with an Azure AD account will lose the ability to sign in with their local account.
+1. **Optional:** Under **Sign in options**, you can enable or disable 'Force sign in with Microsoft'. If enabled, users with an Azure AD account will lose the ability to sign in with their local account.
## Step 3. Add Netpresenter Next from the Azure AD application gallery
-Add Netpresenter Next from the Azure AD application gallery to start managing provisioning to Netpresenter Next. If you have previously setup Netpresenter Next for SSO, you can use the same application. However it's recommended that you create a separate app when testing out the integration initially. Learn more about adding an application from the gallery [here](../manage-apps/add-application-portal.md).
+Add Netpresenter Next from the Azure AD application gallery to start managing provisioning to Netpresenter Next. If you have previously setup Netpresenter Next for SSO, you can use the same application. However it's recommended that you create a separate app when testing out the integration initially. Learn more about adding an application from the gallery [here](../manage-apps/add-application-portal.md).
-## Step 4. Define who will be in scope for provisioning
+## Step 4. Define who will be in scope for provisioning
-The Azure AD provisioning service allows you to scope who will be provisioned based on assignment to the application and or based on attributes of the user / group. If you choose to scope who will be provisioned to your app based on assignment, you can use the following [steps](../manage-apps/assign-user-or-group-access-portal.md) to assign users and groups to the application. If you choose to scope who will be provisioned based solely on attributes of the user or group, you can use a scoping filter as described [here](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+The Azure AD provisioning service allows you to scope who will be provisioned based on assignment to the application and or based on attributes of the user / group. If you choose to scope who will be provisioned to your app based on assignment, you can use the following [steps](../manage-apps/assign-user-or-group-access-portal.md) to assign users and groups to the application. If you choose to scope who will be provisioned based solely on attributes of the user or group, you can use a scoping filter as described [here](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
* Start small. Test with a small set of users and groups before rolling out to everyone. When scope for provisioning is set to assigned users and groups, you can control this by assigning one or two users or groups to the app. When scope is set to all users and groups, you can specify an [attribute based scoping filter](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).- * If you need additional roles, you can [update the application manifest](../develop/howto-add-app-roles-in-azure-ad-apps.md) to add new roles. - ## Step 5. Configure automatic user provisioning to Netpresenter Next This section guides you through the steps to configure the Azure AD provisioning service to create, update, and disable users and/or groups in TestApp based on user and/or group assignments in Azure AD.
This section guides you through the steps to configure the Azure AD provisioning
1. Sign in to the [Azure portal](https://portal.azure.com). Select **Enterprise Applications**, then select **All applications**.
- ![Enterprise applications blade](common/enterprise-applications.png)
-
-2. In the applications list, select **Netpresenter Next**.
+1. In the applications list, select **Netpresenter Next**.
- ![The Netpresenter Next link in the Applications list](common/all-applications.png)
+1. Select the **Provisioning** tab.
-3. Select the **Provisioning** tab.
+1. Set the **Provisioning Mode** to **Automatic**.
- ![Provision tab](common/provisioning.png)
+1. Under the **Admin Credentials** section, input your Netpresenter Next Tenant URL and Secret Token. Click **Test Connection** to ensure Azure AD can connect to Netpresenter Next. If the connection fails, ensure your Netpresenter Next account has Admin permissions and try again.
-4. Set the **Provisioning Mode** to **Automatic**.
+ ![Screenshot shows the fields for tenant URL and token.](common/provisioning-testconnection-tenanturltoken.png)
- ![Provisioning tab](common/provisioning-automatic.png)
+1. In the **Notification Email** field, enter the email address of a person or group who should receive the provisioning error notifications and select the **Send an email notification when a failure occurs** check box.
-5. Under the **Admin Credentials** section, input your Netpresenter Next Tenant URL and Secret Token. Click **Test Connection** to ensure Azure AD can connect to Netpresenter Next. If the connection fails, ensure your Netpresenter Next account has Admin permissions and try again.
+1. Select **Save**.
- ![Token](common/provisioning-testconnection-tenanturltoken.png)
+1. Under the **Mappings** section, select **Synchronize Azure Active Directory Users to Netpresenter Next**.
-6. In the **Notification Email** field, enter the email address of a person or group who should receive the provisioning error notifications and select the **Send an email notification when a failure occurs** check box.
-
- ![Notification Email](common/provisioning-notification-email.png)
-
-7. Select **Save**.
-
-8. Under the **Mappings** section, select **Synchronize Azure Active Directory Users to Netpresenter Next**.
-
-9. Review the user attributes that are synchronized from Azure AD to Netpresenter Next in the **Attribute-Mapping** section. The attributes selected as **Matching** properties are used to match the user accounts in Netpresenter Next for update operations. If you choose to change the [matching target attribute](../app-provisioning/customize-application-attributes.md), you'll need to ensure that the Netpresenter Next API supports filtering users based on that attribute. Select the **Save** button to commit any changes.
+1. Review the user attributes that are synchronized from Azure AD to Netpresenter Next in the **Attribute-Mapping** section. The attributes selected as **Matching** properties are used to match the user accounts in Netpresenter Next for update operations. If you choose to change the [matching target attribute](../app-provisioning/customize-application-attributes.md), you'll need to ensure that the Netpresenter Next API supports filtering users based on that attribute. Select the **Save** button to commit any changes.
|Attribute|Type|Supported for filtering|Required by Netpresenter Next |||||
This section guides you through the steps to configure the Azure AD provisioning
|phoneNumbers[type eq "work"].value|String|| |phoneNumbers[type eq "mobile"].value|String||
-10. To configure scoping filters, refer to the following instructions provided in the [Scoping filter tutorial](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+1. To configure scoping filters, refer to the following instructions provided in the [Scoping filter tutorial](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
-11. To enable the Azure AD provisioning service for Netpresenter Next, change the **Provisioning Status** to **On** in the **Settings** section.
+1. To enable the Azure AD provisioning service for Netpresenter Next, change the **Provisioning Status** to **On** in the **Settings** section.
- ![Provisioning Status Toggled On](common/provisioning-toggle-on.png)
+1. Define the users and/or groups that you would like to provision to Netpresenter Next by choosing the desired values in **Scope** in the **Settings** section.
-12. Define the users and/or groups that you would like to provision to Netpresenter Next by choosing the desired values in **Scope** in the **Settings** section.
+ ![Screenshot shows the Scope dropdown in the Settings section.](common/provisioning-scope.png)
- ![Provisioning Scope](common/provisioning-scope.png)
+1. When you're ready to provision, click **Save**.
-13. When you'r ready to provision, click **Save**.
-
- ![Saving Provisioning Configuration](common/provisioning-configuration-save.png)
-
-This operation starts the initial synchronization cycle of all users and groups defined in **Scope** in the **Settings** section. The initial cycle takes longer to perform than subsequent cycles, which occur approximately every 40 minutes as long as the Azure AD provisioning service is running.
+This operation starts the initial synchronization cycle of all users and groups defined in **Scope** in the **Settings** section. The initial cycle takes longer to perform than subsequent cycles, which occur approximately every 40 minutes as long as the Azure AD provisioning service is running.
## Step 6. Monitor your deployment+ Once you've configured provisioning, use the following resources to monitor your deployment: 1. Use the [provisioning logs](../reports-monitoring/concept-provisioning-logs.md) to determine which users have been provisioned successfully or unsuccessfully
-2. Check the [progress bar](../app-provisioning/application-provisioning-when-will-provisioning-finish-specific-user.md) to see the status of the provisioning cycle and how close it is to completion
-3. If the provisioning configuration seems to be in an unhealthy state, the application will go into quarantine. Learn more about quarantine states [here](../app-provisioning/application-provisioning-quarantine-status.md).
+1. Check the [progress bar](../app-provisioning/application-provisioning-when-will-provisioning-finish-specific-user.md) to see the status of the provisioning cycle and how close it is to completion
+1. If the provisioning configuration seems to be in an unhealthy state, the application will go into quarantine. Learn more about quarantine states [here](../app-provisioning/application-provisioning-quarantine-status.md).
## Additional resources
active-directory Officespace Software Provisioning Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/officespace-software-provisioning-tutorial.md
Before configuring and enabling automatic user provisioning, you should decide w
## Set up OfficeSpace Software for provisioning
-1. Sign in to your [OfficeSpace Software Admin Console](https://support.officespacesoftware.com/hc). Navigate to **Settings > Connectors**.
+1. Sign in to your [OfficeSpace Software Admin Console](https://support.officespacesoftware.com/s/). Navigate to **Settings > Connectors**.
![OfficeSpace Software Admin Console](media/officespace-software-provisioning-tutorial/settings.png)
For more information on how to read the Azure AD provisioning logs, see [Reporti
## Next steps
-* [Learn how to review logs and get reports on provisioning activity](../app-provisioning/check-status-user-account-provisioning.md)
+* [Learn how to review logs and get reports on provisioning activity](../app-provisioning/check-status-user-account-provisioning.md)
active-directory Opentext Fax Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/opentext-fax-tutorial.md
Previously updated : 11/21/2022 Last updated : 01/05/2023
In this tutorial, you'll learn how to integrate OpenText XM Fax and XM SendSecur
To get started, you need the following items: * An Azure AD subscription. If you don't have a subscription, you can get a [free account](https://azure.microsoft.com/free/).
-* OpenText XM Fax and XM SendSecure single sign-on (SSO) enabled subscription.
-* Along with Cloud Application Administrator, Application Administrator can also add or manage applications in Azure AD.
+* Azure AD Cloud Application Administrator or Application Administrator role.
For more information, see [Azure built-in roles](../roles/permissions-reference.md).
+* OpenText XM Fax and XM SendSecure subscription.
+* OpenText XM Fax and XM SendSecure administrator account.
## Scenario description In this tutorial, you configure and test Azure AD SSO in a test environment.
-* OpenText XM Fax and XM SendSecure supports **SP** initiated SSO.
+* OpenText XM Fax and XM SendSecure supports **SP-initiated** SSO.
> [!NOTE] > Identifier of this application is a fixed string value so only one instance can be configured in one tenant.
Follow these steps to enable Azure AD SSO in the Azure portal.
| **Sign-on URL** | |-|
- | `https://login.xmedius.com/` |
- | `https://login.xmedius.eu/` |
- | `https://login.xmedius.ca/` |
+ | `https://login.xmedius.com/{account}` |
+ | `https://login.xmedius.eu/{account}` |
+ | `https://login.xmedius.ca/{account}` |
1. On the **Set up single sign-on with SAML** page, in the **SAML Signing Certificate** section, find **Certificate (Base64)** and select **Download** to download the certificate and save it on your computer.
Follow these steps to enable Azure AD SSO in the Azure portal.
### Create an Azure AD test user
-In this section, you'll create a test user in the Azure portal called B.Simon.
+In this section, you'll create a test user in the Azure portal called B.Simon:
1. From the left pane in the Azure portal, select **Azure Active Directory**, select **Users**, and then select **All users**. 1. Select **New user** at the top of the screen. 1. In the **User** properties, follow these steps: 1. In the **Name** field, enter `B.Simon`.
- 1. In the **User name** field, enter the username@companydomain.extension. For example, `B.Simon@contoso.com`.
+ 1. In the **User name** field, enter the user name in the following format: username@companydomain.extension. For example, `B.Simon@contoso.com`.
1. Select the **Show password** check box, and then write down the value that's displayed in the **Password** box. 1. Click **Create**. ### Assign the Azure AD test user
-In this section, you'll enable B.Simon to use Azure single sign-on by granting access to OpenText XM Fax and XM SendSecure.
+In this section, you'll enable B.Simon to use Azure single sign-on by granting access to OpenText XM Fax and XM SendSecure:
1. In the Azure portal, select **Enterprise Applications**, and then select **All applications**. 1. In the applications list, select **OpenText XM Fax and XM SendSecure**.
In this section, you'll enable B.Simon to use Azure single sign-on by granting a
1. Provide the following required information:
- a. In the **Sign In URL** textbox, paste the **Login URL** value which you have copied from the Azure portal.
+ a. In the **Issuer (Identity Provider)** textbox, paste the **Azure AD Identifier** value which you have copied from the Azure portal.
+
+ b. In the **Sign In URL** textbox, paste the **Login URL** value which you have copied from the Azure portal.
- b. Open the downloaded **Certificate (Base64)** from the Azure portal into Notepad and paste the content into the **X.509 Signing Certificate** textbox.
+ c. Open the downloaded **Certificate (Base64)** from the Azure portal into Notepad and paste the content into the **X.509 Signing Certificate** textbox.
- c. click **Save**.
+ d. click **Save**.
> [!NOTE] > Keep the fail-safe URL (`https://login.[domain]/[account]/no-sso`) provided at the bottom of the SSO configuration section, it will allow you to log in using your XM Cloud account credentials if you lock yourself after SSO activation. ### Create OpenText XM Fax and XM SendSecure test user
-In this section, you create a user called Britta Simon at OpenText XM Fax and XM SendSecure. Work with [OpenText XM Fax and XM SendSecure support team](mailto:support@opentext.com) to add the users in the OpenText XM Fax and XM SendSecure platform. Users must be created and activated before you use single sign-on.
+Create a user called Britta Simon at OpenText XM Fax and XM SendSecure. Make sure the email is set to "B.Simon@contoso.com".
+
+> [!NOTE]
+> Users must be created and activated before you use single sign-on.
## Test SSO
-In this section, you test your Azure AD single sign-on configuration with following options.
+In this section, you test your Azure AD single sign-on configuration with the following options.
* Click on **Test this application** in Azure portal. This will redirect to OpenText XM Fax and XM SendSecure Sign-on URL where you can initiate the login flow. * Go to OpenText XM Fax and XM SendSecure Sign-on URL directly and initiate the login flow from there.
-* You can use Microsoft My Apps. When you click the OpenText XM Fax and XM SendSecure tile in the My Apps, this will redirect to OpenText XM Fax and XM SendSecure Sign-on URL. For more information about the My Apps, see [Introduction to the My Apps](../user-help/my-apps-portal-end-user-access.md).
+* You can use Microsoft My Apps. When you click the OpenText XM Fax and XM SendSecure tile in the My Apps portal, this will redirect to OpenText XM Fax and XM SendSecure Sign-on URL. For more information about the My Apps portal, see [Introduction to the My Apps portal](../user-help/my-apps-portal-end-user-access.md).
## Next steps
active-directory Tranxfer Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/tranxfer-tutorial.md
Previously updated : 11/21/2022 Last updated : 01/05/2023
Complete the following steps to enable Azure AD single sign-on in the Azure port
## Configure Tranxfer SSO
-To configure single sign-on on **Tranxfer** side, you need to send the **App Federation Metadata Url** to [Tranxfer support team](mailto:soporte@tranxfer.com). The support team will use the copied URLs to configure the single sign-on on the application.
+You'll need to log in to your Tranxfer application with the company administrator account.
+
+1. Go to **Settings -> SAML** and paste **App Federation Metadata Url** to **Metadata URL** field.
+1. If you want to give specific permissions to different user groups, you can match Azure AD groups to common **Tranxfer** permissions. To do so, fill in Azure AD group ID for each permission:
+
+ a. SEND permission to send files.
+
+ b. RECEIVE to receive files.
+
+ c. SEND + RECEIVE both of the above.
+
+ d. ADMIN company administration permission but not sending nor receiving files.
+
+ e. FULL all of the above.
+
+ ![Screenshot shows Tranxfer SAML settings.](media/tranxfer-tutorial/tranxfer-saml-settings.png "Tranxfer SAML Settings")
+
+1. If you want to give any user of your organization, the simple Send and Receive permission no matter which groups they have, enable the **Empty groups with permission** option.
+1. If you want only match permissions by groups but don't want to import Azure AD groups to Tranxfer groups enable the **Disable import groups** option.
+
+If you find any problems, please contact [Tranxfer support team](mailto:soporte@tranxfer.com). The support team will assist you in configuring the single sign-on on the application.
### Create Tranxfer test user
active-directory Trend Micro Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/trend-micro-tutorial.md
After you configure the Azure AD service and specify Azure AD as the user authen
1. Clear the browser of all cookies and then restart the browser. 1. Point your browser to the TMWS proxy server.
-For details, see [Traffic Forwarding Using PAC Files](https://docs.trendmicro.com/en-us/enterprise/trend-micro-web-security-online-help/administration_001/pac-files/traffic-forwarding-u.aspx#GUID-A4A83827-7A29-4596-B866-01ACCEDCC36B).
+For details, see [Traffic Forwarding Using PAC Files](https://docs.trendmicro.com/en-us/enterprise/trend-micro-web-security-online-help/administration/pac-files/traffic-forwarding-u.aspx).
1. Visit any internet website. TMWS will direct you to the TMWS captive portal.
active-directory Veracode Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/veracode-tutorial.md
Previously updated : 11/21/2022 Last updated : 01/05/2023
Follow these steps to enable Azure AD SSO in the Azure portal.
1. On the **Set up single sign-on with SAML** page, in the **SAML Signing Certificate** section, find **Certificate (Base64)**. Select **Download** to download the certificate and save it on your computer.
- ![Screenshot of SAML Signing Certificate section, with Download link highlighted](common/certificatebase64.png)
+ ![Screenshot of SAML Signing Certificate section, with Download link highlighted.](common/certificatebase64.png)
1. Veracode expects the SAML assertions in a specific format, which requires you to add custom attribute mappings to your SAML token attributes configuration. The following screenshot shows the list of default attributes.
- ![Screenshot of User Attributes & Claims section](common/default-attributes.png)
+ ![Screenshot of User Attributes & Claims section.](common/default-attributes.png)
1. Veracode also expects a few more attributes to be passed back in the SAML response. These attributes are also pre-populated, but you can review them per your requirements.
Follow these steps to enable Azure AD SSO in the Azure portal.
1. On the **Set up Veracode** section, copy the appropriate URL(s) based on your requirement.
- ![Screenshot of Set up Veracode section, with configuration URLs highlighted](common/copy-configuration-urls.png)
+ ![Screenshot of Set up Veracode section, with configuration URLs highlighted.](common/copy-configuration-urls.png)
### Create an Azure AD test user
In this section, you'll enable B.Simon to use Azure single sign-on by granting a
## Configure Veracode SSO
-1. In a different web browser window, sign in to your Veracode company site as an administrator.
+Notes:
+
+* These instructions assume you are using the new [Single Sign On/Just-in-Time Provisioning feature from Veracode](https://docs.veracode.com/r/Signing_On). To activate this feature if it is not already active, please contact Veracode Support.
+* These instructions are valid for all [Veracode regions](https://docs.veracode.com/r/Region_Domains_for_Veracode_APIs).
+
+1. In a different web browser window, sign in to your Veracode company site as an administrator.
1. From the menu on the top, select **Settings** > **Admin**.
- ![Screenshot of Veracode Administration, with Settings icon and Admin highlighted](./media/veracode-tutorial/admin.png "Administration")
+ ![Screenshot of Veracode Administration, with Settings icon and Admin highlighted.](./media/veracode-tutorial/admin.png "Administration")
1. Select the **SAML** tab.
-1. In the **Organization SAML Settings** section, perform the following steps:
+1. In the **SAML Certificate** section, perform the following steps:
- ![Screenshot of Organization SAML Settings section](./media/veracode-tutorial/saml.png "Administration")
+ ![Screenshot of Organization SAML Settings section.](./media/veracode-tutorial/saml.png "Administration")
a. For **Issuer**, paste the value of the **Azure AD Identifier** that you've copied from the Azure portal. b. For **Assertion Signing Certificate**, select **Choose File** to upload your downloaded certificate from the Azure portal.
- c. For **Self Registration**, select **Enable Self Registration**.
+ c. Note the values of the three URLs (**SAML Assertion URL**, **SAML Audience URL**, **Relay state URL**).
+
+ d. Click **Save**.
+
+1. Take the values of the **SAML Assertion URL**, **SAML Audience URL** and **Relay state URL** and update them in the Azure Active Directory settings for the Veracode integration.
+
+1. Select the **JIT Provisioning** tab.
+
+ ![Screenshot of JIT Provisioning tab, with various options highlighted.](./media/veracode-tutorial/just-in-time.png "JIT Provisioning")
-1. In the **Self Registration Settings** section, perform the following steps, and then select **Save**:
+1. In the **Organization Settings** section, toggle the **Configure Default Settings for Just-in-Time user provisioning** setting to **On**.
- ![Screenshot of Self Registration Settings section, with various options highlighted](./media/veracode-tutorial/save.png "Administration")
+1. In the **Basic Settings** section, for **User Data Updates**, select **Prefer Veracode User Data**.
- a. For **New User Activation**, select **No Activation Required**.
+1. In the **Access Settings** section, under **User Roles**, select from the following For more information about Veracode user roles, see the [Veracode Documentation](https://docs.veracode.com/r/c_role_permissions):
- b. For **User Data Updates**, select **Preference Veracode User Data**.
+ ![Screenshot of JIT Provisioning User Roles, with various options highlighted.](./media/veracode-tutorial/user-roles.png "JIT Provisioning")
- c. For **SAML Attribute Details**, select the following:
- * **User Roles**
* **Policy Administrator** * **Reviewer** * **Security Lead**
In this section, you'll enable B.Simon to use Azure single sign-on by granting a
* **Submitter** * **Creator** * **All Scan Types**
- * **Team Memberships**
- * **Default Team**
### Create Veracode test user
active-directory Webce Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/webce-tutorial.md
-# Azure Active Directory SSO integration with WebCE
+# Tutorial: Azure Active Directory SSO integration with WebCE
In this article, you'll learn how to integrate WebCE with Azure Active Directory (Azure AD). WebCE offers self-study online continuing education and pre-license training courses for a variety of professional licenses and designations. When you integrate WebCE with Azure AD, you can:
Complete the following steps to enable Azure AD single sign-on in the Azure port
1. On the **Basic SAML Configuration** section, perform the following steps:
- a. In the **Identifier** textbox, type a URL using one of the following patterns:
-
- | **Identifier** |
- ||
- | `https://www.webce.com/<RootPortalFolder>` |
- | `https://www.webce.com` |
+ a. In the **Identifier** textbox, type a URL using the following pattern:
+ `https://www.webce.com`
b. In the **Reply URL** textbox, type a URL using the following pattern: `https://www.webce.com/<RootPortalFolder>/login/saml20` c. In the **Sign on URL** textbox, type a URL using the following pattern:
- `https://www.webce.com/<RootPortalFolder>/login/saml20`
+ `https://www.webce.com/<RootPortalFolder>/login`
> [!Note] > These values are not the real. Update these values with the actual Identifer, Reply URL and Sign on URL. Contact [WebCE Client support team](mailto:CustomerService@WebCE.com) to get these values. You can also refer to the patterns shown in the **Basic SAML Configuration** section in the Azure portal.
In this section, a user called B.Simon is created in WebCE. WebCE supports just-
In this section, you test your Azure AD single sign-on configuration with following options.
-* Click on **Test this application** in Azure portal. This will redirect to WebCE Sign on URL where you can initiate the login flow.
+* Click on **Test this application** in Azure portal. This will redirect to WebCE Sign-on URL where you can initiate the login flow.
-* Go to WebCE Sign on URL directly and initiate the login flow from there.
+* Go to WebCE Sign-on URL directly and initiate the login flow from there.
-* You can use Microsoft My Apps. When you click the WebCE tile in the My Apps, this will redirect to WebCE Sign on URL. For more information about the My Apps, see [Introduction to the My Apps](../user-help/my-apps-portal-end-user-access.md).
+* You can use Microsoft My Apps. When you click the WebCE tile in the My Apps, this will redirect to WebCE Sign-on URL. For more information about the My Apps, see [Introduction to the My Apps](../user-help/my-apps-portal-end-user-access.md).
## Additional resources
active-directory Zenya Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/zenya-tutorial.md
Previously updated : 11/21/2022 Last updated : 01/09/2023
Follow these steps to enable Azure AD SSO in the Azure portal.
b. Fill the **Identifier** box with the value that's displayed behind the label **EntityID** on the **Zenya SAML2 info** page. This page is still open in your other browser tab. c. Fill the **Reply-URL** box with the value that's displayed behind the label **Reply URL** on the **Zenya SAML2 info** page. This page is still open in your other browser tab.
+
+ d. Fill the **Logout-URL** box with the value that's displayed behind the label **Logout URL** on the **Zenya SAML2 info** page. This page is still open in your other browser tab.
1. Zenya application expects the SAML assertions in a specific format, which requires you to add custom attribute mappings to your SAML token attributes configuration. The following screenshot shows the list of default attributes.
active-directory Configure Azure Active Directory For Cmmc Compliance https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/standards/configure-azure-active-directory-for-cmmc-compliance.md
The remaining articles in this series provide guidance and links to resources, o
Learn more:
-* DoD CMMC website - [Office of the Under Secretary of Defense for Acquisition & Sustainment Cybersecurity Maturity Model Certification](https://www.acq.osd.mil/cmmc/https://docsupdatetracker.net/index.html)
-* Microsoft Download Center - [Microsoft Product Placemat for CMMC Level 3 (preview)](https://www.microsoft.com/download/details.aspx?id=102536)
+* DoD CMMC website - [Office of the Under Secretary of Defense for Acquisition & Sustainment Cybersecurity Maturity Model Certification](https://dodcio.defense.gov/CMMC/)
+* Microsoft Download Center - [Microsoft Product Placemat for CMMC 2.0 (preview)](https://www.microsoft.com/download/details.aspx?id=102536)
### Next steps
active-directory Configure Cmmc Level 2 Additional Controls https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/standards/configure-cmmc-level-2-additional-controls.md
The remainder of this article provides guidance for all of the domains except Ac
## Audit & Accountability
-The following table provides a list of control IDs and associated customer responsibilities and guidance.
+The following table provides a list of practice statement and objectives, and Azure AD guidance and recommendations to enable you to meet these requirements with Azure AD.
-| *Control* | *Guidance* |
+| CMMC practice statement and objectives | Azure AD guidance and recommendations |
| - | - |
-| AU.L2-3.3.1<br><br>AU.L2-3.3.2 | All operations are audited in the Azure AD audit logs. Each audit log entry contains a userΓÇÖs immutable objectID that can be used to uniquely trace an individual system user to each action. You can collect and analyze logs by using a Security Information and Event Management (SIEM) solution such as Microsoft Sentinel. Alternatively, you can use Azure Event Hubs to integrate logs with third-party SIEM solutions to enable monitoring and notification.<br>[Audit activity reports in the Azure Active Directory portal](/azure/active-directory/reports-monitoring/concept-audit-logs)<br>[Connect Azure Active Directory data to Microsoft Sentinel](/azure/sentinel/connect-azure-active-directory)<br>[Tutorial: Stream logs to an Azure event hub](/azure/active-directory/reports-monitoring/tutorial-azure-monitor-stream-logs-to-event-hub) |
-| AU.L2-3.3.4 | Azure Service Health notifies you about Azure service incidents so you can take action to mitigate downtime. Configure customizable cloud alerts for Azure Active Directory. <br>[What is Azure Service Health?](/azure/service-health/overview)<br>[Three ways to get notified about Azure service issues](https://azure.microsoft.com/blog/three-ways-to-get-notified-about-azure-service-issues/)<br>[Azure Service Health](https://azure.microsoft.com/get-started/azure-portal/service-health/) |
-| AU.L2-3.3.6 | Ensure Azure AD events are included in event logging strategy. You can collect and analyze logs by using a Security Information and Event Management (SIEM) solution such as Microsoft Sentinel. Alternatively, you can use Azure Event Hubs to integrate logs with third-party SIEM solutions to enable monitoring and notification. Use Azure AD entitlement management with access reviews to ensure compliance status of accounts. <br>[Audit activity reports in the Azure Active Directory portal](/azure/active-directory/reports-monitoring/concept-audit-logs)<br>[Connect Azure Active Directory data to Microsoft Sentinel](/azure/sentinel/connect-azure-active-directory)<br>[Tutorial: Stream logs to an Azure event hub](/azure/active-directory/reports-monitoring/tutorial-azure-monitor-stream-logs-to-event-hub) |
-| AU.L2-3.3.8<br><br>AU.L2-3.3.9 | Azure AD logs are retained by default for 30 days. These logs are unable to modified or deleted and are only accessible to limited set of privileged roles.<br>[Sign-in logs in Azure Active Directory](/azure/active-directory/reports-monitoring/concept-sign-ins)<br>[Audit logs in Azure Active Directory](/azure/active-directory/reports-monitoring/concept-audit-logs)
+| AU.L2-3.3.1<br><br>**Practice statement:** Create and retain system audit logs and records to enable monitoring, analysis, investigation, and reporting of unlawful or unauthorized system activity.<br><br>**Objectives:**<br>Determine if:<br>[a.] audit logs (for example, event types to be logged) to enable monitoring, analysis, investigation, and reporting of unlawful or unauthorized system activity are specified;<br>[b.] the content of audit records needed to support monitoring, analysis, investigation, and reporting of unlawful or unauthorized system activity is defined;<br>[c.] audit records are created (generated);<br>[d.] audit records, once created, contain the defined content;<br>[e.] retention requirements for audit records are defined; and<br>[f.] audit records are retained as defined.<br><br>AU.L2-3.3.2<br><br>**Practice statement:** Ensure that the actions of individual system users can be uniquely traced to those users so they can be held accountable for their actions.<br><br>**Objectives:**<br>Determine if:<br>[a.] the content of the audit records needed to support the ability to uniquely trace users to their actions is defined; and<br>[b.] audit records, once created, contain the defined content. | All operations are audited within the Azure AD audit logs. Each audit log entry contains a userΓÇÖs immutable objectID that can be used to uniquely trace an individual system user to each action. You can collect and analyze logs by using a Security Information and Event Management (SIEM) solution such as Microsoft Sentinel. Alternatively, you can use Azure Event Hubs to integrate logs with third-party SIEM solutions to enable monitoring and notification.<br>[Audit activity reports in the Azure Active Directory portal](/azure/active-directory/reports-monitoring/concept-audit-logs.md)<br>[Connect Azure Active Directory data to Microsoft Sentinel](/azure/sentinel/connect-azure-active-directory)<br>[Tutorial: Stream logs to an Azure event hub](/azure/active-directory/reports-monitoring/tutorial-azure-monitor-stream-logs-to-event-hub.md) |
+| AU.L2-3.3.4<br><br>**Practice statement:** Alert if an audit logging process fails.<br><br>**Objectives:**<br>Determine if:<br>[a.] personnel or roles to be alerted if an audit logging process failure is identified;<br>[b.] types of audit logging process failures for which alert will be generated are defined; and<br>[c] identified personnel or roles are alerted in the event of an audit logging process failure. | Azure Service Health notifies you about Azure service incidents so you can take action to mitigate downtime. Configure customizable cloud alerts for Azure Active Directory. <br>[What is Azure Service Health?](/azure/service-health/overview.md)<br>[Three ways to get notified about Azure service issues](https://azure.microsoft.com/blog/three-ways-to-get-notified-about-azure-service-issues/)<br>[Azure Service Health](https://azure.microsoft.com/get-started/azure-portal/service-health/) |
+| AU.L2-3.3.6<br><br>**Practice statement:** Provide audit record reduction and report generation to support on-demand analysis and reporting.<br><br>**Objectives:**<br>Determine if:<br>[a.] an audit record reduction capability that supports on-demand analysis is provided; and<br>[b.] a report generation capability that supports on-demand reporting is provided. | Ensure Azure AD events are included in event logging strategy. You can collect and analyze logs by using a Security Information and Event Management (SIEM) solution such as Microsoft Sentinel. Alternatively, you can use Azure Event Hubs to integrate logs with third-party SIEM solutions to enable monitoring and notification. Use Azure AD entitlement management with access reviews to ensure compliance status of accounts. <br>[Audit activity reports in the Azure Active Directory portal](/azure/active-directory/reports-monitoring/concept-audit-logs.md)<br>[Connect Azure Active Directory data to Microsoft Sentinel](/azure/sentinel/connect-azure-active-directory.md)<br>[Tutorial: Stream logs to an Azure event hub](/azure/active-directory/reports-monitoring/tutorial-azure-monitor-stream-logs-to-event-hub.md) |
+| AU.L2-3.3.8<br><br>**Practice statement:** Protect audit information and audit logging tools from unauthorized access, modification, and deletion.<br><br>**Objectives:**<br>Determine if:<br>[a.] audit information is protected from unauthorized access;<br>[b.] audit information is protected from unauthorized modification;<br>[c.] audit information is protected from unauthorized deletion;<br>[d.] audit logging tools are protected from unauthorized access;<br>[e.] audit logging tools are protected from unauthorized modification; and<br>[f.] audit logging tools are protected from unauthorized deletion.<br><br>AU.L2-3.3.9<br><br>**Practice statement:** Limit management of audit logging functionality to a subset of privileged users.<br><br>**Objectives:**<br>Determine if:<br>[a.] a subset of privileged users granted access to manage audit logging functionality is defined; and<br>[b.] management of audit logging functionality is limited to the defined subset of privileged users. | Azure AD logs are retained by default for 30 days. These logs are unable to modified or deleted and are only accessible to limited set of privileged roles.<br>[Sign-in logs in Azure Active Directory](/azure/active-directory/reports-monitoring/concept-sign-ins.md)<br>[Audit logs in Azure Active Directory](/azure/active-directory/reports-monitoring/concept-audit-logs.md)
## Configuration Management (CM)
-The following table provides a list of control IDs and associated customer responsibilities and guidance.
+The following table provides a list of practice statement and objectives, and Azure AD guidance and recommendations to enable you to meet these requirements with Azure AD.
-| *Control* | *Guidance* |
+| CMMC practice statement and objectives | Azure AD guidance and recommendations |
| - | - |
-| CM.L2-3.4.2 | Adopt a zero-trust security posture. Use conditional access policies to restrict access to compliant devices. Configure policy settings on the device to enforce security configuration settings on the device with MDM solutions such as Microsoft Intune. Microsoft Endpoint Configuration Manager(MECM) or group policy objects can also be considered in hybrid deployments and combined with conditional access require hybrid Azure AD joined device.<br><br>**Zero-trust**<br>[Securing identity with Zero Trust](/security/zero-trust/identity)<br><br>**Conditional access**<br>[What is conditional access in Azure AD?](/azure/active-directory/conditional-access/overview)<br>[Grant controls in Conditional Access policy](/azure/active-directory/conditional-access/concept-conditional-access-grant)<br><br>**Device policies**<br>[What is Microsoft Intune?](/mem/intune/fundamentals/what-is-intune)<br>[What is Defender for Cloud Apps?](/cloud-app-security/what-is-cloud-app-security)<br>[What is app management in Microsoft Intune?](/mem/intune/apps/app-management)<br>[Microsoft Endpoint Manager overview](/mem/endpoint-manager-overview) |
-| CM.L2-3.4.5 | Azure Active Directory (Azure AD) is a cloud-based identity and access management service. Customers don't have physical access to the Azure AD datacenters. As such, each physical access restriction is satisfied by Microsoft and inherited by the customers of Azure AD. Implement Azure AD role based access controls. Eliminate standing privileged access, provide just in time access with approval workflows with Privileged Identity Management.<br>[Overview of Azure Active Directory role-based access control (RBAC)](/azure/active-directory/roles/custom-overview)<br>[What is Privileged Identity Management?](/azure/active-directory/privileged-identity-management/pim-configure)<br>[Approve or deny requests for Azure AD roles in PIM](/azure/active-directory/privileged-identity-management/azure-ad-pim-approval-workflow) |
-| CM.L2-3.4.6 | Configure device management solutions (Such as Microsoft Intune) to implement a custom security baseline applied to organizational systems to remove non-essential applications and disable unnecessary services. Leave only the fewest capabilities necessary for the systems to operate effectively. Configure conditional access to restrict access to compliant or hybrid Azure AD joined devices. <br>[What is Microsoft Intune](/mem/intune/fundamentals/what-is-intune)<br>[Require device to be marked as compliant](../conditional-access/require-managed-devices.md)<br>[Grant controls in Conditional Access policy - Require hybrid Azure AD joined device](../conditional-access/concept-conditional-access-grant.md) |
-| CM.L2-3.4.7 | Use Application Administrator role to delegate authorized use of essential applications. Use App Roles or group claims to manage least privilege access within application. Configure user consent to require admin approval and don't allow group owner consent. Configure Admin consent request workflows to enable users to request access to applications that require admin consent. Use Microsoft Defender for Cloud Apps to identify unsanctioned/unknown application use. Use this telemetry to then determine essential/non-essential apps.<br>[Azure AD built-in roles - Application Administrator](/azure/active-directory/roles/permissions-reference)<br>[Azure AD App Roles - App Roles vs. Groups ](/azure/active-directory/develop/howto-add-app-roles-in-azure-ad-apps)<br>[Configure how users consent to applications](/azure/active-directory/manage-apps/configure-user-consent?tabs=azure-portal.md)<br>[Configure group owner consent to apps accessing group data](/azure/active-directory/manage-apps/configure-user-consent-groups?tabs=azure-portal.md)<br>[Configure the admin consent workflow](/azure/active-directory/manage-apps/configure-admin-consent-workflow)<br>[What is Defender for Cloud Apps?](/defender-cloud-apps/what-is-defender-for-cloud-apps)<br>[Discover and manage Shadow IT tutorial](/defender-cloud-apps/tutorial-shadow-it) |
-| CM.L2-3.4.8 <br><br>CM.L2-3.4.9 | Configure MDM/configuration management policy to prevent the use of unauthorized software. Configure conditional access grant controls to require compliant or hybrid joined device to incorporate device compliance with MDM/configuration management policy into the conditional access authorization decision.<br>[What is Microsoft Intune](/mem/intune/fundamentals/what-is-intune)<br>[Conditional Access - Require compliant or hybrid joined devices](/azure/active-directory/conditional-access/howto-conditional-access-policy-compliant-device) |
+| CM.L2-3.4.2<br><br>**Practice statement:** Establish and enforce security configuration settings for information technology products employed in organizational systems.<br><br>**Objectives:**<br>Determine if:<br>[a.] security configuration settings for information technology products employed in the system are established and included in the baseline configuration; and<br>[b.] security configuration settings for information technology products employed in the system are enforced. | Adopt a zero-trust security posture. Use conditional access policies to restrict access to compliant devices. Configure policy settings on the device to enforce security configuration settings on the device with MDM solutions such as Microsoft Intune. Microsoft Endpoint Configuration Manager(MECM) or group policy objects can also be considered in hybrid deployments and combined with conditional access require hybrid Azure AD joined device.<br><br>**Zero-trust**<br>[Securing identity with Zero Trust](/security/zero-trust/identity.md)<br><br>**Conditional access**<br>[What is conditional access in Azure AD?](/azure/active-directory/conditional-access/overview.md)<br>[Grant controls in Conditional Access policy](/azure/active-directory/conditional-access/concept-conditional-access-grant.md)<br><br>**Device policies**<br>[What is Microsoft Intune?](/mem/intune/fundamentals/what-is-intune.md)<br>[What is Defender for Cloud Apps?](/cloud-app-security/what-is-cloud-app-security.md)<br>[What is app management in Microsoft Intune?](/mem/intune/apps/app-management.md)<br>[Microsoft Endpoint Manager overview](/mem/endpoint-manager-overview.md) |
+| CM.L2-3.4.5<br><br>**Practice statement:** Define, document, approve, and enforce physical and logical access restrictions associated with changes to organizational systems.<br><br>**Objectives:**<br>Determine if:<br>[a.] physical access restrictions associated with changes to the system are defined;<br>[b.] physical access restrictions associated with changes to the system are documented;<br>[c.] physical access restrictions associated with changes to the system are approved;<br>[d.] physical access restrictions associated with changes to the system are enforced;<br>[e.] logical access restrictions associated with changes to the system are defined;<br>[f.] logical access restrictions associated with changes to the system are documented;<br>[g.] logical access restrictions associated with changes to the system are approved; and<br>[h.] logical access restrictions associated with changes to the system are enforced. | Azure Active Directory (Azure AD) is a cloud-based identity and access management service. Customers don't have physical access to the Azure AD datacenters. As such, each physical access restriction is satisfied by Microsoft and inherited by the customers of Azure AD. Implement Azure AD role based access controls. Eliminate standing privileged access, provide just in time access with approval workflows with Privileged Identity Management.<br>[Overview of Azure Active Directory role-based access control (RBAC)](/azure/active-directory/roles/custom-overview.md)<br>[What is Privileged Identity Management?](/azure/active-directory/privileged-identity-management/pim-configure.md)<br>[Approve or deny requests for Azure AD roles in PIM](/azure/active-directory/privileged-identity-management/azure-ad-pim-approval-workflow.md) |
+| CM.L2-3.4.6<br><br>**Practice statement:** Employ the principle of least functionality by configuring organizational systems to provide only essential capabilities.<br><br>**Objectives:**<br>Determine if:<br>[a.] essential system capabilities are defined based on the principle of least functionality; and<br>[b.] the system is configured to provide only the defined essential capabilities. | Configure device management solutions (Such as Microsoft Intune) to implement a custom security baseline applied to organizational systems to remove non-essential applications and disable unnecessary services. Leave only the fewest capabilities necessary for the systems to operate effectively. Configure conditional access to restrict access to compliant or hybrid Azure AD joined devices. <br>[What is Microsoft Intune](/mem/intune/fundamentals/what-is-intune.md)<br>[Require device to be marked as compliant](../conditional-access/require-managed-devices.md)<br>[Grant controls in Conditional Access policy - Require hybrid Azure AD joined device](../conditional-access/concept-conditional-access-grant.md) |
+| CM.L2-3.4.7<br><br>**Practice statement:** Restrict, disable, or prevent the use of nonessential programs, functions, ports, protocols, and services.<br><br>**Objectives:**<br>Determine if:<br>[a.]essential programs are defined;<br>[b.] the use of nonessential programs is defined;<br>[c.] the use of nonessential programs is restricted, disabled, or prevented as defined;<br>[d.] essential functions are defined;<br>[e.] the use of nonessential functions is defined;<br>[f.] the use of nonessential functions is restricted, disabled, or prevented as defined;<br>[g.] essential ports are defined;<br>[h.] the use of nonessential ports is defined;<br>[i.] the use of nonessential ports is restricted, disabled, or prevented as defined;<br>[j.] essential protocols are defined;<br>[k.] the use of nonessential protocols is defined;<br>[l.] the use of nonessential protocols is restricted, disabled, or prevented as defined;<br>[m.] essential services are defined;<br>[n.] the use of nonessential services is defined; and<br>[o.] the use of nonessential services is restricted, disabled, or prevented as defined. | Use Application Administrator role to delegate authorized use of essential applications. Use App Roles or group claims to manage least privilege access within application. Configure user consent to require admin approval and don't allow group owner consent. Configure Admin consent request workflows to enable users to request access to applications that require admin consent. Use Microsoft Defender for Cloud Apps to identify unsanctioned/unknown application use. Use this telemetry to then determine essential/non-essential apps.<br>[Azure AD built-in roles - Application Administrator](/azure/active-directory/roles/permissions-reference.md)<br>[Azure AD App Roles - App Roles vs. Groups ](/azure/active-directory/develop/howto-add-app-roles-in-azure-ad-apps.md)<br>[Configure how users consent to applications](/azure/active-directory/manage-apps/configure-user-consent?tabs=azure-portal.md)<br>[Configure group owner consent to apps accessing group data](/azure/active-directory/manage-apps/configure-user-consent-groups?tabs=azure-portal.md)<br>[Configure the admin consent workflow](/azure/active-directory/manage-apps/configure-admin-consent-workflow.md)<br>[What is Defender for Cloud Apps?](/defender-cloud-apps/what-is-defender-for-cloud-apps.d)<br>[Discover and manage Shadow IT tutorial](/defender-cloud-apps/tutorial-shadow-it.md) |
+| CM.L2-3.4.8<br><br>**Practice statement:** Apply deny-by-exception (blocklist) policy to prevent the use of unauthorized software or deny-all, permit-by-exception (allowlist) policy to allow the execution of authorized software.<br><br>**Objectives:**<br>Determine if:<br>[a.] a policy specifying whether allowlist or blocklist is to be implemented is specified;<br>[b.] the software allowed to execute under allowlist or denied use under blocklist is specified; and<br>[c.] allowlist to allow the execution of authorized software or blocklist to prevent the use of unauthorized software is implemented as specified.<br><br>CM.L2-3.4.9<br><br>**Practice statement:** Control and monitor user-installed software.<br><br>**Objectives:**<br>Determine if:<br>[a.] a policy for controlling the installation of software by users is established;<br>[b.] installation of software by users is controlled based on the established policy; and<br>[c.] installation of software by users is monitored. | Configure MDM/configuration management policy to prevent the use of unauthorized software. Configure conditional access grant controls to require compliant or hybrid joined device to incorporate device compliance with MDM/configuration management policy into the conditional access authorization decision.<br>[What is Microsoft Intune](/mem/intune/fundamentals/what-is-intune.md)<br>[Conditional Access - Require compliant or hybrid joined devices](/azure/active-directory/conditional-access/howto-conditional-access-policy-compliant-device.md) |
## Incident Response (IR)
-The following table provides a list of control IDs and associated customer responsibilities and guidance.
+The following table provides a list of practice statement and objectives, and Azure AD guidance and recommendations to enable you to meet these requirements with Azure AD.
-| *Control* | *Guidance* |
+| CMMC practice statement and objectives | Azure AD guidance and recommendations |
| - | - |
-| IR.L2-3.6.1 | Implement incident handling and monitoring capabilities. The audit logs record all configuration changes. Authentication and authorization events are audited within the sign-in logs, and any detected risks are audited in the Identity Protection logs. You can stream each of these logs directly into a SIEM solution, such as Microsoft Sentinel. Alternatively, use Azure Event Hubs to integrate logs with third-party SIEM solutions.<br><br>**Audit events**<br>[Audit activity reports in the Azure Active Directory portal](/azure/active-directory/reports-monitoring/concept-audit-logs)<br>[Sign-in activity reports in the Azure Active Directory portal](/azure/active-directory/reports-monitoring/concept-sign-ins)<br>[How To: Investigate risk](/azure/active-directory/identity-protection/howto-identity-protection-investigate-risk)<br><br>**SIEM integrations**<br>[Microsoft Sentinel : Connect data from Azure Active Directory (Azure AD)](/azure/sentinel/connect-azure-active-directory)[Stream to Azure event hub and other SIEMs](/azure/active-directory/reports-monitoring/tutorial-azure-monitor-stream-logs-to-event-hub) |
+| IR.L2-3.6.1<br><br>**Practice statement:** Establish an operational incident-handling capability for organizational systems that includes preparation, detection, analysis, containment, recovery, and user response activities.<br><br>**Objectives:**<br>Determine if:<br>[a.] an operational incident-handling capability is established;<br>[b.] the operational incident-handling capability includes preparation;<br>[c.] the operational incident-handling capability includes detection;<br>[d.] the operational incident-handling capability includes analysis;<br>[e.] the operational incident-handling capability includes containment;<br>[f.] the operational incident-handling capability includes recovery; and<br>[g.] the operational incident-handling capability includes user response activities. | Implement incident handling and monitoring capabilities. The audit logs record all configuration changes. Authentication and authorization events are audited within the sign-in logs, and any detected risks are audited in the Identity Protection logs. You can stream each of these logs directly into a SIEM solution, such as Microsoft Sentinel. Alternatively, use Azure Event Hubs to integrate logs with third-party SIEM solutions.<br><br>**Audit events**<br>[Audit activity reports in the Azure Active Directory portal](/azure/active-directory/reports-monitoring/concept-audit-logs.md)<br>[Sign-in activity reports in the Azure Active Directory portal](/azure/active-directory/reports-monitoring/concept-sign-ins.md)<br>[How To: Investigate risk](/azure/active-directory/identity-protection/howto-identity-protection-investigate-risk.md)<br><br>**SIEM integrations**<br>[Microsoft Sentinel : Connect data from Azure Active Directory (Azure AD)](/azure/sentinel/connect-azure-active-directory.md)[Stream to Azure event hub and other SIEMs](/azure/active-directory/reports-monitoring/tutorial-azure-monitor-stream-logs-to-event-hub.md) |
## Maintenance (MA)
-The following table provides a list of control IDs and associated customer responsibilities and guidance.
+The following table provides a list of practice statement and objectives, and Azure AD guidance and recommendations to enable you to meet these requirements with Azure AD.
-| *Control* | *Guidance* |
+| CMMC practice statement and objectives | Azure AD guidance and recommendations |
| - | - |
-| MA.L2-3.7.5 | Accounts assigned administrative rights are targeted by attackers, including accounts used to establish non-local maintenance sessions. Requiring multifactor authentication (MFA) on those accounts is an easy way to reduce the risk of those accounts being compromised.<br>[Conditional Access - Require MFA for administrators](../conditional-access/howto-conditional-access-policy-admin-mfa.md) |
-| MP.L2-3.8.7 | Configure device management policies via MDM (such as Microsoft Intune), Microsoft Endpoint Manager (MEM) or group policy objects (GPO) to control the use of removable media on systems. Deploy and manage Removable Storage Access Control using Intune or Group Policy. Configure Conditional Access policies to enforce device compliance.<br><br>**Conditional Access**<br>[Require device to be marked as compliant](/azure/active-directory/conditional-access/concept-conditional-access-grant#require-device-to-be-marked-as-compliant.md)<br>[Require hybrid Azure AD joined device](/azure/active-directory/conditional-access/concept-conditional-access-grant#require-hybrid-azure-ad-joined-device.md)<br><br>**Intune**<br>[Device compliance policies in Microsoft Intune](/mem/intune/protect/device-compliance-get-started)<br><br>**Removable storage access control**<br>[Deploy and manage Removable Storage Access Control using Intune](/microsoft-365/security/defender-endpoint/deploy-manage-removable-storage-intune?view=o365-worldwide&preserve-view=true)<br>[Deploy and manage Removable Storage Access Control using group policy](/microsoft-365/security/defender-endpoint/deploy-manage-removable-storage-group-policy?view=o365-worldwide&preserve-view=true) |
+| MA.L2-3.7.5<br><br>**Practice statement:** Require multifactor authentication to establish nonlocal maintenance sessions via external network connections and terminate such connections when nonlocal maintenance is complete.<br><br>**Objectives:**<br>Determine if:<br>[a.] multifactor authentication is used to establish nonlocal maintenance sessions via external network connections; and<br>[b.] nonlocal maintenance sessions established via external network connections are terminated when nonlocal maintenance is complete.| Accounts assigned administrative rights are targeted by attackers, including accounts used to establish non-local maintenance sessions. Requiring multifactor authentication (MFA) on those accounts is an easy way to reduce the risk of those accounts being compromised.<br>[Conditional Access - Require MFA for administrators](../conditional-access/howto-conditional-access-policy-admin-mfa.md) |
+| MP.L2-3.8.7<br><br>**Practice statement:** Control the use of removable media on system components.<br><br>**Objectives:**<br>Determine if:<br>[a.] the use of removable media on system components is controlled. | Configure device management policies via MDM (such as Microsoft Intune), Microsoft Endpoint Manager (MEM) or group policy objects (GPO) to control the use of removable media on systems. Deploy and manage Removable Storage Access Control using Intune or Group Policy. Configure Conditional Access policies to enforce device compliance.<br><br>**Conditional Access**<br>[Require device to be marked as compliant](/azure/active-directory/conditional-access/concept-conditional-access-grant#require-device-to-be-marked-as-compliant.md)<br>[Require hybrid Azure AD joined device](/conditional-access/concept-conditional-access-grant#require-hybrid-azure-ad-joined-device.md)<br><br>**Intune**<br>[Device compliance policies in Microsoft Intune](/mem/intune/protect/device-compliance-get-started.md)<br><br>**Removable storage access control**<br>[Deploy and manage Removable Storage Access Control using Intune](/microsoft-365/security/defender-endpoint/deploy-manage-removable-storage-intune?view=o365-worldwide&preserve-view=true)<br>[Deploy and manage Removable Storage Access Control using group policy](/microsoft-365/security/defender-endpoint/deploy-manage-removable-storage-group-policy?view=o365-worldwide&preserve-view=true) |
## Personnel Security (PS)
-The following table provides a list of control IDs and associated customer responsibilities and guidance.
+The following table provides a list of practice statement and objectives, and Azure AD guidance and recommendations to enable you to meet these requirements with Azure AD.
-| *Control* | *Guidance* |
+| CMMC practice statement and objectives | Azure AD guidance and recommendations |
| - | - |
-| PS.L2-3.9.2 | Configure provisioning (including disablement upon termination) of accounts in Azure AD from external HR systems, on-premises Active Directory, or directly in the cloud. Terminate all system access by revoking existing sessions.<br><br>**Account provisioning**<br>[What is identity provisioning with Azure AD?](/azure/active-directory/cloud-sync/what-is-provisioning)<br>[Azure AD Connect sync: Understand and customize synchronization](/azure/active-directory/hybrid/how-to-connect-sync-whatis)<br>[What is Azure AD Connect cloud sync?](/azure/active-directory/cloud-sync/what-is-cloud-sync)<br><br>**Revoke all associated authenticators**<br>[Revoke user access in an emergency in Azure Active Directory](/azure/active-directory/enterprise-users/users-revoke-access) |
+| PS.L2-3.9.2<br><br>**Practice statement:** Ensure that organizational systems containing CUI are protected during and after personnel actions such as terminations and transfers.<br><br>**Objectives:**<br>Determine if:<br>[a.] a policy and/or process for terminating system access and any credentials coincident with personnel actions is established;<br>[b.] system access and credentials are terminated consistent with personnel actions such as termination or transfer; and<br>[c] the system is protected during and after personnel transfer actions. | Configure provisioning (including disablement upon termination) of accounts in Azure AD from external HR systems, on-premises Active Directory, or directly in the cloud. Terminate all system access by revoking existing sessions.<br><br>**Account provisioning**<br>[What is identity provisioning with Azure AD?](/azure/active-directory/cloud-sync/what-is-provisioning.md)<br>[Azure AD Connect sync: Understand and customize synchronization](/azure/active-directory/hybrid/how-to-connect-sync-whatis.md)<br>[What is Azure AD Connect cloud sync?](/azure/active-directory/cloud-sync/what-is-cloud-sync.md)<br><br>**Revoke all associated authenticators**<br>[Revoke user access in an emergency in Azure Active Directory](/azure/active-directory/enterprise-users/users-revoke-access.md) |
## System and Communications Protection (SC)
-The following table provides a list of control IDs and associated customer responsibilities and guidance.
+The following table provides a list of practice statement and objectives, and Azure AD guidance and recommendations to enable you to meet these requirements with Azure AD.
-| *Control* | *Guidance* |
+| CMMC practice statement and objectives | Azure AD guidance and recommendations |
| - | - |
-| SC.L2-3.13.3 | Maintain separate user accounts in Azure Active Directory for everyday productivity use and administrative or system/privileged management. Privileged accounts should be cloud-only or managed accounts and not synchronized from on-premises to protect the cloud environment from on-premises compromise. System/privileged access should only be permitted from a security hardened privileged access workstation (PAW). Configure Conditional Access device filters to restrict access to administrative applications from PAWs that are enabled using Azure Virtual Desktops.<br>[Why are privileged access devices important](/security/compass/privileged-access-devices)<br>[Device Roles and Profiles](/security/compass/privileged-access-devices)<br>[Filter for devices as a condition in Conditional Access policy](../conditional-access/concept-condition-filters-for-devices.md)<br>[Azure Virtual Desktop](https://azure.microsoft.com/products/virtual-desktop/) |
-| SC.L2-3.13.4 | Configure device management policies via MDM (such as Microsoft Intune), Microsoft Endpoint Manager (MEM) or group policy objects (GPO) to ensure devices are compliant with system hardening procedures. Include compliance with company policy regarding software patches to prevent attackers from exploiting flaws.<br><br>Configure Conditional Access policies to enforce device compliance.<br><br>**Conditional Access**<br>[Require device to be marked as compliant](/azure/active-directory/conditional-access/concept-conditional-access-grant)<br>[Require hybrid Azure AD joined device](/azure/active-directory/conditional-access/concept-conditional-access-grant)<br><br>**InTune**<br>[Device compliance policies in Microsoft Intune](/mem/intune/protect/device-compliance-get-started)<br><br>9-20 check split tunneling language. |
-| SC.L2-3.13.13 | Configure device management policies via MDM (such as Microsoft Intune), Microsoft Endpoint Manager (MEM) or group policy objects (GPO) to disable the use of mobile code. Where use of mobile code is required monitor the use with endpoint security such as Microsoft Defender for Endpoint.<br><br>Configure Conditional Access policies to enforce device compliance.<br><br>**Conditional Access**<br>[Require device to be marked as compliant](/azure/active-directory/conditional-access/concept-conditional-access-grant)<br>[Require hybrid Azure AD joined device](/azure/active-directory/conditional-access/concept-conditional-access-grant)<br><br>**InTune**<br>[Device compliance policies in Microsoft Intune](/mem/intune/protect/device-compliance-get-started)<br><br>**Defender for Endpoint**<br>[Microsoft Defender for Endpoint](/microsoft-365/security/defender-endpoint/microsoft-defender-endpoint?view=o365-worldwide&preserve-view=true) |
+| SC.L2-3.13.3<br><br>**Practice statement:** Separate user functionality form system management functionality. <br><br>**Objectives:**<br>Determine if:<br>[a.] user functionality is identified;<br>[b.] system management functionality is identified; and<br>[c.] user functionality is separated from system management functionality. | Maintain separate user accounts in Azure Active Directory for everyday productivity use and administrative or system/privileged management. Privileged accounts should be cloud-only or managed accounts and not synchronized from on-premises to protect the cloud environment from on-premises compromise. System/privileged access should only be permitted from a security hardened privileged access workstation (PAW). Configure Conditional Access device filters to restrict access to administrative applications from PAWs that are enabled using Azure Virtual Desktops.<br>[Why are privileged access devices important](/security/compass/privileged-access-devices.md)<br>[Device Roles and Profiles](/security/compass/privileged-access-devices.md)<br>[Filter for devices as a condition in Conditional Access policy](../conditional-access/concept-condition-filters-for-devices.md)<br>[Azure Virtual Desktop](https://azure.microsoft.com/products/virtual-desktop/) |
+| SC.L2-3.13.4<br><br>**Practice statement:** Prevent unauthorized and unintended information transfer via shared system resources.<br><br>**Objectives:**<br>Determine if:<br>[a.] unauthorized and unintended information transfer via shared system resources is prevented. | Configure device management policies via MDM (such as Microsoft Intune), Microsoft Endpoint Manager (MEM) or group policy objects (GPO) to ensure devices are compliant with system hardening procedures. Include compliance with company policy regarding software patches to prevent attackers from exploiting flaws.<br><br>Configure Conditional Access policies to enforce device compliance.<br><br>**Conditional Access**<br>[Require device to be marked as compliant](/azure/active-directory/conditional-access/concept-conditional-access-grant.md)<br>[Require hybrid Azure AD joined device](/azure/active-directory/conditional-access/concept-conditional-access-grant.md)<br><br>**InTune**<br>[Device compliance policies in Microsoft Intune](/mem/intune/protect/device-compliance-get-started.md) |
+| SC.L2-3.13.13<br><br>**Practice statement:** Control and monitor the use of mobile code.<br><br>**Objectives:**<br>Determine if:<br>[a.] use of mobile code is controlled; and<br>[b.] use of mobile code is monitored. | Configure device management policies via MDM (such as Microsoft Intune), Microsoft Endpoint Manager (MEM) or group policy objects (GPO) to disable the use of mobile code. Where use of mobile code is required monitor the use with endpoint security such as Microsoft Defender for Endpoint.<br><br>Configure Conditional Access policies to enforce device compliance.<br><br>**Conditional Access**<br>[Require device to be marked as compliant](/azure/active-directory/conditional-access/concept-conditional-access-grant.md)<br>[Require hybrid Azure AD joined device](/azure/active-directory/conditional-access/concept-conditional-access-grant.md)<br><br>**InTune**<br>[Device compliance policies in Microsoft Intune](/mem/intune/protect/device-compliance-get-started.md)<br><br>**Defender for Endpoint**<br>[Microsoft Defender for Endpoint](/microsoft-365/security/defender-endpoint/microsoft-defender-endpoint?view=o365-worldwide&preserve-view=true) |
## System and Information Integrity (SI)
-The following table provides a list of control IDs and associated customer responsibilities and guidance.
+The following table provides a list of practice statement and objectives, and Azure AD guidance and recommendations to enable you to meet these requirements with Azure AD.
-| *Control* | *Guidance* |
+| CMMC practice statement and objectives | Azure AD guidance and recommendations |
| - | - |
-| SI.L2-3.14.7 | Consolidate telemetry: Azure AD logs to stream to SIEM, such as Azure Sentinel Configure device management policies via MDM (such as Microsoft Intune), Microsoft Endpoint Manager (MEM), or group policy objects (GPO) to require Intrusion Detection/Protection (IDS/IPS) such as Microsoft Defender for Endpoint is installed and in use. Use telemetry provided by the IDS/IPS to identify unusual activities or conditions related to inbound and outbound communications traffic or unauthorized use.<br><br>Configure Conditional Access policies to enforce device compliance.<br><br>**Conditional Access**<br>[Require device to be marked as compliant](/azure/active-directory/conditional-access/concept-conditional-access-grant)<br>[Require hybrid Azure AD joined device](/azure/active-directory/conditional-access/concept-conditional-access-grant)<br><br>**InTune**<br>[Device compliance policies in Microsoft Intune](/mem/intune/protect/device-compliance-get-started)<br><br>**Defender for Endpoint**<br>[Microsoft Defender for Endpoint](/microsoft-365/security/defender-endpoint/microsoft-defender-endpoint?view=o365-worldwide&preserve-view=true) |
+| SI.L2-3.14.7<br><br>**Practice statement:**<br><br>**Objectives:** Identify unauthorized use of organizational systems.<br>Determine if:<br>[a.] authorized use of the system is defined; and<br>[b.] unauthorized use of the system is identified. | Consolidate telemetry: Azure AD logs to stream to SIEM, such as Azure Sentinel Configure device management policies via MDM (such as Microsoft Intune), Microsoft Endpoint Manager (MEM), or group policy objects (GPO) to require Intrusion Detection/Protection (IDS/IPS) such as Microsoft Defender for Endpoint is installed and in use. Use telemetry provided by the IDS/IPS to identify unusual activities or conditions related to inbound and outbound communications traffic or unauthorized use.<br><br>Configure Conditional Access policies to enforce device compliance.<br><br>**Conditional Access**<br>[Require device to be marked as compliant](/azure/active-directory/conditional-access/concept-conditional-access-grant.md)<br>[Require hybrid Azure AD joined device](/azure/active-directory/conditional-access/concept-conditional-access-grant.md)<br><br>**InTune**<br>[Device compliance policies in Microsoft Intune](/mem/intune/protect/device-compliance-get-started.md)<br><br>**Defender for Endpoint**<br>[Microsoft Defender for Endpoint](/microsoft-365/security/defender-endpoint/microsoft-defender-endpoint?view=o365-worldwide&preserve-view=true) |
### Next steps
aks Api Server Vnet Integration https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/api-server-vnet-integration.md
An Azure Kubernetes Service (AKS) cluster configured with API Server VNet Integration (Preview) projects the API server endpoint directly into a delegated subnet in the VNet where AKS is deployed. API Server VNet Integartion enables network communication between the API server and the cluster nodes without requiring a private link or tunnel. The API server is available behind an Internal Load Balancer VIP in the delegated subnet, which the nodes are configured to utilize. By using API Server VNet Integration, you can ensure network traffic between your API server and your node pools remains on the private network only. - ## API server connectivity The control plane or API server is in an Azure Kubernetes Service (AKS)-managed Azure subscription. A customer's cluster or node pool is in the customer's subscription. The server and the virtual machines that make up the cluster nodes can communicate with each other through the API server VIP and pod IPs that are projected into the delegated subnet.
API Server VNet Integration is available in all global Azure regions except the
* Azure CLI with aks-preview extension 0.5.97 or later. * If using ARM or the REST API, the AKS API version must be 2022-04-02-preview or later.
-### Install the aks-preview CLI extension
+## Install the aks-preview Azure CLI extension
-```azurecli-interactive
-# Install the aks-preview extension
+
+To install the aks-preview extension, run the following command:
+
+```azurecli
az extension add --name aks-preview
+```
+
+Run the following command to update to the latest version of the extension released:
-# Update the extension to make sure you have the latest version installed
+```azurecli
az extension update --name aks-preview ```
-### Register the `EnableAPIServerVnetIntegrationPreview` preview feature
-
-To create an AKS cluster with API Server VNet Integration, you must enable the `EnableAPIServerVnetIntegrationPreview` feature flag on your subscription.
+## Register the 'EnableAPIServerVnetIntegrationPreview' feature flag
-Register the `EnableAPIServerVnetIntegrationPreview` feature flag by using the `az feature register` command, as shown in the following example:
+Register the `EnableAPIServerVnetIntegrationPreview` feature flag by using the [az feature register][az-feature-register] command, as shown in the following example:
```azurecli-interactive az feature register --namespace "Microsoft.ContainerService" --name "EnableAPIServerVnetIntegrationPreview" ```
-It takes a few minutes for the status to show *Registered*. Verify the registration status by using the `az feature list` command:
+It takes a few minutes for the status to show *Registered*. Verify the registration status by using the [az feature show][az-feature-show] command:
```azurecli-interactive
-az feature list -o table --query "[?contains(name, 'Microsoft.ContainerService/EnableAPIServerVnetIntegrationPreview')].{Name:name,State:properties.state}"
+az feature show --namespace "Microsoft.ContainerService" --name "EnableAPIServerVnetIntegrationPreview"
```
-When the feature has been registered, refresh the registration of the *Microsoft.ContainerService* resource provider by using the `az provider register` command:
+When the status reflects *Registered*, refresh the registration of the *Microsoft.ContainerService* resource provider by using the [az provider register][az-provider-register] command:
```azurecli-interactive az provider register --namespace Microsoft.ContainerService
az aks update -n <cluster-name> \
For associated best practices, see [Best practices for network connectivity and security in AKS][operator-best-practices-network]. <!-- LINKS - internal -->
-[az-provider-register]: /cli/azure/provider#az_provider_register
-[az-feature-register]: /cli/azure/feature#az_feature_register
-[az-feature-list]: /cli/azure/feature#az_feature_list
-[az-extension-add]: /cli/azure/extension#az_extension_add
-[az-extension-update]: /cli/azure/extension#az_extension_update
+[az-provider-register]: /cli/azure/provider#az-provider-register
+[az-feature-register]: /cli/azure/feature#az-feature-register
+[az-feature-list]: /cli/azure/feature#az-feature-list
+[az-feature-show]: /cli/azure/feature#az-feature-show
+[az-extension-add]: /cli/azure/extension#az-extension-add
+[az-extension-update]: /cli/azure/extension#az-extension-update
[private-link-service]: ../private-link/private-link-service-overview.md#limitations [private-endpoint-service]: ../private-link/private-endpoint-overview.md [virtual-network-peering]: ../virtual-network/virtual-network-peering-overview.md
aks Azure Blob Csi https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/azure-blob-csi.md
Title: Use Container Storage Interface (CSI) driver for Azure Blob storage on Az
description: Learn how to use the Container Storage Interface (CSI) driver for Azure Blob storage in an Azure Kubernetes Service (AKS) cluster. Previously updated : 11/30/2022 Last updated : 12/27/2022
Mounting Azure Blob storage as a file system into a container or pod, enables yo
The data on the object storage can be accessed by applications using BlobFuse or Network File System (NFS) 3.0 protocol. Before the introduction of the Azure Blob storage CSI driver, the only option was to manually install an unsupported driver to access Blob storage from your application running on AKS. When the Azure Blob storage CSI driver is enabled on AKS, there are two built-in storage classes: *azureblob-fuse-premium* and *azureblob-nfs-premium*. > [!NOTE]
-> Azure Blob CSI driver only supports NFS 3.0 protocol for Kubernetes versions 1.25 (preview) on AKS.
+> Azure Blob CSI driver only supports NFS 3.0 protocol for Kubernetes versions 1.25 on AKS.
To create an AKS cluster with CSI drivers support, see [CSI drivers on AKS][csi-drivers-aks]. To learn more about the differences in access between each of the Azure storage types using the NFS protocol, see [Compare access to Azure Files, Blob Storage, and Azure NetApp Files with NFS][compare-access-with-nfs].
aks Azure Cni Overlay https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/azure-cni-overlay.md
Register the `AzureOverlayPreview` feature flag by using the [az feature registe
az feature register --namespace "Microsoft.ContainerService" --name "AzureOverlayPreview" ```
-It takes a few minutes for the status to show *Registered*. Verify the registration status by using the [az feature list][az-feature-list] command:
+It takes a few minutes for the status to show *Registered*. Verify the registration status by using the [az feature show][az-feature-show] command:
```azurecli-interactive
-az feature list -o table --query "[?contains(name, 'Microsoft.ContainerService/AzureOverlayPreview')].{Name:name,State:properties.state}"
+az feature show --namespace "Microsoft.ContainerService" --name "AzureOverlayPreview"
```
-When ready, refresh the registration of the *Microsoft.ContainerService* resource provider by using the [az provider register][az-provider-register] command:
+When the status reflects *Registered*, refresh the registration of the *Microsoft.ContainerService* resource provider by using the [az provider register][az-provider-register] command:
```azurecli-interactive az provider register --namespace Microsoft.ContainerService
The following steps create a new virtual network with a subnet for the cluster n
## Next steps
-To learn how to utilize AKS with your own Container Network Interface (CNI) plugin, see [Bring your own Container Network Interface (CNI) plugin](use-byo-cni.md).
+To learn how to utilize AKS with your own Container Network Interface (CNI) plugin, see [Bring your own Container Network Interface (CNI) plugin](use-byo-cni.md).
+
+<!-- LINKS - internal -->
+[az-provider-register]: /cli/azure/provider#az-provider-register
+[az-feature-register]: /cli/azure/feature#az-feature-register
+[az-feature-show]: /cli/azure/feature#az-feature-show
aks Azure Cni Powered By Cilium https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/azure-cni-powered-by-cilium.md
By making use of eBPF programs loaded into the Linux kernel and a more efficient
- Better observability of cluster traffic - Support for larger clusters (more nodes, pods, and services) - ## IP Address Management (IPAM) with Azure CNI Powered by Cilium Azure CNI Powered by Cilium can be deployed using two different methods for assigning pod IPs:
Azure CNI powered by Cilium currently has the following limitations:
* Azure CLI with aks-preview extension 0.5.109 or later. * If using ARM templates or the REST API, the AKS API version must be 2022-09-02-preview or later.
-### Install the aks-preview CLI extension
+## Install the aks-preview Azure CLI extension
-```azurecli-interactive
-# Install the aks-preview extension
+
+To install the aks-preview extension, run the following command:
+
+```azurecli
az extension add --name aks-preview
+```
+
+Run the following command to update to the latest version of the extension released:
-# Update the extension to make sure you have the latest version installed
+```azurecli
az extension update --name aks-preview ```
-### Register the `CiliumDataplanePreview` preview feature
-
-To create an AKS cluster with Azure CNI powered by Cilium, you must enable the `CiliumDataplanePreview` feature flag on your subscription.
+## Register the 'CiliumDataplanePreview' feature flag
-Register the `CiliumDataplanePreview` feature flag by using the `az feature register` command, as shown in the following example:
+Register the `CiliumDataplanePreview` feature flag by using the [az feature register][az-feature-register] command, as shown in the following example:
```azurecli-interactive az feature register --namespace "Microsoft.ContainerService" --name "CiliumDataplanePreview" ```
-It takes a few minutes for the status to show *Registered*. Verify the registration status by using the `az feature list` command:
+It takes a few minutes for the status to show *Registered*. Verify the registration status by using the [az feature show][az-feature-show] command:
```azurecli-interactive
-az feature list -o table --query "[?contains(name, 'Microsoft.ContainerService/CiliumDataplanePreview')].{Name:name,State:properties.state}"
+az feature show --namespace "Microsoft.ContainerService" --name "CiliumDataplanePreview"
```
-When the feature has been registered, refresh the registration of the *Microsoft.ContainerService* resource provider by using the `az provider register` command:
+When the status reflects *Registered*, refresh the registration of the *Microsoft.ContainerService* resource provider by using the [az provider register][az-provider-register] command:
```azurecli-interactive az provider register --namespace Microsoft.ContainerService
Learn more about networking in AKS in the following articles:
[aks-ingress-static-tls]: ingress-static-ip.md [aks-http-app-routing]: http-application-routing.md [aks-ingress-internal]: ingress-internal-ip.md
+[az-provider-register]: /cli/azure/provider#az-provider-register
+[az-feature-register]: /cli/azure/feature#az-feature-register
+[az-feature-show]: /cli/azure/feature#az-feature-show
aks Azure Csi Blob Storage Static https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/azure-csi-blob-storage-static.md
description: Learn how to create a static persistent volume with Azure Blob storage for use with multiple concurrent pods in Azure Kubernetes Service (AKS) Previously updated : 07/21/2022 Last updated : 12/27/2022
For more information on Kubernetes volumes, see [Storage options for application
- If you don't have a storage account that supports the NFS v3 protocol, review [NFS v3 support with Azure Blob storage][azure-blob-storage-nfs-support]. -- [Enable the Blob storage CSI driver][enable-blob-csi-driver] (preview) on your AKS cluster.
+- [Enable the Blob storage CSI driver][enable-blob-csi-driver] on your AKS cluster.
## Static provisioning parameters |Name | Description | Example | Mandatory | Default value| | | | | | |
+|volumeHandle | Specify a value the driver can use to uniquely identify the storage blob container in the cluster. | A recommended way to produce a unique value is to combine the globally unique storage account name and container name: {account-name}_{container-name}. Note: The # character is reserved for internal use and can't be used in a volume handle. | Yes ||
|volumeAttributes.resourceGroup | Specify Azure resource group name. | myResourceGroup | No | If empty, driver will use the same resource group name as current cluster.| |volumeAttributes.storageAccount | Specify existing Azure storage account name. | storageAccountName | Yes || |volumeAttributes.containerName | Specify existing container name. | container | Yes ||
The following example demonstrates how to mount a Blob storage container as a pe
csi: driver: blob.csi.azure.com readOnly: false
- # make sure this volumeid is unique in the cluster
- # `#` is not allowed in self defined volumeHandle
+ # make sure volumeid is unique for every identical storage blob container in the cluster
+ # character `#` is reserved for internal use and cannot be used in volumehandle
volumeHandle: unique-volumeid volumeAttributes: resourceGroup: resourceGroupName
Kubernetes needs credentials to access the Blob storage container created earlie
csi: driver: blob.csi.azure.com readOnly: false
- # make sure this volumeid is unique in the cluster
- # `#` is not allowed in self defined volumeHandle
+ # make sure volumeid is unique for every identical storage blob container in the cluster
+ # character `#` is reserved for internal use and cannot be used in volumehandle
volumeHandle: unique-volumeid volumeAttributes: containerName: containerName
aks Azure Files Csi https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/azure-files-csi.md
The output of the commands resembles the following example:
[nfs-overview]:/windows-server/storage/nfs/nfs-overview [kubectl-exec]: https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#exec [csi-specification]: https://github.com/container-storage-interface/spec/blob/master/spec.md
-[data-plane-api]: https://github.com/Azure/azure-sdk-for-go/blob/master/storage/share.go
+[data-plane-api]: https://github.com/Azure/azure-sdk-for-go/blob/main/sdk/azcore/internal/shared/shared.go
[vhd-disk-feature]: https://github.com/kubernetes-sigs/azurefile-csi-driver/blob/master/deploy/example/disk <!-- LINKS - internal -->
aks Azure Files Volume https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/azure-files-volume.md
description: Learn how to manually create a volume with Azure Files for use with multiple concurrent pods in Azure Kubernetes Service (AKS) Previously updated : 12/12/2022 Last updated : 12/26/2022 #Customer intent: As a developer, I want to learn how to manually create and attach storage using Azure Files to a pod in AKS.
spec:
volumeAttributes: secretName: azure-secret # required shareName: aksshare # required
- mountOptions: "dir_mode=0777,file_mode=0777,cache=strict,actimeo=30" # optional
+ mountOptions: "dir_mode=0777,file_mode=0777,cache=strict,actimeo=30,nosharesock" # optional
``` Use the `kubectl` command to create the pod.
spec:
csi: driver: file.csi.azure.com readOnly: false
- volumeHandle: unique-volumeid # make sure this volumeid is unique in the cluster
+ volumeHandle: unique-volumeid # make sure volumeid is unique for every identical share in the cluster
volumeAttributes: resourceGroup: EXISTING_RESOURCE_GROUP_NAME # optional, only set this when storage account is not in the same resource group as agent node shareName: aksshare
aks Concepts Network https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/concepts-network.md
For more information on core Kubernetes and AKS concepts, see the following arti
[support-policies]: support-policies.md [limit-egress]: limit-egress-traffic.md [k8s-ingress]: https://kubernetes.io/docs/concepts/services-networking/ingress/
-[nginx-ingress]: /ingress-basic.md
+[nginx-ingress]: ingress-basic.md
[ip-preservation]: https://techcommunity.microsoft.com/t5/fasttrack-for-azure/how-client-source-ip-preservation-works-for-loadbalancer/ba-p/3033722#:~:text=Enable%20Client%20source%20IP%20preservation%201%20Edit%20loadbalancer,is%20the%20same%20as%20the%20source%20IP%20%28srjumpbox%29. [nsg-traffic]: ../virtual-network/network-security-group-how-it-works.md [azure-cni-aks]: /configure-azure-cni.md
aks Configure Kube Proxy https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/configure-kube-proxy.md
The AKS managed `kube-proxy` DaemonSet can also be disabled entirely if that is desired to support [bring-your-own CNI][aks-byo-cni]. - ## Prerequisites * Azure CLI with aks-preview extension 0.5.105 or later. * If using ARM or the REST API, the AKS API version must be 2022-08-02-preview or later.
-### Install the aks-preview CLI extension
+## Install the aks-preview Azure CLI extension
-```azurecli-interactive
-# Install the aks-preview extension
+
+To install the aks-preview extension, run the following command:
+
+```azurecli
az extension add --name aks-preview
+```
+
+Run the following command to update to the latest version of the extension released:
-# Update the extension to make sure you have the latest version installed
+```azurecli
az extension update --name aks-preview ```
-### Register the `KubeProxyConfigurationPreview` preview feature
-
-To create an AKS cluster with custom `kube-proxy` configuration, you must enable the `KubeProxyConfigurationPreview` feature flag on your subscription.
+## Register the 'KubeProxyConfigurationPreview' feature flag
-Register the `KubeProxyConfigurationPreview` feature flag by using the `az feature register` command, as shown in the following example:
+Register the `KubeProxyConfigurationPreview` feature flag by using the [az feature register][az-feature-register] command, as shown in the following example:
```azurecli-interactive az feature register --namespace "Microsoft.ContainerService" --name "KubeProxyConfigurationPreview" ```
-It takes a few minutes for the status to show *Registered*. Verify the registration status by using the `az feature list` command:
+It takes a few minutes for the status to show *Registered*. Verify the registration status by using the [az feature show][az-feature-show] command:
```azurecli-interactive
-az feature list -o table --query "[?contains(name, 'Microsoft.ContainerService/KubeProxyConfigurationPreview')].{Name:name,State:properties.state}"
+az feature show --namespace "Microsoft.ContainerService" --name "KubeProxyConfigurationPreview"
```
-When the feature has been registered, refresh the registration of the *Microsoft.ContainerService* resource provider by using the `az provider register` command:
+When the status reflects *Registered*, refresh the registration of the *Microsoft.ContainerService* resource provider by using the [az provider register][az-provider-register] command:
```azurecli-interactive az provider register --namespace Microsoft.ContainerService
Learn more about Kubernetes services at the [Kubernetes services documentation][
[aks-schema-kubeproxyconfig]: /azure/templates/microsoft.containerservice/managedclusters?pivots=deployment-language-bicep#containerservicenetworkprofilekubeproxyconfig <!-- LINKS - Internal -->
-[aks-byo-cni]: use-byo-cni.md
+[aks-byo-cni]: use-byo-cni.md
+[az-provider-register]: /cli/azure/provider#az-provider-register
+[az-feature-register]: /cli/azure/feature#az-feature-register
+[az-feature-show]: /cli/azure/feature#az-feature-show
aks Configure Kubenet Dual Stack https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/configure-kubenet-dual-stack.md
AKS clusters can now be deployed in a dual-stack (using both IPv4 and IPv6 addre
This article shows you how to use dual-stack networking with an AKS cluster. For more information on network options and considerations, see [Network concepts for Kubernetes and AKS][aks-network-concepts]. - ## Limitations > [!NOTE] > Dual-stack kubenet networking is currently not available in sovereign clouds. This note will be removed when rollout is complete.
This article shows you how to use dual-stack networking with an AKS cluster. For
* Azure CLI with the `aks-preview` extension 0.5.48 or newer. * If using Azure Resource Manager templates, schema version 2021-10-01 is required.
-### Register the `AKS-EnableDualStack` preview feature
+## Install the aks-preview Azure CLI extension
-To create an AKS dual-stack cluster, you must enable the `AKS-EnableDualStack` feature flag on your subscription.
-Register the `AKS-EnableDualStack` feature flag by using the `az feature register` command, as shown in the following example:
+To install the aks-preview extension, run the following command:
-```azurecli-interactive
-az feature register --namespace "Microsoft.ContainerService" --name "AKS-EnableDualStack"
+```azurecli
+az extension add --name aks-preview
```
-It takes a few minutes for the status to show *Registered*. Verify the registration status by using the `az feature list` command:
+Run the following command to update to the latest version of the extension released:
-```azurecli-interactive
-az feature list -o table --query "[?contains(name, 'Microsoft.ContainerService/AKS-EnableDualStack')].{Name:name,State:properties.state}"
+```azurecli
+az extension update --name aks-preview
```
-When ready, refresh the registration of the *Microsoft.ContainerService* resource provider by using the `az provider register` command:
+## Register the 'AKS-EnableDualStack' feature flag
+
+Register the `AKS-EnableDualStack` feature flag by using the [az feature register][az-feature-register] command, as shown in the following example:
```azurecli-interactive
-az provider register --namespace Microsoft.ContainerService
+az feature register --namespace "Microsoft.ContainerService" --name "AKS-EnableDualStack"
```
-### Install the aks-preview CLI extension
+It takes a few minutes for the status to show *Registered*. Verify the registration status by using the [az feature show][az-feature-show] command:
```azurecli-interactive
-# Install the aks-preview extension
-az extension add --name aks-preview
+az feature show --namespace "Microsoft.ContainerService" --name "AKS-EnableDualStack"
+```
-# Update the extension to make sure you have the latest version installed
-az extension update --name aks-preview
+When the status reflects *Registered*, refresh the registration of the *Microsoft.ContainerService* resource provider by using the [az provider register][az-provider-register] command:
+
+```azurecli-interactive
+az provider register --namespace Microsoft.ContainerService
``` ## Overview of dual-stack networking in Kubernetes
curl -s "http://[${SERVICE_IP}]" | head -n5
[express-route]: ../expressroute/expressroute-introduction.md [network-comparisons]: concepts-network.md#compare-network-models [custom-route-table]: ../virtual-network/manage-route-table.md
-[user-assigned managed identity]: use-managed-identity.md#bring-your-own-control-plane-mi
+[user-assigned managed identity]: use-managed-identity.md#bring-your-own-control-plane-mi
+[az-provider-register]: /cli/azure/provider#az-provider-register
+[az-feature-register]: /cli/azure/feature#az-feature-register
+[az-feature-show]: /cli/azure/feature#az-feature-show
aks Custom Certificate Authority https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/custom-certificate-authority.md
Custom certificate authorities (CAs) allow you to establish trust between your A
This feature is applied per nodepool, so new and existing node pools must be configured to enable this feature. - ## Prerequisites * An Azure subscription. If you don't have an Azure subscription, you can create a [free account](https://azure.microsoft.com/free). * [Azure CLI installed][azure-cli-install] (version 2.43.0 or greater). * A base64 encoded certificate string or a text file with certificate.
-### Limitations
+## Limitations
This feature isn't currently supported for Windows node pools.
-### Install the `aks-preview` extension
+## Install the aks-preview Azure CLI extension
+
-You also need the *aks-preview* Azure CLI extensions version 0.5.119 or later. Install the *aks-preview* extension by using the [az extension add][az-extension-add] command, or install any available updates by using the [az extension update][az-extension-update] command.
+To install the aks-preview extension, run the following command:
```azurecli
-# Install the aks-preview extension
az extension add --name aks-preview
+```
+
+Run the following command to update to the latest version of the extension released:
-# Update the extension to make sure you have the latest version installed
+```azurecli
az extension update --name aks-preview ```
-### Register the `CustomCATrustPreview` preview feature
+## Register the 'CustomCATrustPreview' feature flag
-Register the `CustomCATrustPreview` feature flag by using the [az feature register][az-feature-register] command:
+Register the `CustomCATrustPreview` feature flag by using the [az feature register][az-feature-register] command, as shown in the following example:
```azurecli az feature register --namespace "Microsoft.ContainerService" --name "CustomCATrustPreview" ```
-It takes a few minutes for the status to show *Registered*. Verify the registration status by using the [az feature list][az-feature-list] command:
+It takes a few minutes for the status to show *Registered*. Verify the registration status by using the [az feature show][az-feature-show] command:
-```azurecli
-az feature list --query "[?contains(name, 'Microsoft.ContainerService/CustomCATrustPreview')].{Name:name,State:properties.state}" -o table
+```azurecli-interactive
+az feature show --namespace "Microsoft.ContainerService" --name "CustomCATrustPreview"
```
-Refresh the registration of the *Microsoft.ContainerService* resource provider by using the [az provider register][az-provider-register] command:
+When the status reflects *Registered*, refresh the registration of the *Microsoft.ContainerService* resource provider by using the [az provider register][az-provider-register] command:
-```azurecli
+```azurecli-interactive
az provider register --namespace Microsoft.ContainerService ```
For more information on AKS security best practices, see [Best practices for clu
[az-aks-nodepool-update]: /cli/azure/aks#az-aks-update [az-extension-add]: /cli/azure/extension#az-extension-add [az-extension-update]: /cli/azure/extension#az-extension-update
-[az-feature-list]: /cli/azure/feature#az-feature-list
+[az-feature-show]: /cli/azure/feature#az-feature-show
[az-feature-register]: /cli/azure/feature#az-feature-register [az-provider-register]: /cli/azure/provider#az-provider-register
aks Faq https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/faq.md
Any patch, including security patches, is automatically applied to the AKS clust
[node-updates-kured]: node-updates-kured.md [aks-preview-cli]: /cli/azure/aks [az-aks-create]: /cli/azure/aks#az-aks-create
-[aks-rm-template]: /azure/templates/microsoft.containerservice/2019-06-01/managedclusters
+[aks-rm-template]: /azure/templates/microsoft.containerservice/2022-09-01/managedclusters
[aks-cluster-autoscaler]: cluster-autoscaler.md [nodepool-upgrade]: use-multiple-node-pools.md#upgrade-a-node-pool [aks-windows-cli]: windows-container-cli.md
aks Gpu Cluster https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/gpu-cluster.md
There are two options for adding the NVIDIA device plugin:
AKS provides a fully configured AKS image that already contains the [NVIDIA device plugin for Kubernetes][nvidia-github].
-Register the `GPUDedicatedVHDPreview` feature:
+
+First, install the aks-preview Azure CLI extension by running the following command:
```azurecli
-az feature register --name GPUDedicatedVHDPreview --namespace Microsoft.ContainerService
+az extension add --name aks-preview
```
-It might take several minutes for the status to show as **Registered**. You can check the registration status by using the [az feature list](/cli/azure/feature#az-feature-list) command:
+Run the following command to update to the latest version of the extension released:
```azurecli
-az feature list -o table --query "[?contains(name, 'Microsoft.ContainerService/GPUDedicatedVHDPreview')].{Name:name,State:properties.state}"
+az extension update --name aks-preview
```
-When the status shows as registered, refresh the registration of the `Microsoft.ContainerService` resource provider by using the [az provider register](/cli/azure/provider#az-provider-register) command:
+Then, register the `GPUDedicatedVHDPreview` feature flag by using the [az feature register][az-feature-register] command, as shown in the following example:
-```azurecli
-az provider register --namespace Microsoft.ContainerService
+```azurecli-interactive
+az feature register --namespace "Microsoft.ContainerService" --name "GPUDedicatedVHDPreview"
```
-To install the aks-preview CLI extension, use the following Azure CLI commands:
+It takes a few minutes for the status to show *Registered*. Verify the registration status by using the [az feature show][az-feature-show] command:
-```azurecli
-az extension add --name aks-preview
+```azurecli-interactive
+az feature show --namespace "Microsoft.ContainerService" --name "GPUDedicatedVHDPreview"
```
-To update the aks-preview CLI extension, use the following Azure CLI commands:
+When the status reflects *Registered*, refresh the registration of the *Microsoft.ContainerService* resource provider by using the [az provider register][az-provider-register] command:
-```azurecli
-az extension update --name aks-preview
+```azurecli-interactive
+az provider register --namespace Microsoft.ContainerService
``` ## Add a node pool for GPU nodes
For information on using Azure Kubernetes Service with Azure Machine Learning, s
[azureml-triton]: ../machine-learning/how-to-deploy-with-triton.md [aks-container-insights]: monitor-aks.md#container-insights [advanced-scheduler-aks]: /aks/operator-best-practices-advanced-scheduler.md
+[az-provider-register]: /cli/azure/provider#az-provider-register
+[az-feature-register]: /cli/azure/feature#az-feature-register
+[az-feature-show]: /cli/azure/feature#az-feature-show
aks Http Proxy https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/http-proxy.md
description: Use the HTTP proxy configuration feature for Azure Kubernetes Servi
Previously updated : 05/23/2022 Last updated : 01/09/2023
Some more complex solutions may require creating a chain of trust to establish s
## Limitations and other details The following scenarios are **not** supported:+ - Different proxy configurations per node pool - Updating proxy settings post cluster creation - User/Password authentication - Custom CAs for API server communication - Windows-based clusters - Node pools using Virtual Machine Availability Sets (VMAS)
+- Using * as wildcard attached to a domain suffix for noProxy
By default, *httpProxy*, *httpsProxy*, and *trustedCa* have no value. ## Prerequisites
-* An Azure subscription. If you don't have an Azure subscription, you can create a [free account](https://azure.microsoft.com/free).
-* Latest version of [Azure CLI installed](/cli/azure/install-azure-cli).
+The latest version of the Azure CLI. Run `az --version` to find the version, and run `az upgrade` to upgrade the version. If you need to install or upgrade, see [Install Azure CLI][install-azure-cli].
-## Configuring an HTTP proxy using Azure CLI
+## Configuring an HTTP proxy using the Azure CLI
Using AKS with an HTTP proxy is done at cluster creation, using the [az aks create][az-aks-create] command and passing in configuration as a JSON file.
The schema for the config file looks like this:
} ```
-`httpProxy`: A proxy URL to use for creating HTTP connections outside the cluster. The URL scheme must be `http`.
-`httpsProxy`: A proxy URL to use for creating HTTPS connections outside the cluster. If this is not specified, then `httpProxy` is used for both HTTP and HTTPS connections.
-`noProxy`: A list of destination domain names, domains, IP addresses or other network CIDRs to exclude proxying.
-`trustedCa`: A string containing the `base64 encoded` alternative CA certificate content. For now we only support `PEM` format. Another thing to note is that, for compatibility with Go-based components that are part of the Kubernetes system, the certificate MUST support `Subject Alternative Names(SANs)` instead of the deprecated Common Name certs.
+* `httpProxy`: A proxy URL to use for creating HTTP connections outside the cluster. The URL scheme must be `http`.
+* `httpsProxy`: A proxy URL to use for creating HTTPS connections outside the cluster. If this isn't specified, then `httpProxy` is used for both HTTP and HTTPS connections.
+* `noProxy`: A list of destination domain names, domains, IP addresses or other network CIDRs to exclude proxying.
+* `trustedCa`: A string containing the `base64 encoded` alternative CA certificate content. Currently only the `PEM` format is supported.
+
+> [!IMPORTANT]
+> For compatibility with Go-based components that are part of the Kubernetes system, the certificate **must** support `Subject Alternative Names(SANs)` instead of the deprecated Common Name certs.
Example input:
-Note the CA cert should be the base64 encoded string of the PEM format cert content.
+
+> [!NOTE]
+> The CA certificate should be the base64 encoded string of the PEM format cert content.
```json {
Note the CA cert should be the base64 encoded string of the PEM format cert cont
} ```
-Create a file and provide values for *httpProxy*, *httpsProxy*, and *noProxy*. If your environment requires it, also provide a *trustedCa* value. Next, deploy a cluster, passing in your filename via the `http-proxy-config` flag.
+Create a file and provide values for *httpProxy*, *httpsProxy*, and *noProxy*. If your environment requires it, provide a value for *trustedCa*. Next, deploy a cluster, passing in your filename using the `http-proxy-config` flag.
```azurecli az aks create -n $clusterName -g $resourceGroup --http-proxy-config aks-proxy-config.json
Your cluster will initialize with the HTTP proxy configured on the nodes.
## Configuring an HTTP proxy using Azure Resource Manager (ARM) templates
-Deploying an AKS cluster with an HTTP proxy configured via ARM template is straightforward. The same schema used for CLI deployment exists in the `Microsoft.ContainerService/managedClusters` definition under properties:
+Deploying an AKS cluster with an HTTP proxy configured using an ARM template is straightforward. The same schema used for CLI deployment exists in the `Microsoft.ContainerService/managedClusters` definition under properties:
```json "properties": {
Deploying an AKS cluster with an HTTP proxy configured via ARM template is strai
} ```
-In your template, provide values for *httpProxy*, *httpsProxy*, and *noProxy*. If necessary, also provide a value for `*trustedCa*. Deploy the template, and your cluster should initialize with your HTTP proxy configured on the nodes.
+In your template, provide values for *httpProxy*, *httpsProxy*, and *noProxy*. If necessary, provide a value for *trustedCa*. Deploy the template, and your cluster should initialize with your HTTP proxy configured on the nodes.
## Handling CA rollover
-Values for *httpProxy*, *httpsProxy*, and *noProxy* cannot be changed after cluster creation. However, to support rolling CA certs, the value for *trustedCa* can be changed and applied to the cluster with the [az aks update][az-aks-update] command.
+Values for *httpProxy*, *httpsProxy*, and *noProxy* can't be changed after cluster creation. However, to support rolling CA certs, the value for *trustedCa* can be changed and applied to the cluster with the [az aks update][az-aks-update] command.
-For example, assuming a new file has been created with the base64 encoded string of the new CA cert called *aks-proxy-config-2.json*, the following action will update the cluster:
+For example, assuming a new file has been created with the base64 encoded string of the new CA cert called *aks-proxy-config-2.json*, the following action updates the cluster:
```azurecli az aks update -n $clusterName -g $resourceGroup --http-proxy-config aks-proxy-config-2.json
az aks update -n $clusterName -g $resourceGroup --http-proxy-config aks-proxy-co
## Monitoring add-on configuration
-When using the HTTP proxy with the Monitoring add-on, the following configurations are supported:
+The HTTP proxy with the Monitoring add-on supports the following configurations:
- Outbound proxy without authentication - Outbound proxy with username & password authentication - Outbound proxy with trusted cert for Log Analytics endpoint
-The following configurations are not supported:
+The following configurations aren't supported:
- - The Custom Metrics and Recommended Alerts features are not supported when using proxy with trusted cert
- - Outbound proxy is not supported with Azure Monitor Private Link Scope (AMPLS)
+ - The Custom Metrics and Recommended Alerts features aren't supported when you use a proxy with trusted certificates
+ - Outbound proxy isn't supported with Azure Monitor Private Link Scope (AMPLS)
## Next steps-- For more on the network requirements of AKS clusters, see [control egress traffic for cluster nodes in AKS][aks-egress].
+For more information regarding the network requirements of AKS clusters, see [control egress traffic for cluster nodes in AKS][aks-egress].
<!-- LINKS - internal --> [aks-egress]: ./limit-egress-traffic.md
The following configurations are not supported:
[az-provider-register]: /cli/azure/provider#az_provider_register [az-extension-add]: /cli/azure/extension#az_extension_add [az-extension-update]: /cli/azure/extension#az-extension-update
+[install-azure-cli]: /cli/azure/install-azure-cli
aks Image Cleaner https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/image-cleaner.md
It's common to use pipelines to build and deploy images on Azure Kubernetes Serv
### [Azure CLI](#tab/azure-cli)
-Register the `EnableImageCleanerPreview` feature flag by using the [az feature register][az-feature-register] command, as shown in the following example:
+First, install the aks-preview extension by running the following command:
+
+```azurecli
+az extension add --name aks-preview
+```
+
+Run the following command to update to the latest version of the extension released:
+
+```azurecli
+az extension update --name aks-preview
+```
+
+Then register the `EnableImageCleanerPreview` feature flag by using the [az feature register][az-feature-register] command, as shown in the following example:
```azurecli-interactive az feature register --namespace "Microsoft.ContainerService" --name "EnableImageCleanerPreview" ```
-It takes a few minutes for the status to show *Registered*. Verify the registration status by using the [az feature list][az-feature-list] command:
+It takes a few minutes for the status to show *Registered*. Verify the registration status by using the [az feature show][az-feature-show] command:
```azurecli-interactive
-az feature list -o table --query "[?contains(name, 'Microsoft.ContainerService/EnableImageCleanerPreview')].{Name:name,State:properties.state}"
+az feature show --namespace "Microsoft.ContainerService" --name "EnableImageCleanerPreview"
```
-When ready, refresh the registration of the *Microsoft.ContainerService* resource provider by using the [az provider register][az-provider-register] command:
+When the status reflects *Registered*, refresh the registration of the *Microsoft.ContainerService* resource provider by using the [az provider register][az-provider-register] command:
```azurecli-interactive az provider register --namespace Microsoft.ContainerService
And apply it to the cluster:
kubectl apply -f image-list.yml ```
-A job named `eraser-aks-xxx`will be triggerred which causes ImageCleaner to remove the desired images from all nodes.
+A job named `eraser-aks-xxx`will be triggered which causes ImageCleaner to remove the desired images from all nodes.
## Disable ImageCleaner
The deletion logs are stored in the `image-cleaner-kind-worker` pods. You can ch
[az-aks-create]: /cli/azure/aks#az_aks_create [az-aks-update]: /cli/azure/aks#az_aks_update
-[az-feature-register]: /cli/azure/feature#az_feature_register
+[az-feature-register]: /cli/azure/feature#az-feature-register
[register-azproviderpreviewfeature]: /powershell/module/az.resources/register-azproviderpreviewfeature
-[az-feature-list]: /cli/azure/feature#az_feature_list
+[az-feature-show]: /cli/azure/feature#az-feature-show
[get-azproviderpreviewfeature]: /powershell/module/az.resources/get-azproviderpreviewfeature
-[az-provider-register]: /cli/azure/provider#az_provider_register
+[az-provider-register]: /cli/azure/provider#az-provider-register
[register-azresourceprovider]: /powershell/module/az.resources/register-azresourceprovider [arm-vms]: https://azure.microsoft.com/blog/azure-virtual-machines-with-ampere-altra-arm-based-processors-generally-available/
aks Intro Kubernetes https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/intro-kubernetes.md
Learn more about deploying and managing AKS.
[azure-monitor]: ../azure-monitor/containers/containers.md [azure-logs]: ../azure-monitor/logs/log-analytics-overview.md [helm]: quickstart-helm.md
-[aks-best-practices]: best-practices.md
+[aks-best-practices]: best-practices.md
aks Keda Deploy Add On Arm https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/keda-deploy-add-on-arm.md
This article shows you how to deploy the Kubernetes Event-driven Autoscaling (KE
[!INCLUDE [Current version callout](./includes/ked)] - ## Prerequisites - An Azure subscription. If you don't have an Azure subscription, you can create a [free account](https://azure.microsoft.com/free). - [Azure CLI installed](/cli/azure/install-azure-cli). - Firewall rules are configured to allow access to the Kubernetes API server. ([learn more][aks-firewall-requirements])
-### Register the `AKS-KedaPreview` feature flag
+## Install the aks-preview Azure CLI extension
++
+To install the aks-preview extension, run the following command:
+
+```azurecli
+az extension add --name aks-preview
+```
-To use the KEDA, you must enable the `AKS-KedaPreview` feature flag on your subscription.
+Run the following command to update to the latest version of the extension released:
```azurecli
-az feature register --name AKS-KedaPreview --namespace Microsoft.ContainerService
+az extension update --name aks-preview
+```
+
+## Register the 'AKS-KedaPreview' feature flag
+
+Register the `AKS-KedaPreview` feature flag by using the [az feature register][az-feature-register] command, as shown in the following example:
+
+```azurecli-interactive
+az feature register --namespace "Microsoft.ContainerService" --name "AKS-KedaPreview"
```
-You can check on the registration status by using the `az feature list` command:
+It takes a few minutes for the status to show *Registered*. Verify the registration status by using the [az feature show][az-feature-show] command:
```azurecli-interactive
-az feature list -o table --query "[?contains(name, 'Microsoft.ContainerService/AKS-KedaPreview')].{Name:name,State:properties.state}"
+az feature show --namespace "Microsoft.ContainerService" --name "AKS-KedaPreview"
```
-When ready, refresh the registration of the *Microsoft.ContainerService* resource provider by using the `az provider register` command:
+When the status reflects *Registered*, refresh the registration of the *Microsoft.ContainerService* resource provider by using the [az provider register][az-provider-register] command:
```azurecli-interactive az provider register --namespace Microsoft.ContainerService
You can troubleshoot KEDA add-on problems in [this article][keda-troubleshoot].
[az-group-delete]: /cli/azure/group#az-group-delete [keda-troubleshoot]: /troubleshoot/azure/azure-kubernetes/troubleshoot-kubernetes-event-driven-autoscaling-add-on?context=/azure/aks/context/aks-context [aks-firewall-requirements]: limit-egress-traffic.md#azure-global-required-network-rules
+[az-provider-register]: /cli/azure/provider#az-provider-register
+[az-feature-register]: /cli/azure/feature#az-feature-register
+[az-feature-show]: /cli/azure/feature#az-feature-show
<!-- LINKS - external --> [kubectl]: https://kubernetes.io/docs/user-guide/kubectl
aks Keda Deploy Add On Cli https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/keda-deploy-add-on-cli.md
This article shows you how to install the Kubernetes Event-driven Autoscaling (K
[!INCLUDE [Current version callout](./includes/ked)] - ## Prerequisites - An Azure subscription. If you don't have an Azure subscription, you can create a [free account](https://azure.microsoft.com/free). - [Azure CLI installed](/cli/azure/install-azure-cli). - Firewall rules are configured to allow access to the Kubernetes API server. ([learn more][aks-firewall-requirements])
-### Install the extension `aks-preview`
-
-Install the `aks-preview` extension in the AKS cluster to make sure you have the latest version of AKS extension before installing KEDA add-on.
+## Install the aks-preview Azure CLI extension
++
+To install the aks-preview extension, run the following command:
```azurecli
-az extension add --upgrade --name aks-preview
+az extension add --name aks-preview
```
-### Register the `AKS-KedaPreview` feature flag
-
-To use the KEDA, you must enable the `AKS-KedaPreview` feature flag on your subscription.
+Run the following command to update to the latest version of the extension released:
```azurecli
-az feature register --name AKS-KedaPreview --namespace Microsoft.ContainerService
+az extension update --name aks-preview
+```
+
+## Register the 'AKS-KedaPreview' feature flag
+
+Register the `AKS-KedaPreview` feature flag by using the [az feature register][az-feature-register] command, as shown in the following example:
+
+```azurecli-interactive
+az feature register --namespace "Microsoft.ContainerService" --name "AKS-KedaPreview"
```
-You can check on the registration status by using the `az feature list` command:
+It takes a few minutes for the status to show *Registered*. Verify the registration status by using the [az feature show][az-feature-show] command:
```azurecli-interactive
-az feature list -o table --query "[?contains(name, 'Microsoft.ContainerService/AKS-KedaPreview')].{Name:name,State:properties.state}"
+az feature show --namespace "Microsoft.ContainerService" --name "AKS-KedaPreview"
```
-When ready, refresh the registration of the *Microsoft.ContainerService* resource provider by using the `az provider register` command:
+When the status reflects *Registered*, refresh the registration of the *Microsoft.ContainerService* resource provider by using the [az provider register][az-provider-register] command:
```azurecli-interactive az provider register --namespace Microsoft.ContainerService
This article showed you how to install the KEDA add-on on an AKS cluster using A
You can troubleshoot KEDA add-on problems in [this article][keda-troubleshoot].
+<!-- LINKS - internal -->
+[az-provider-register]: /cli/azure/provider#az-provider-register
+[az-feature-register]: /cli/azure/feature#az-feature-register
+[az-feature-show]: /cli/azure/feature#az-feature-show
[az-aks-create]: /cli/azure/aks#az-aks-create [az aks install-cli]: /cli/azure/aks#az-aks-install-cli [az aks get-credentials]: /cli/azure/aks#az-aks-get-credentials
aks Open Service Mesh About https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/open-service-mesh-about.md
OSM can be added to your Azure Kubernetes Service (AKS) cluster by enabling the
> [!IMPORTANT] > Based on the version of Kubernetes your cluster is running, the OSM add-on installs a different version of OSM:
-> - If your cluster is running Kubernetes version 1.24.0 or greater, the OSM add-on installs version *1.2.0* of OSM.
-> - If your cluster is running a version of Kubernetes between 1.23.5 and 1.24.0, the OSM add-on installs version *1.1.1* of OSM.
+> - If your cluster is running Kubernetes version 1.24.0 or greater, the OSM add-on installs version *1.2.2* of OSM.
+> - If your cluster is running a version of Kubernetes between 1.23.5 and 1.24.0, the OSM add-on installs version *1.1.3* of OSM.
> - If your cluster is running a version of Kubernetes below 1.23.5, the OSM add-on installs version *1.0.0* of OSM. ## Capabilities and features
aks Open Service Mesh Binary https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/open-service-mesh-binary.md
This article will discuss how to download the OSM client library to be used to o
> [!IMPORTANT] > Based on the version of Kubernetes your cluster is running, the OSM add-on installs a different version of OSM:
-> - If your cluster is running Kubernetes version 1.24.0 or greater, the OSM add-on installs version *1.2.0* of OSM.
-> - If your cluster is running a version of Kubernetes between 1.23.5 and 1.24.0, the OSM add-on installs version *1.1.1* of OSM.
+> - If your cluster is running Kubernetes version 1.24.0 or greater, the OSM add-on installs version *1.2.2* of OSM.
+> - If your cluster is running a version of Kubernetes between 1.23.5 and 1.24.0, the OSM add-on installs version *1.1.3* of OSM.
> - If your cluster is running a version of Kubernetes below 1.23.5, the OSM add-on installs version *1.0.0* of OSM.
aks Open Service Mesh Deploy Addon Az Cli https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/open-service-mesh-deploy-addon-az-cli.md
This article shows you how to install the Open Service Mesh (OSM) add-on on an A
> [!IMPORTANT] > Based on the version of Kubernetes your cluster is running, the OSM add-on installs a different version of OSM:
-> - If your cluster is running Kubernetes version 1.24.0 or greater, the OSM add-on installs version *1.2.0* of OSM.
-> - If your cluster is running a version of Kubernetes between 1.23.5 and 1.24.0, the OSM add-on installs version *1.1.1* of OSM.
+> - If your cluster is running Kubernetes version 1.24.0 or greater, the OSM add-on installs version *1.2.2* of OSM.
+> - If your cluster is running a version of Kubernetes between 1.23.5 and 1.24.0, the OSM add-on installs version *1.1.3* of OSM.
> - If your cluster is running a version of Kubernetes below 1.23.5, the OSM add-on installs version *1.0.0* of OSM. ## Prerequisites
aks Open Service Mesh Deploy Addon Bicep https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/open-service-mesh-deploy-addon-bicep.md
This article shows you how to deploy the Open Service Mesh (OSM) add-on to Azure
> [!IMPORTANT] > Based on the version of Kubernetes your cluster is running, the OSM add-on installs a different version of OSM:
-> - If your cluster is running Kubernetes version 1.24.0 or greater, the OSM add-on installs version *1.2.0* of OSM.
-> - If your cluster is running a version of Kubernetes between 1.23.5 and 1.24.0, the OSM add-on installs version *1.1.1* of OSM.
+> - If your cluster is running Kubernetes version 1.24.0 or greater, the OSM add-on installs version *1.2.2* of OSM.
+> - If your cluster is running a version of Kubernetes between 1.23.5 and 1.24.0, the OSM add-on installs version *1.1.3* of OSM.
> - If your cluster is running a version of Kubernetes below 1.23.5, the OSM add-on installs version *1.0.0* of OSM. [Bicep](../azure-resource-manager/bicep/overview.md) is a domain-specific language that uses declarative syntax to deploy Azure resources. You can use Bicep in place of creating [Azure Resource Manager templates](../azure-resource-manager/templates/overview.md) to deploy your infrastructure-as-code Azure resources.
aks Operator Best Practices Network https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/operator-best-practices-network.md
This article focused on network connectivity and security. For more information
[contour]: https://github.com/heptio/contour [haproxy]: https://www.haproxy.org [traefik]: https://github.com/containous/traefik
-[barracuda-waf]: https://www.barracuda.com/products/webapplicationfirewall/models/5
+[barracuda-waf]: https://www.barracuda.com/products/webapplicationfirewall/models/
<!-- INTERNAL LINKS --> [aks-concepts-network]: concepts-network.md
This article focused on network connectivity and security. For more information
[advanced-networking]: configure-azure-cni.md [aks-configure-kubenet-networking]: configure-kubenet.md [concepts-node-selectors]: concepts-clusters-workloads.md#node-selectors
-[nodepool-upgrade]: use-multiple-node-pools.md#upgrade-a-node-pool
+[nodepool-upgrade]: use-multiple-node-pools.md#upgrade-a-node-pool
aks Out Of Tree https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/out-of-tree.md
We recently rolled out the Cloud Storage Interface (CSI) drivers to be the defau
The Cloud Controller Manager is the default controller from Kubernetes 1.22, supported by AKS. If running < v1.22, follow instructions below.
-## Prerequisites
-You must have the following resource installed:
+## Prerequisites
+You must have the following resources installed:
* The Azure CLI * Kubernetes version 1.20.x or above
-* The `aks-preview` extension version 0.5.5 or later
-### Register the `EnableCloudControllerManager` feature flag
+## Install the aks-preview Azure CLI extension
-To use the Cloud Controller Manager feature, you must enable the `EnableCloudControllerManager` feature flag on your subscription.
+
+To install the aks-preview extension, run the following command:
```azurecli
-az feature register --name EnableCloudControllerManager --namespace Microsoft.ContainerService
+az extension add --name aks-preview
```
-You can check on the registration status by using the [az feature list][az-feature-list] command:
-```azurecli-interactive
-az feature list -o table --query "[?contains(name, 'Microsoft.ContainerService/EnableCloudControllerManager')].{Name:name,State:properties.state}"
+Run the following command to update to the latest version of the extension released:
+
+```azurecli
+az extension update --name aks-preview
```
-When ready, refresh the registration of the *Microsoft.ContainerService* resource provider by using the [az provider register][az-provider-register] command:
+## Register the 'EnableCloudControllerManager' feature flag
+
+Register the `EnableCloudControllerManager` feature flag by using the [az feature register][az-feature-register] command, as shown in the following example:
```azurecli-interactive
-az provider register --namespace Microsoft.ContainerService
+az feature register --namespace "Microsoft.ContainerService" --name "EnableCloudControllerManager"
```
-### Install the aks-preview CLI extension
+It takes a few minutes for the status to show *Registered*. Verify the registration status by using the [az feature show][az-feature-show] command:
```azurecli-interactive
-# Install the aks-preview extension
-az extension add --name aks-preview
+az feature show --namespace "Microsoft.ContainerService" --name "EnableCloudControllerManager"
+```
-# Update the extension to make sure you have the latest version installed
-az extension update --name aks-preview
+When the status reflects *Registered*, refresh the registration of the *Microsoft.ContainerService* resource provider by using the [az provider register][az-provider-register] command:
+
+```azurecli-interactive
+az provider register --namespace Microsoft.ContainerService
``` ## Create a new AKS cluster with Cloud Controller Manager with version <1.22
az aks upgrade -n aks -g myResourceGroup -k <version> --aks-custom-headers Enabl
<!-- LINKS - internal --> [az-provider-register]: /cli/azure/provider#az-provider-register [az-feature-register]: /cli/azure/feature#az-feature-register
-[az-feature-list]: /cli/azure/feature#az-feature-list
+[az-feature-show]: /cli/azure/feature#az-feature-show
[csi-docs]: csi-storage-drivers.md <!-- LINKS - External -->
aks Policy Reference https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/policy-reference.md
Title: Built-in policy definitions for Azure Kubernetes Service description: Lists Azure Policy built-in policy definitions for Azure Kubernetes Service. These built-in policy definitions provide common approaches to managing your Azure resources. Previously updated : 11/28/2022 Last updated : 01/05/2023
aks Security Controls Policy https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/security-controls-policy.md
Title: Azure Policy Regulatory Compliance controls for Azure Kubernetes Service (AKS) description: Lists Azure Policy Regulatory Compliance controls available for Azure Kubernetes Service (AKS). These built-in policy definitions provide common approaches to managing the compliance of your Azure resources. Previously updated : 11/04/2022 Last updated : 01/05/2023
aks Support Policies https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/support-policies.md
Microsoft provides technical support for the following examples:
* Connectivity to other Azure services and applications * Ingress controllers and ingress or load balancer configurations * Network performance and latency
- * [Network policies](use-network-policies.md#differences-between-azure-npm-and-calico-network-policy-and-their-capabilities)
+ * [Network policies](use-network-policies.md#differences-between-azure-network-policy-manager-and-calico-network-policy-and-their-capabilities)
> [!NOTE] > Any cluster actions taken by Microsoft/AKS are made with user consent under a built-in Kubernetes role `aks-service` and built-in role binding `aks-service-rolebinding`. This role enables AKS to troubleshoot and diagnose cluster issues, but can't modify permissions nor create roles or role bindings, or other high privilege actions. Role access is only enabled under active support tickets with just-in-time (JIT) access.
aks Tutorial Kubernetes Deploy Application https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/tutorial-kubernetes-deploy-application.md
Title: Kubernetes on Azure tutorial - Deploy an application
+ Title: Kubernetes on Azure tutorial - Deploy an application
description: In this Azure Kubernetes Service (AKS) tutorial, you deploy a multi-container application to your cluster using a custom image stored in Azure Container Registry. Previously updated : 05/24/2021- Last updated : 01/04/2023 #Customer intent: As a developer, I want to learn how to deploy apps to an Azure Kubernetes Service (AKS) cluster so that I can deploy and run my own applications.
# Tutorial: Run applications in Azure Kubernetes Service (AKS)
-Kubernetes provides a distributed platform for containerized applications. You build and deploy your own applications and services into a Kubernetes cluster, and let the cluster manage the availability and connectivity. In this tutorial, part four of seven, a sample application is deployed into a Kubernetes cluster. You learn how to:
+Kubernetes provides a distributed platform for containerized applications. You build and deploy your own applications and services into a Kubernetes cluster and let the cluster manage the availability and connectivity. In this tutorial, part four of seven, you deploy a sample application into a Kubernetes cluster. You learn how to:
> [!div class="checklist"]
-> * Update a Kubernetes manifest file
-> * Run an application in Kubernetes
-> * Test the application
+>
+> * Update a Kubernetes manifest file.
+> * Run an application in Kubernetes.
+> * Test the application.
-In later tutorials, this application is scaled out and updated.
+In later tutorials, you'll scale out and update your application.
-This quickstart assumes a basic understanding of Kubernetes concepts. For more information, see [Kubernetes core concepts for Azure Kubernetes Service (AKS)][kubernetes-concepts].
+This quickstart assumes you have a basic understanding of Kubernetes concepts. For more information, see [Kubernetes core concepts for Azure Kubernetes Service (AKS)][kubernetes-concepts].
> [!TIP]
-> AKS clusters can use GitOps for configuration management. This enables declarations of your cluster's state, which are pushed to source control, to be applied to the cluster automatically. To learn how to use GitOps to deploy an application with an AKS cluster, see the tutorial [Use GitOps with Flux v2][gitops-flux-tutorial] and follow the [prerequisites for Azure Kubernetes Service clusters][gitops-flux-tutorial-aks].
+> AKS clusters can use GitOps for configuration management. GitOp enables declarations of your cluster's state, which are pushed to source control, to be applied to the cluster automatically. To learn how to use GitOps to deploy an application with an AKS cluster, see the [prerequisites for Azure Kubernetes Service clusters][gitops-flux-tutorial-aks] in the [GitOps with Flux v2][gitops-flux-tutorial] tutorial.
## Before you begin
-In previous tutorials, an application was packaged into a container image, this image was uploaded to Azure Container Registry, and a Kubernetes cluster was created.
+In previous tutorials, you packaged an application into a container image, uploaded the image to Azure Container Registry, and created a Kubernetes cluster.
-To complete this tutorial, you need the pre-created `azure-vote-all-in-one-redis.yaml` Kubernetes manifest file. This file was downloaded with the application source code in a previous tutorial. Verify that you've cloned the repo, and that you have changed directories into the cloned repo. If you haven't done these steps, and would like to follow along, start with [Tutorial 1 ΓÇô Create container images][aks-tutorial-prepare-app].
+To complete this tutorial, you need the pre-created `azure-vote-all-in-one-redis.yaml` Kubernetes manifest file. This file download was included with the application source code in a previous tutorial. Verify that you've cloned the repo and that you've changed directories into the cloned repo. If you haven't done these steps and would like to follow along, start with [Tutorial 1: Prepare an application for AKS][aks-tutorial-prepare-app].
### [Azure CLI](#tab/azure-cli)
In these tutorials, an Azure Container Registry (ACR) instance stores the contai
### [Azure CLI](#tab/azure-cli)
-Get the ACR login server name using the [az acr list][az-acr-list] command as follows:
+Get the ACR login server name using the [az acr list][az-acr-list] command.
```azurecli az acr list --resource-group myResourceGroup --query "[].{acrLoginServer:loginServer}" --output table
az acr list --resource-group myResourceGroup --query "[].{acrLoginServer:loginSe
### [Azure PowerShell](#tab/azure-powershell)
-Get the ACR login server name using the [Get-AzContainerRegistry][get-azcontainerregistry] cmdlet as follows:
+Get the ACR login server name using the [Get-AzContainerRegistry][get-azcontainerregistry] cmdlet.
```azurepowershell (Get-AzContainerRegistry -ResourceGroupName myResourceGroup -Name <acrName>).LoginServer
Get the ACR login server name using the [Get-AzContainerRegistry][get-azcontaine
-The sample manifest file from the git repo cloned in the first tutorial uses the images from Microsoft Container Registry (*mcr.microsoft.com*). Make sure that you're in the cloned *azure-voting-app-redis* directory, then open the manifest file with a text editor, such as `vi`:
+The sample manifest file from the git repo you cloned in the first tutorial uses the images from Microsoft Container Registry (*mcr.microsoft.com*). Make sure you're in the cloned *azure-voting-app-redis* directory, and then open the manifest file with a text editor, such as `vi`:
```console vi azure-vote-all-in-one-redis.yaml ```
-Replace *mcr.microsoft.com* with your ACR login server name. The image name is found on line 60 of the manifest file. The following example shows the default image name:
+Replace *mcr.microsoft.com* with your ACR login server name. You can find the image name on line 60 of the manifest file. The following example shows the default image name:
```yaml containers:
containers:
image: mcr.microsoft.com/azuredocs/azure-vote-front:v1 ```
-Provide your own ACR login server name so that your manifest file looks like the following example:
+Provide your own ACR login server name so your manifest file looks similar to the following example:
```yaml containers:
Save and close the file. In `vi`, use `:wq`.
## Deploy the application
-To deploy your application, use the [kubectl apply][kubectl-apply] command. This command parses the manifest file and creates the defined Kubernetes objects. Specify the sample manifest file, as shown in the following example:
+To deploy your application, use the [`kubectl apply`][kubectl-apply] command, specifying the sample manifest file. This command parses the manifest file and creates the defined Kubernetes objects.
```console kubectl apply -f azure-vote-all-in-one-redis.yaml
service "azure-vote-front" created
When the application runs, a Kubernetes service exposes the application front end to the internet. This process can take a few minutes to complete.
-To monitor progress, use the [kubectl get service][kubectl-get] command with the `--watch` argument.
+To monitor progress, use the [`kubectl get service`][kubectl-get] command with the `--watch` argument.
```console kubectl get service azure-vote-front --watch ```
-Initially the *EXTERNAL-IP* for the *azure-vote-front* service is shown as *pending*:
+Initially the *EXTERNAL-IP* for the *azure-vote-front* service shows as *pending*.
```output azure-vote-front LoadBalancer 10.0.34.242 <pending> 80:30676/TCP 5s
When the *EXTERNAL-IP* address changes from *pending* to an actual public IP add
azure-vote-front LoadBalancer 10.0.34.242 52.179.23.131 80:30676/TCP 67s ```
-To see the application in action, open a web browser to the external IP address of your service:
+To see the application in action, open a web browser to the external IP address of your service.
:::image type="content" source="./media/container-service-kubernetes-tutorials/azure-vote.png" alt-text="Screenshot showing the container image Azure Voting App running in an AKS cluster opened in a local web browser" lightbox="./media/container-service-kubernetes-tutorials/azure-vote.png":::
-If the application didn't load, it might be due to an authorization problem with your image registry. To view the status of your containers, use the `kubectl get pods` command. If the container images can't be pulled, see [Authenticate with Azure Container Registry from Azure Kubernetes Service](cluster-container-registry-integration.md).
+If the application doesn't load, it might be an authorization problem with your image registry. To view the status of your containers, use the `kubectl get pods` command. If you can't pull the container images, see [Authenticate with Azure Container Registry from Azure Kubernetes Service](cluster-container-registry-integration.md).
## Next steps
-In this tutorial, a sample Azure vote application was deployed to a Kubernetes cluster in AKS. You learned how to:
+In this tutorial, you deployed a sample Azure vote application to a Kubernetes cluster in AKS. You learned how to:
> [!div class="checklist"]
-> * Update a Kubernetes manifest files
-> * Run an application in Kubernetes
-> * Test the application
+>
+> * Update a Kubernetes manifest file.
+> * Run an application in Kubernetes.
+> * Test the application.
-Advance to the next tutorial to learn how to scale a Kubernetes application and the underlying Kubernetes infrastructure.
+In the next tutorial, you'll learn how to scale a Kubernetes application and the underlying Kubernetes infrastructure.
> [!div class="nextstepaction"] > [Scale Kubernetes application and infrastructure][aks-tutorial-scale]
aks