Updates from: 05/25/2023 01:37:17
Service Microsoft Docs article Related commit history on GitHub Change details
active-directory-b2c Custom Email Sendgrid https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory-b2c/custom-email-sendgrid.md
Custom email verification requires the use of a third-party email provider like
## Create a SendGrid account
-If you don't already have one, start by setting up a SendGrid account (Azure customers can unlock 25,000 free emails each month). For setup instructions, see the [Create a SendGrid Account](https://docs.sendgrid.com/for-developers/partners/microsoft-azure-2021#create-a-sendgrid-account) section of [How to send email using SendGrid with Azure](https://docs.sendgrid.com/for-developers/partners/microsoft-azure-2021#create-a-twilio-sendgrid-accountcreate-a-twilio-sendgrid-account).
+If you don't already have one, start by setting up a SendGrid account. For setup instructions, see the [Create a SendGrid Account](https://docs.sendgrid.com/for-developers/partners/microsoft-azure-2021#create-a-sendgrid-account) section of [How to send email using SendGrid with Azure](https://docs.sendgrid.com/for-developers/partners/microsoft-azure-2021#create-a-twilio-sendgrid-accountcreate-a-twilio-sendgrid-account).
Be sure to complete the section in which you [create a SendGrid API key](https://docs.sendgrid.com/for-developers/partners/microsoft-azure-2021#to-find-your-sendgrid-api-key). Record the API key for use in a later step.
active-directory-b2c Partner Saviynt https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory-b2c/partner-saviynt.md
Previously updated : 03/07/2023 Last updated : 05/23/2023
Enable Saviynt to perform user delete operations in Azure AD B2C.
Learn more: [Application and service principal objects in Azure AD](../active-directory/develop/app-objects-and-service-principals.md)
-1. Install the latest version of MSOnline PowerShell Module on a Windows workstation or server.
+1. Install the latest version of Microsoft Graph PowerShell Module on a Windows workstation or server.
-For more information, see [Azure Active Directory V2 PowerShell Module](https://www.powershellgallery.com/packages/AzureAD/2.0.2.140)
+For more information, see [Microsoft Graph PowerShell documentation](/powershell/microsoftgraph).
-2. Connect to the AzureAD PowerShell module and execute the following commands:
+2. Connect to the PowerShell module and execute the following commands:
```powershell
-Connect-msolservice #Enter Admin credentials of the Azure portal
-$webApp = Get-MsolServicePrincipal ΓÇôAppPrincipalId ΓÇ£<ClientId of Azure AD Application>ΓÇ¥
-Add-MsolRoleMember -RoleName "Company Administrator" -RoleMemberType ServicePrincipal -RoleMemberObjectId $webApp.ObjectId
+Connect-MgGraph #Enter Admin credentials of the Azure portal
+$webApp = Get-MgServicePrincipal ΓÇôAppPrincipalId ΓÇ£<ClientId of Azure AD Application>ΓÇ¥
+New-MgDirectoryRoleMemberByRef -RoleName "Company Administrator" -RoleMemberType ServicePrincipal -RoleMemberObjectId $webApp.ObjectId
``` ## Test the solution
active-directory-b2c Supported Azure Ad Features https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory-b2c/supported-azure-ad-features.md
An Azure Active Directory B2C (Azure AD B2C) tenant is different than an Azure A
|Feature |Azure AD | Azure AD B2C | ||||
-| [Groups](../active-directory/fundamentals/active-directory-groups-create-azure-portal.md) | Groups can be used to manage administrative and user accounts.| Groups can be used to manage administrative accounts. [Consumer accounts](user-overview.md#consumer-user) can't be member of any group, so you can't perform [group-based assignment of enterprise applications](../active-directory/manage-apps/assign-user-or-group-access-portal.md).|
+| [Groups](../active-directory/fundamentals/active-directory-groups-create-azure-portal.md) | Groups can be used to manage administrative and user accounts.| Groups can be used to manage administrative accounts. You can't perform [group-based assignment of enterprise applications](../active-directory/manage-apps/assign-user-or-group-access-portal.md).|
| [Inviting External Identities guests](../active-directory//external-identities/add-users-administrator.md)| You can invite guest users and configure External Identities features such as federation and sign-in with Facebook and Google accounts. | You can invite only a Microsoft account or an Azure AD user as a guest to your Azure AD tenant for accessing applications or managing tenants. For [consumer accounts](user-overview.md#consumer-user), you use Azure AD B2C user flows and custom policies to manage users and sign-up or sign-in with external identity providers, such as Google or Facebook. | | [Roles and administrators](../active-directory/fundamentals/active-directory-users-assign-role-azure-portal.md)| Fully supported for administrative and user accounts. | Roles are not supported with [consumer accounts](user-overview.md#consumer-user). Consumer accounts don't have access to any Azure resources.| | [Custom domain names](../active-directory/fundamentals/add-custom-domain.md) | You can use Azure AD custom domains for administrative accounts only. | [Consumer accounts](user-overview.md#consumer-user) can sign in with a username, phone number, or any email address. You can use [custom domains](custom-domain.md) in your redirect URLs.|
An Azure Active Directory B2C (Azure AD B2C) tenant is different than an Azure A
| [Go-Local add-on](data-residency.md#go-local-add-on) | Azure AD Go-Local add-on enables you to store data in the country you choose when your Azure AD tenant.| Just like Azure AD, Azure AD B2C supports [Go-Local add-on](data-residency.md#go-local-add-on). | > [!NOTE]
-> **Other Azure resources in your tenant:** <br>In an Azure AD B2C tenant, you can't provision other Azure resources such as virtual machines, Azure web apps, or Azure functions. You must create these resources in your Azure AD tenant.
+> **Other Azure resources in your tenant:** <br>In an Azure AD B2C tenant, you can't provision other Azure resources such as virtual machines, Azure web apps, or Azure functions. You must create these resources in your Azure AD tenant.
active-directory-b2c Tenant Management Check Tenant Creation Permission https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory-b2c/tenant-management-check-tenant-creation-permission.md
Anyone who creates an Azure Active Directory B2C (Azure AD B2C) becomes the *Glo
- If you haven't already created your own [Azure AD B2C Tenant](tutorial-create-tenant.md), create one now. You can use an existing Azure AD B2C tenant.
-## Restrict non-admin users from creating Azure AD B2C tenants (preview)
+## Restrict non-admin users from creating Azure AD B2C tenants
As a *Global Administrator* in an Azure AD B2C tenant, you can restrict non-admin users from creating tenants. To do so, use the following steps:
As a *Global Administrator* in an Azure AD B2C tenant, you can restrict non-admi
1. At the top of the **User Settings** page, select **Save**.
-## Check tenant creation permission (preview)
+## Check tenant creation permission
Before you create an Azure AD B2C tenant, make sure that you've the permission to do so. Use these steps to check that you've the permission to create a tenant:
Before you create an Azure AD B2C tenant, make sure that you've the permission t
## Next steps - [Read tenant name and ID](tenant-management-read-tenant-name.md)-- [Clean up resources and delete tenant](tutorial-delete-tenant.md)
+- [Clean up resources and delete tenant](tutorial-delete-tenant.md)
active-directory-domain-services Concepts Migration Benefits https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory-domain-services/concepts-migration-benefits.md
- Title: Benefits of Classic deployment migration in Azure AD Domain Services | Microsoft Docs
-description: Learn more about the benefits of migrating a Classic deployment of Azure Active Directory Domain Services to the Resource Manager deployment model
-------- Previously updated : 01/29/2023---
-# Benefits of migration from the Classic to Resource Manager deployment model in Azure Active Directory Domain Services
-
-Azure Active Directory Domain Services (Azure AD DS) lets you migrate an existing managed domain that uses the Classic deployment model to the Resource Manager deployment model. Azure AD DS managed domains that use the Resource Manager deployment model provide additional features such as fine-grained password policy, audit logs, and account lockout protection.
-
-This article outlines the benefits for migration. To get started, see [Migrate Azure AD Domain Services from the Classic virtual network model to Resource Manager][howto-migrate].
-
-> [!NOTE]
-> In 2017, Azure AD Domain Services became available to host in an Azure Resource Manager network. Since then, we have been able to build a more secure service using the Azure Resource Manager's modern capabilities. Because Azure Resource Manager deployments fully replace classic deployments, Azure AD DS classic virtual network deployments will be retired on March 1, 2023.
->
-> For more information, see the [official deprecation notice](https://azure.microsoft.com/updates/we-are-retiring-azure-ad-domain-services-classic-vnet-support-on-march-1-2023/)
-
-## Migration benefits
-
-The migration process takes an existing managed domain that uses the Classic deployment model and moves to use the Resource Manager deployment model. When you migrate a managed domain from the Classic to Resource Manager deployment model, you avoid the need to rejoin machines to the managed domain or delete the managed domain and create one from scratch. VMs continue to be joined to the managed domain at the end of the migration process.
-
-After migration, Azure AD DS provides many features that are only available for domains using Resource Manager deployment model, such as the following:
-
-* [Fine-grained password policy support][password-policy].
-* Faster synchronization speeds between Azure AD and Azure AD Domain Services.
-* Two new [attributes that synchronize from Azure AD][attributes] - *manager* and *employeeID*.
-* Access to higher-powered domain controllers when you [upgrade the SKU][skus].
-* AD account lockout protection.
-* [Email notifications for alerts on your managed domain][email-alerts].
-* [Use Azure Workbooks and Azure monitor to view audit logs and sign-in activity][workbooks].
-* In supported regions, [Azure Availability Zones][availability-zones].
-* Integrations with other Azure products such as [Azure Files][azure-files], [HD Insights][hd-insights], and [Azure Virtual Desktop][avd].
-* Support has access to more telemetry and can help troubleshoot more effectively.
-* Encryption at rest using [Azure Managed Disks][managed-disks] for the data on the managed domain controllers.
-
-Managed domains that use a Resource Manager deployment model help you stay up-to-date with the latest new features. New features aren't available for managed domains that use the Classic deployment model.
-
-## Next steps
-
-To get started, see [Migrate Azure AD Domain Services from the Classic virtual network model to Resource Manager][howto-migrate].
-
-<!-- LINKS - INTERNAL -->
-[password-policy]: password-policy.md
-[skus]: change-sku.md
-[email-alerts]: notifications.md
-[workbooks]: use-azure-monitor-workbooks.md
-[azure-files]: ../storage/files/storage-files-identity-auth-active-directory-domain-service-enable.md
-[hd-insights]: ../hdinsight/domain-joined/apache-domain-joined-configure-using-azure-adds.md
-[avd]: ../virtual-desktop/overview.md
-[availability-zones]: ../reliability/availability-zones-overview.md
-[howto-migrate]: migrate-from-classic-vnet.md
-[attributes]: synchronization.md#attribute-synchronization-and-mapping-to-azure-ad-ds
-[managed-disks]: ../virtual-machines/managed-disks-overview.md
active-directory-domain-services Migrate From Classic Vnet https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory-domain-services/migrate-from-classic-vnet.md
- Title: Migrate Azure AD Domain Services from a Classic virtual network | Microsoft Docs
-description: Learn how to migrate an existing Azure AD Domain Services managed domain from the Classic virtual network model to a Resource Manager-based virtual network.
-------- Previously updated : 04/17/2023---
-# Migrate Azure Active Directory Domain Services from the Classic virtual network model to Resource Manager
-
-Starting April 1, 2023, Azure Active Directory Domain Services (Azure AD DS) has shut down all IaaS virtual machines that host domain controller services for customers who use the Classic virtual network model. Azure AD Domain Services offers a best-effort offline migration solution for customers currently using the Classic virtual network model to the Resource Manager virtual network model. Azure AD DS managed domains that use the Resource Manager deployment model have more features, such as fine-grained password policy, audit logs, and account lockout protection.
-
-This article outlines considerations for migration, followed by the required steps to successfully migrate an existing managed domain. For some of the benefits, see [Benefits of migration from the Classic to Resource Manager deployment model in Azure AD DS][migration-benefits].
-
-> [!NOTE]
-> In 2017, Azure AD Domain Services became available to host in an Azure Resource Manager network. Since then, we have been able to build a more secure service using the Azure Resource Manager's modern capabilities. Because Azure Resource Manager deployments fully replace classic deployments, Azure AD DS classic virtual network deployments will be retired on March 1, 2023.
->
-> For more information, see the [official deprecation notice](https://azure.microsoft.com/updates/we-are-retiring-azure-ad-domain-services-classic-vnet-support-on-march-1-2023/).
-
-## Overview of the migration process
-
-The offline migration process copies the underlying virtual disks for the domain controllers from the Classic managed domain to create the VMs using the Resource Manager deployment model. The managed domain is then recreated, which includes the LDAPS and DNS configuration. Synchronization to Azure AD is restarted, and LDAP certificates are restored. There's no need to rejoin any machines to a managed domainΓÇôthey continue to be joined to the managed domain and run without changes.
-
-## Before you begin
-
-As you prepare for migration, there are some considerations around the availability of authentication and management services. The managed domain remains unavailable until the migration completes successfully.
-
-> [!IMPORTANT]
-> Read all of this migration article and guidance before you start the migration process. The migration process affects the availability of the Azure AD DS domain controllers for periods of time. Users, services, and applications can't authenticate against the managed domain during the migration process.
-
-### IP addresses
-
-The domain controller IP addresses for a managed domain change after migration. This change includes the public IP address for the secure LDAP endpoint. The new IP addresses are inside the address range for the new subnet in the Resource Manager virtual network.
-
-Azure AD DS typically uses the first two available IP addresses in the address range, but this isn't guaranteed. You can't currently specify the IP addresses to use after migration.
-
-### Account lockout
-
-Managed domains that run on Classic virtual networks don't have AD account lockout policies in place. If VMs are exposed to the internet, attackers could use password-spray methods to brute-force their way into accounts. There's no account lockout policy to stop those attempts. For managed domains that use the Resource Manager deployment model and virtual networks, AD account lockout policies protect against these password-spray attacks.
-
-By default, five (5) bad password attempts in two (2) minutes lock out an account for 30 minutes.
-
-A locked out account can't be used to sign in, which may interfere with the ability to manage the managed domain or applications managed by the account. After a managed domain is migrated, accounts can experience what feels like a permanent lockout due to repeated failed attempts to sign in. Two common scenarios after migration include the following:
-
-* A service account that's using an expired password.
- * The service account repeatedly tries to sign in with an expired password, which locks out the account. To fix this, locate the application or VM with expired credentials and update the password.
-* A malicious entity is using brute-force attempts to sign in to accounts.
- * When VMs are exposed to the internet, attackers often try common username and password combinations as they attempt to sign. These repeated failed sign-in attempts can lock out the accounts. It's not recommended to use administrator accounts with generic names such as *admin* or *administrator*, for example, to minimize administrative accounts from being locked out.
- * Minimize the number of VMs that are exposed to the internet. You can use [Azure Bastion][azure-bastion] to securely connect to VMs using the Azure portal.
-
-If you suspect that some accounts may be locked out after migration, the final migration steps outline how to enable auditing or change the fine-grained password policy settings.
-
-### Restrictions on available virtual networks
-
-There are some restrictions on the virtual networks that a managed domain can be migrated to. The destination Resource Manager virtual network must meet the following requirements:
-
-* The Resource Manager virtual network must be in the same Azure subscription as the Classic virtual network that Azure AD DS is currently deployed in.
-* The Resource Manager virtual network must be in the same region as the Classic virtual network that Azure AD DS is currently deployed in.
-* The Resource Manager virtual network's subnet should have at least 3-5 available IP addresses.
-* The Resource Manager virtual network's subnet should be a dedicated subnet for Azure AD DS, and shouldn't host any other workloads.
-
-For more information on virtual network requirements, see [Virtual network design considerations and configuration options][network-considerations].
-
-You must also create a network security group to restrict traffic in the virtual network for the managed domain. An Azure standard load balancer is created during the migration process that requires these rules to be place. This network security group secures Azure AD DS and is required for the managed domain to work correctly.
-
-For more information on what rules are required, see [Azure AD DS network security groups and required ports](network-considerations.md#network-security-groups-and-required-ports).
-
-## Migration steps
-
-The migration to the Resource Manager deployment model and virtual network is split into four main steps:
-
-| Step | Performed through | Estimated time | Downtime |
-||--|--|--|
-| [Step 1 - Update and locate the new virtual network](#update-and-verify-virtual-network-settings) | Azure portal | 15 minutes | |
-| [Step 2 - Perform offline migration](#perform-offline-migration) | PowerShell | 1 ΓÇô 3 hours on average | One domain controller is available once this command is completed. |
-| [Step 3 - Test and wait for the replica domain controller](#test-and-verify-connectivity-after-the-migration)| PowerShell and Azure portal | 1 hour or more, depending on the number of tests | Both domain controllers are available and should function normally, downtime ends. |
-| [Step 4 - Optional configuration steps](#optional-post-migration-configuration-steps) | Azure portal and VMs | N/A | |
-
-> [!IMPORTANT]
-> To avoid additional downtime, read all of this migration article and guidance before you start the migration process. The migration process affects the availability of the Azure AD DS domain controllers for a period of time. Users, services, and applications can't authenticate against the managed domain during the migration process.
-
-## Update and verify virtual network settings
-
-Before you begin the migration process, complete the following initial checks and updates. These steps can happen at any time before the migration and don't affect the operation of the managed domain.
-
-1. Update your local Azure PowerShell environment to the latest version. To complete the migration steps, you need at least version *2.3.2*.
-
- For information about how to check and update your PowerShell version, see [Azure PowerShell overview][azure-powershell].
-
-1. Create, or choose an existing, Resource Manager virtual network.
-
- Make sure that network settings don't block ports required for Azure AD DS. Ports must be open on both the Classic virtual network and the Resource Manager virtual network. These settings include route tables (although it's not recommended to use route tables) and network security groups.
-
- Azure AD DS needs a network security group to secure the ports needed for the managed domain and block all other incoming traffic. This network security group acts as an extra layer of protection to lock down access to the managed domain.
-
- The following network security group Inbound rules are required for the managed domain to provide authentication and management services. Don't edit or delete these network security group rules for the virtual network subnet your managed domain is deployed into.
-
- | Source | Source service tag | Source port ranges | Destination | Service | Destination port ranges | Protocol | Action | Required | Purpose |
- |:--:|:-:|::|:-:|:-:|:--:|:--:|::|:--:|:--|
- | Service tag | AzureActiveDirectoryDomainServices | * | Any | WinRM | 5986 | TCP | Allow | Yes | Management of your domain |
- | Service tag | CorpNetSaw | * | Any | RDP | 3389 | TCP | Allow | Optional | Debugging for support |
-
- Make a note of the target resource group, target virtual network, and target virtual network subnet. These resource names are used during the migration process.
-
- > [!NOTE]
- > The **CorpNetSaw** service tag isn't available by using Azure portal, and the network security group rule for **CorpNetSaw** has to be added by using [PowerShell](powershell-create-instance.md#create-a-network-security-group).
-
-1. Check the managed domain health in the Azure portal. If you have any alerts for the managed domain, resolve them before you start the migration process.
-1. Optionally, if you plan to move other resources to the Resource Manager deployment model and virtual network, confirm that those resources can be migrated. For more information, see [Platform-supported migration of IaaS resources from Classic to Resource Manager][migrate-iaas].
-
- > [!NOTE]
- > Don't convert the Classic virtual network to a Resource Manager virtual network. If you do, there's no option to roll back or restore the managed domain.
-
-## Perform offline migration
-
-Azure PowerShell is used to perform offline migration of the managed domain:
-
-1. Install the `Migrate-Aaads` script from the [PowerShell Gallery][powershell-script]. This PowerShell migration script is a digitally signed by the Azure AD engineering team.
-
- ```powershell
- Install-Script -Name Migrate-Aadds
- ```
-
-2. Create a variable to hold the credentials for by the migration script using the [Get-Credential][get-credential] cmdlet.
-
- The user account you specify needs [Application Administrator](../active-directory/roles/permissions-reference.md#application-administrator) and [Groups Administrator](../active-directory/roles/permissions-reference.md#groups-administrator) Azure AD roles in your tenant to enable Azure AD DS and [Domain Services Contributor](../role-based-access-control/built-in-roles.md#contributor) Azure role to create the required Azure AD DS resources.
-
- When prompted, enter an appropriate user account and password:
-
- ```powershell
- $creds = Get-Credential
- ```
-
-3. Define a variable for your Azure subscription ID. If needed, you can use the [Get-AzSubscription](/powershell/module/az.accounts/get-azsubscription) cmdlet to list and view your subscription IDs. Provide your own subscription ID in the following command:
-
- ```powershell
- $subscriptionId = 'yourSubscriptionId'
- ```
-
-4. Now run the `Migrate-Aadds` cmdlet using the *-Offline* parameter. Provide the *-ManagedDomainFqdn* for your own managed domain, such as *aaddscontoso.com*. Specify the target resource group that contains the virtual network you want to migrate Azure AD DS to, such as *myResourceGroup*. Provide the target virtual network, such as *myVnet*, and the subnet, such as *DomainServices*. This step can take 1 to 3 hours to complete.
-
- ```powershell
- Migrate-Aadds `
- -Offline `
- -ManagedDomainFqdn aaddscontoso.com `
- -VirtualNetworkResourceGroupName myResourceGroup `
- -VirtualNetworkName myVnet `
- -VirtualSubnetName DomainServices `
- -Credentials $creds `
- -SubscriptionId $subscriptionId
- ```
-
-> [!IMPORTANT]
-> As part of the offline migration workflow, you cannot convert the Classic virtual network to a Resource Manager virtual network.
-
-Every two minutes during the migration process, a progress indicator reports the current status, as shown in the following example output:
-
-![Progress indicator of the migration of Azure AD DS](media/migrate-from-classic-vnet/powershell-migration-status.png)
-
-The migration process continues to run, even if you close out the PowerShell script. In the Azure portal, the status of the managed domain reports as *Migrating*.
-
-When the migration successfully completes, you can view your first domain controller's IP address in the Azure portal or through Azure PowerShell. A time estimate on the second domain controller being available is also shown.
-
-At this stage, you can optionally move other existing resources from the Classic deployment model and virtual network. Or, you can keep the resources on the Classic deployment model and peer the virtual networks to each other after the Azure AD DS migration is complete.
-
-## Test and verify connectivity after the migration
-
-It can take some time for the second domain controller to successfully deploy and be available for use in the managed domain. The second domain controller should be available 1-2 hours after the migration cmdlet finishes. With the Resource Manager deployment model, the network resources for the managed domain are shown in the Azure portal or Azure PowerShell. To check if the second domain controller is available, look at the **Properties** page for the managed domain in the Azure portal. If two IP addresses shown, the second domain controller is ready.
-
-After the second domain controller is available, complete the following configuration steps for network connectivity with VMs:
-
-* **Update DNS server settings** To let other resources on the Resource Manager virtual network resolve and use the managed domain, update the DNS settings with the IP addresses of the new domain controllers. The Azure portal can automatically configure these settings for you.
-
- To learn more about how to configure the Resource Manager virtual network, see [Update DNS settings for the Azure virtual network][update-dns].
-* **Restart domain-joined VMs (optional)** As the DNS server IP addresses for the Azure AD DS domain controllers change, you can restart any domain-joined VMs so they then use the new DNS server settings. If applications or VMs have manually configured DNS settings, manually update them with the new DNS server IP addresses of the domain controllers that are shown in the Azure portal. Rebooting domain-joined VMs prevents connectivity issues caused by IP addresses that donΓÇÖt refresh.
-
-Now test the virtual network connection and name resolution. On a VM that's connected to the Resource Manager virtual network, or peered to it, try the following network communication tests:
-
-1. Check if you can ping the IP address of one of the domain controllers, such as `ping 10.1.0.4`
- * The IP addresses of the domain controllers are shown on the **Properties** page for the managed domain in the Azure portal.
-1. Verify name resolution of the managed domain, such as `nslookup aaddscontoso.com`
- * Specify the DNS name for your own managed domain to verify that the DNS settings are correct and resolves.
-
-To learn more about other network resources, see [Network resources used by Azure AD DS][network-resources].
-
-## Optional post-migration configuration steps
-
-When the migration process is successfully complete, some optional configuration steps include enabling audit logs or e-mail notifications, or updating the fine-grained password policy.
-
-### Subscribe to audit logs using Azure Monitor
-
-Azure AD DS exposes audit logs to help troubleshoot and view events on the domain controllers. For more information, see [Enable and use audit logs][security-audits].
-
-You can use templates to monitor important information exposed in the logs. For example, the audit log workbook template can monitor possible account lockouts on the managed domain.
-
-### Configure email notifications
-
-To be notified when a problem is detected on the managed domain, update the email notification settings in the Azure portal. For more information, see [Configure notification settings][notifications].
-
-### Update fine-grained password policy
-
-If needed, you can update the fine-grained password policy to be less restrictive than the default configuration. You can use the audit logs to determine if a less restrictive setting makes sense, then configure the policy as needed. Use the following high-level steps to review and update the policy settings for accounts that are repeatedly locked out after migration:
-
-1. [Configure password policy][password-policy] for fewer restrictions on the managed domain and observe the events in the audit logs.
-1. If any service accounts are using expired passwords as identified in the audit logs, update those accounts with the correct password.
-1. If a VM is exposed to the internet, review for generic account names like *administrator*, *user*, or *guest* with high sign-in attempts. Where possible, update those VMs to use less generically named accounts.
-1. Use a network trace on the VM to locate the source of the attacks and block those IP addresses from being able to attempt sign-ins.
-1. When there are minimal lockout issues, update the fine-grained password policy to be as restrictive as necessary.
-
-## Troubleshooting
-
-If you have problems after migration to the Resource Manager deployment model, review some of the following common troubleshooting areas:
-
-* [Troubleshoot domain-join problems][troubleshoot-domain-join]
-* [Troubleshoot account lockout problems][troubleshoot-account-lockout]
-* [Troubleshoot account sign-in problems][troubleshoot-sign-in]
-* [Troubleshoot secure LDAP connectivity problems][tshoot-ldaps]
-
-## Next steps
-
-With your managed domain migrated to the Resource Manager deployment model, [create and domain-join a Windows VM][join-windows] and then [install management tools][tutorial-create-management-vm].
-
-<!-- INTERNAL LINKS -->
-[azure-bastion]: ../bastion/bastion-overview.md
-[network-considerations]: network-considerations.md
-[azure-powershell]: /powershell/azure/
-[network-ports]: network-considerations.md#network-security-groups-and-required-ports
-[Connect-AzAccount]: /powershell/module/az.accounts/connect-azaccount
-[Set-AzContext]: /powershell/module/az.accounts/set-azcontext
-[Get-AzResource]: /powershell/module/az.resources/get-azresource
-[Set-AzResource]: /powershell/module/az.resources/set-azresource
-[network-resources]: network-considerations.md#network-resources-used-by-azure-ad-ds
-[update-dns]: tutorial-create-instance.md#update-dns-settings-for-the-azure-virtual-network
-[azure-support]: ../active-directory/fundamentals/active-directory-troubleshooting-support-howto.md
-[security-audits]: security-audit-events.md
-[notifications]: notifications.md
-[password-policy]: password-policy.md
-[secure-ldap]: tutorial-configure-ldaps.md
-[migrate-iaas]: ../virtual-machines/migration-classic-resource-manager-overview.md
-[join-windows]: join-windows-vm.md
-[tutorial-create-management-vm]: tutorial-create-management-vm.md
-[troubleshoot-domain-join]: troubleshoot-domain-join.md
-[troubleshoot-account-lockout]: troubleshoot-account-lockout.md
-[troubleshoot-sign-in]: troubleshoot-sign-in.md
-[tshoot-ldaps]: tshoot-ldaps.md
-[get-credential]: /powershell/module/microsoft.powershell.security/get-credential
-[migration-benefits]: concepts-migration-benefits.md
-
-<!-- EXTERNAL LINKS -->
-[powershell-script]: https://www.powershellgallery.com/packages/Migrate-Aadds/
active-directory-domain-services Password Policy https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory-domain-services/password-policy.md
Previously updated : 03/06/2023 Last updated : 05/09/2023
To manage user security in Azure Active Directory Domain Services (Azure AD DS),
This article shows you how to create and configure a fine-grained password policy in Azure AD DS using the Active Directory Administrative Center. > [!NOTE]
-> Password policies are only available for managed domains created using the Resource Manager deployment model. For older managed domains created using Classic, [migrate from the Classic virtual network model to Resource Manager][migrate-from-classic].
+> Password policies are only available for managed domains created using the Resource Manager deployment model.
## Before you begin
To complete this article, you need the following resources and privileges:
* If needed, [create an Azure Active Directory tenant][create-azure-ad-tenant] or [associate an Azure subscription with your account][associate-azure-ad-tenant]. * An Azure Active Directory Domain Services managed domain enabled and configured in your Azure AD tenant. * If needed, complete the tutorial to [create and configure an Azure Active Directory Domain Services managed domain][create-azure-ad-ds-instance].
- * The managed domain must have been created using the Resource Manager deployment model. If needed, [Migrate from the Classic virtual network model to Resource Manager][migrate-from-classic].
+ * The managed domain must have been created using the Resource Manager deployment model.
* A Windows Server management VM that is joined to the managed domain. * If needed, complete the tutorial to [create a management VM][tutorial-create-management-vm]. * A user account that's a member of the *Azure AD DC administrators* group in your Azure AD tenant.
For more information about password policies and using the Active Directory Admi
[create-azure-ad-tenant]: ../active-directory/fundamentals/sign-up-organization.md [associate-azure-ad-tenant]: ../active-directory/fundamentals/active-directory-how-subscriptions-associated-directory.md [create-azure-ad-ds-instance]: tutorial-create-instance.md
-[tutorial-create-management-vm]: tutorial-create-management-vm.md
-[migrate-from-classic]: migrate-from-classic-vnet.md
+[tutorial-create-management-vm]: tutorial-create-management-vm.md
active-directory-domain-services Security Audit Events https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory-domain-services/security-audit-events.md
Previously updated : 04/17/2023 Last updated : 05/09/2023
The following audit event categories are available:
|:|:| | Account Logon|Audits attempts to authenticate account data on a domain controller or on a local Security Accounts Manager (SAM).<br>-Logon and Logoff policy settings and events track attempts to access a particular computer. Settings and events in this category focus on the account database that is used. This category includes the following subcategories:<br>-[Audit Credential Validation](/windows/security/threat-protection/auditing/audit-credential-validation)<br>-[Audit Kerberos Authentication Service](/windows/security/threat-protection/auditing/audit-kerberos-authentication-service)<br>-[Audit Kerberos Service Ticket Operations](/windows/security/threat-protection/auditing/audit-kerberos-service-ticket-operations)<br>-[Audit Other Logon/Logoff Events](/windows/security/threat-protection/auditing/audit-other-logonlogoff-events)| | Account Management|Audits changes to user and computer accounts and groups. This category includes the following subcategories:<br>-[Audit Application Group Management](/windows/security/threat-protection/auditing/audit-application-group-management)<br>-[Audit Computer Account Management](/windows/security/threat-protection/auditing/audit-computer-account-management)<br>-[Audit Distribution Group Management](/windows/security/threat-protection/auditing/audit-distribution-group-management)<br>-[Audit Other Account Management](/windows/security/threat-protection/auditing/audit-other-account-management-events)<br>-[Audit Security Group Management](/windows/security/threat-protection/auditing/audit-security-group-management)<br>-[Audit User Account Management](/windows/security/threat-protection/auditing/audit-user-account-management)|
-| DNS Server|Audits changes to DNS environments. This category includes the following subcategories: <br>- [DNSServerAuditsDynamicUpdates (preview)](https://learn.microsoft.com/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/dn800669(v=ws.11)#audit-and-analytic-event-logging)<br>- [DNSServerAuditsGeneral (preview)](https://learn.microsoft.com/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/dn800669(v=ws.11)#audit-and-analytic-event-logging)|
+| DNS Server|Audits changes to DNS environments. This category includes the following subcategories: <br>- [DNSServerAuditsDynamicUpdates (preview)](/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/dn800669(v=ws.11)#audit-and-analytic-event-logging)<br>- [DNSServerAuditsGeneral (preview)](/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/dn800669(v=ws.11)#audit-and-analytic-event-logging)|
| Detail Tracking|Audits activities of individual applications and users on that computer, and to understand how a computer is being used. This category includes the following subcategories:<br>-[Audit DPAPI Activity](/windows/security/threat-protection/auditing/audit-dpapi-activity)<br>-[Audit PNP activity](/windows/security/threat-protection/auditing/audit-pnp-activity)<br>-[Audit Process Creation](/windows/security/threat-protection/auditing/audit-process-creation)<br>-[Audit Process Termination](/windows/security/threat-protection/auditing/audit-process-termination)<br>-[Audit RPC Events](/windows/security/threat-protection/auditing/audit-rpc-events)| | Directory Services Access|Audits attempts to access and modify objects in Active Directory Domain Services (AD DS). These audit events are logged only on domain controllers. This category includes the following subcategories:<br>-[Audit Detailed Directory Service Replication](/windows/security/threat-protection/auditing/audit-detailed-directory-service-replication)<br>-[Audit Directory Service Access](/windows/security/threat-protection/auditing/audit-directory-service-access)<br>-[Audit Directory Service Changes](/windows/security/threat-protection/auditing/audit-directory-service-changes)<br>-[Audit Directory Service Replication](/windows/security/threat-protection/auditing/audit-directory-service-replication)| | Logon-Logoff|Audits attempts to log on to a computer interactively or over a network. These events are useful for tracking user activity and identifying potential attacks on network resources. This category includes the following subcategories:<br>-[Audit Account Lockout](/windows/security/threat-protection/auditing/audit-account-lockout)<br>-[Audit User/Device Claims](/windows/security/threat-protection/auditing/audit-user-device-claims)<br>-[Audit IPsec Extended Mode](/windows/security/threat-protection/auditing/audit-ipsec-extended-mode)<br>-[Audit Group Membership](/windows/security/threat-protection/auditing/audit-group-membership)<br>-[Audit IPsec Main Mode](/windows/security/threat-protection/auditing/audit-ipsec-main-mode)<br>-[Audit IPsec Quick Mode](/windows/security/threat-protection/auditing/audit-ipsec-quick-mode)<br>-[Audit Logoff](/windows/security/threat-protection/auditing/audit-logoff)<br>-[Audit Logon](/windows/security/threat-protection/auditing/audit-logon)<br>-[Audit Network Policy Server](/windows/security/threat-protection/auditing/audit-network-policy-server)<br>-[Audit Other Logon/Logoff Events](/windows/security/threat-protection/auditing/audit-other-logonlogoff-events)<br>-[Audit Special Logon](/windows/security/threat-protection/auditing/audit-special-logon)|
For specific information on Kusto, see the following articles:
* [Kusto tutorial](/azure/kusto/query/tutorial) to familiarize you with query basics. * [Sample queries](/azure/kusto/query/samples) that help you learn new ways to see your data. * Kusto [best practices](/azure/kusto/query/best-practices) to optimize your queries for success.-
-<!-- LINKS - Internal -->
-[migrate-azure-adds]: migrate-from-classic-vnet.md
active-directory Customize Application Attributes https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/app-provisioning/customize-application-attributes.md
The request formats in the PATCH and POST differ. To ensure that POST and PATCH
- **Things to consider** - All roles are provisioned as primary = false. - The POST contains the role type. The PATCH request doesn't contain type. We're working on sending the type in both POST and PATCH requests.
- - AppRoleAssignmentsComplex isn't compatible with setting scope to "Sync All users and groups."
+ - AppRoleAssignmentsComplex isn't compatible with setting scope to "Sync All users and groups."
+ - The AppRoleAssignmentsComplex only supports the PATCH add function. For multi-role SCIM applications, roles deleted in Azure Active Directory will therefore not be deleted from the application. We're working to support additional PATCH functions and address the limitation.
- **Example output**
active-directory Concept Authentication Default Enablement https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/authentication/concept-authentication-default-enablement.md
# Protecting authentication methods in Azure Active Directory
+>[!NOTE]
+>The Microsoft managed value for Authenticator Lite will move from disabled to enabled on June 9th, 2023. All tenants left in the default state 'Microsoft managed' will be enabled for the feature on June 9th.
+ Azure Active Directory (Azure AD) adds and improves security features to better protect customers against increasing attacks. As new attack vectors become known, Azure AD may respond by enabling protection by default to help customers stay ahead of emerging security threats. For example, in response to increasing MFA fatigue attacks, Microsoft recommended ways for customers to [defend users](https://techcommunity.microsoft.com/t5/microsoft-entra-azure-ad-blog/defend-your-users-from-mfa-fatigue-attacks/ba-p/2365677). One recommendation to prevent users from accidental multifactor authentication (MFA) approvals is to enable [number matching](how-to-mfa-number-match.md). As a result, default behavior for number matching will be explicitly **Enabled** for all Microsoft Authenticator users. You can learn more about new security features like number matching in our blog post [Advanced Microsoft Authenticator security features are now generally available!](https://techcommunity.microsoft.com/t5/microsoft-entra-azure-ad-blog/advanced-microsoft-authenticator-security-features-are-now/ba-p/2365673).
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 : 04/10/2023 Last updated : 05/19/2023
Only the [converged registration experience](concept-registration-mfa-sspr-combi
Two other policies, located in **Multifactor authentication** settings and **Password reset** settings, provide a legacy way to manage some authentication methods for all users in the tenant. You can't control who uses an enabled authentication method, or how the method can be used. A [Global Administrator](../roles/permissions-reference.md#global-administrator) is needed to manage these policies.
->[!NOTE]
->Hardware OATH tokens and security questions can only be enabled today by using these legacy policies. In the future, these methods will be available in the Authentication methods policy.
+>[!Important]
+>In March 2023, we announced the deprecation of managing authentication methods in the legacy multifactor authentication (MFA) and self-service password reset (SSPR) policies. Beginning September 30, 2024, authentication methods can't be managed in these legacy MFA and SSPR policies. We recommend customers use the manual migration control to migrate to the Authentication methods policy by the deprecation date.
To manage the legacy MFA policy, click **Security** > **Multifactor Authentication** > **Additional cloud-based multifactor authentication settings**.
Similarly, let's suppose you enable **Voice calls** for a group. After you enabl
The Authentication methods policy provides a migration path toward unified administration of all authentication methods. All desired methods can be enabled in the Authentication methods policy. Methods in the legacy MFA and SSPR policies can be disabled. Migration has three settings to let you move at your own pace, and avoid problems with sign-in or SSPR during the transition. After migration is complete, you'll centralize control over authentication methods for both sign-in and SSPR in a single place, and the legacy MFA and SSPR policies will be disabled. >[!Note]
->Controls in the Authentication methods policy for Hardware OATH tokens and security questions are coming soon, but not yet available. If you are using hardware OATH tokens, which are currently in public preview, you should hold off on migrating OATH tokens and do not complete the migration process. If you are using security questions, and don't want to disable them, make sure to keep them enabled in the legacy SSPR policy until the new control is available in the future.
+>Hardware OATH tokens and security questions can only be enabled today by using these legacy policies. In the future, these methods will be available in the Authentication methods policy. If you use hardware OATH tokens, which are currently in preview, you should hold off on migrating OATH tokens and don't complete the migration process. If you're using security questions, and don't want to disable them, make sure to keep them enabled in the legacy SSPR policy until the new control is available in the future.
To view the migration options, open the Authentication methods policy and click **Manage migration**.
active-directory Concept Authentication Methods https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/authentication/concept-authentication-methods.md
The following table outlines when an authentication method can be used during a
| Method | Primary authentication | Secondary authentication | |--|:-:|:-:| | Windows Hello for Business | Yes | MFA\* |
-| Microsoft Authenticator | Yes | MFA and SSPR |
+| Microsoft Authenticator (Push) | No | MFA and SSPR |
+| Microsoft Authenticator (Passwordless) | Yes | No |
| Authenticator Lite | No | MFA | | FIDO2 security key | Yes | MFA | | Certificate-based authentication | Yes | No |
active-directory Concept Authentication Oath Tokens https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/authentication/concept-authentication-oath-tokens.md
Programmable OATH TOTP hardware tokens that can be reseeded can also be set up w
OATH hardware tokens are supported as part of a public preview. For more information about previews, see [Supplemental Terms of Use for Microsoft Azure Previews](https://azure.microsoft.com/support/legal/preview-supplemental-terms/).
-![Uploading OATH tokens to the MFA OATH tokens blade](media/concept-authentication-methods/mfa-server-oath-tokens-azure-ad.png)
Once tokens are acquired they must be uploaded in a comma-separated values (CSV) file format including the UPN, serial number, secret key, time interval, manufacturer, and model, as shown in the following example:
Helga@contoso.com,1234567,2234567abcdef2234567abcdef,60,Contoso,HardwareKey
> [!NOTE] > Make sure you include the header row in your CSV file.
-Once properly formatted as a CSV file, a global administrator can then sign in to the Azure portal, navigate to **Azure Active Directory** > **Security** > **Multifactor authentication** > **OATH tokens**, and upload the resulting CSV file.
+Once properly formatted as a CSV file, a Global Administrator can then sign in to the Azure portal, navigate to **Azure Active Directory** > **Security** > **Multifactor authentication** > **OATH tokens**, and upload the resulting CSV file.
Depending on the size of the CSV file, it may take a few minutes to process. Select the **Refresh** button to get the current status. If there are any errors in the file, you can download a CSV file that lists any errors for you to resolve. The field names in the downloaded CSV file are different than the uploaded version.
active-directory Concept Mfa Licensing https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/authentication/concept-mfa-licensing.md
The following table details the different ways to get Azure AD Multi-Factor Auth
## Feature comparison based on licenses
-The following table provides a list of the features that are available in the various versions of Azure AD Multi-Factor Authentication. Plan out your needs for securing user authentication, then determine which approach meets those requirements. For example, although Azure AD Free provides security defaults that provide Azure AD Multi-Factor Authentication, only the mobile authenticator app can be used for the authentication prompt, not a phone call or SMS. This approach may be a limitation if you can't ensure the mobile authentication app is installed on a user's personal device. See [Azure AD Free tier](#azure-ad-free-tier) later in this topic for more details.
+The following table provides a list of the features that are available in the various versions of Azure AD for Multi-Factor Authentication. Plan out your needs for securing user authentication, then determine which approach meets those requirements. For example, although Azure AD Free provides security defaults that provide Azure AD Multi-Factor Authentication, only the mobile authenticator app can be used for the authentication prompt, not a phone call or SMS. This approach may be a limitation if you can't ensure the mobile authentication app is installed on a user's personal device. See [Azure AD Free tier](#azure-ad-free-tier) later in this topic for more details.
| Feature | Azure AD Free - Security defaults (enabled for all users) | Azure AD Free - Global Administrators only | Office 365 | Azure AD Premium P1 | Azure AD Premium P2 | | |::|::|::|::|::| | Protect Azure AD tenant admin accounts with MFA | ΓùÅ | ΓùÅ (*Azure AD Global Administrator* accounts only) | ΓùÅ | ΓùÅ | ΓùÅ | | Mobile app as a second factor | ΓùÅ | ΓùÅ | ΓùÅ | ΓùÅ | ΓùÅ |
-| Phone call as a second factor | | ΓùÅ | ΓùÅ | ΓùÅ | ΓùÅ |
+| Phone call as a second factor | | | ΓùÅ | ΓùÅ | ΓùÅ |
| SMS as a second factor | | ΓùÅ | ΓùÅ | ΓùÅ | ΓùÅ | | Admin control over verification methods | | ΓùÅ | ΓùÅ | ΓùÅ | ΓùÅ | | Fraud alert | | | | ΓùÅ | ΓùÅ |
The following table provides a list of the features that are available in the va
| MFA for on-premises applications | | | | ΓùÅ | ΓùÅ | | Conditional access | | | | ΓùÅ | ΓùÅ | | Risk-based conditional access | | | | | ΓùÅ |
-| Identity Protection (Risky sign-ins, risky users) | | | | | ΓùÅ |
-| Access Reviews | | | | | ΓùÅ |
-| Entitlements Management | | | | | ΓùÅ |
-| Privileged Identity Management (PIM), just-in-time access | | | | | ΓùÅ |
-| Lifecycle Workflows (preview) | | | | | ΓùÅ |
## Compare multi-factor authentication policies
active-directory How To Mfa Authenticator Lite https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/authentication/how-to-mfa-authenticator-lite.md
Title: How to enable Microsoft Authenticator Lite for Outlook mobile (preview)
+ Title: How to enable Microsoft Authenticator Lite for Outlook mobile
description: Learn about how to you can set up Microsoft Authenticator Lite for Outlook mobile to help users validate their identity
# Customer intent: As an identity administrator, I want to encourage users to understand how default protection can improve our security posture.
-# How to enable Microsoft Authenticator Lite for Outlook mobile (preview)
+# How to enable Microsoft Authenticator Lite for Outlook mobile
Microsoft Authenticator Lite is another surface for Azure Active Directory (Azure AD) users to complete multifactor authentication by using push notifications or time-based one-time passcodes (TOTP) on their Android or iOS device. With Authenticator Lite, users can satisfy a multifactor authentication requirement from the convenience of a familiar app. Authenticator Lite is currently enabled in [Outlook mobile](https://www.microsoft.com/microsoft-365/outlook-mobile-for-android-and-ios).
Microsoft Authenticator Lite is another surface for Azure Active Directory (Azur
Users receive a notification in Outlook mobile to approve or deny sign-in, or they can copy a TOTP to use during sign-in. >[!NOTE]
->This is an important security enhancement for users authenticating via telecom transports. The 'Microsoft managed' setting for this feature will be set to enabled on May 26th, 2023. This will enable the feature for all users in tenants where the feature is set to Microsoft managed. If you wish to change the state of this feature, please do so before May 26th, 2023.
+>This is an important security enhancement for users authenticating via telecom transports. This feature is currently in the state ΓÇÿMicrosoft managedΓÇÖ. Until June 9th, leaving the feature set to ΓÇÿMicrosoft managedΓÇÖ will have no impact on your users and the feature will remain turned off unless you explicitly change the state to enabled. The Microsoft managed value of this feature will be changed from ΓÇÿdisabledΓÇÖ to ΓÇÿenabledΓÇÖ on June 9th. We have made some changes to the feature configuration, so if you made an update before GA (5/17), please validate that the feature is in the correct state for your tenant prior to June 9th. If you do not wish for this feature to be enabled on June 9th, move the state to ΓÇÿdisabledΓÇÖ or set users to include and exclude groups.
## Prerequisites
Users receive a notification in Outlook mobile to approve or deny sign-in, or th
## Enable Authenticator Lite
-By default, Authenticator Lite is [Microsoft managed](concept-authentication-default-enablement.md#microsoft-managed-settings) and disabled during preview. After general availability, the Microsoft managed state default value will change to enable Authenticator Lite.
+By default, Authenticator Lite is [Microsoft managed](concept-authentication-default-enablement.md#microsoft-managed-settings). Until June 9th, leaving the feature set to ΓÇÿMicrosoft managedΓÇÖ will have no impact on your users and the feature will remain turned off unless you explicitly change the state to enabled. The Microsoft managed value of this feature will be changed from ΓÇÿdisabledΓÇÖ to ΓÇÿenabledΓÇÖ on June 9th. We have made some changes to the feature configuration, so if you made an update before GA (5/17), please validate that the feature is in the correct state for your tenant prior to June 9th. If you do not wish for this feature to be enabled on June 9th, move the state to ΓÇÿdisabledΓÇÖ or set users to include and exclude groups.
### Enablement Authenticator Lite in Azure portal UX
Users can only register for Authenticator Lite from mobile Outlook. Authenticato
Users that have Microsoft Authenticator on their device can't register Authenticator Lite on that same device. If a user has an Authenticator Lite registration and then later downloads Microsoft Authenticator, they can register both. If a user has two devices, they can register Authenticator Lite on one and Microsoft Authenticator on the other.
-## Known Issues (Public preview)
+## Known Issues
### SSPR Notifications TOTP codes from Outlook will work for SSPR, but the push notification will not work and will return an error.
-### Conditional Access Registration Policies
-CA policies for registration do not currently apply in Outlook registration flows.
+### Authentication Strengths
+If you have a configured authentication strength for MFA push, Authenticator Lite will not be allowed. This is a known issue that we are working to resolve.
## Next steps
active-directory How To Migrate Mfa Server To Azure Mfa With Federation https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/authentication/how-to-migrate-mfa-server-to-azure-mfa-with-federation.md
description: Step-by-step guidance to move from MFA Server on-premises to Azure
Previously updated : 01/29/2023 Last updated : 05/23/2023
Moving your multi-factor-authentication (MFA) solution to Azure Active Directory
To migrate to Azure AD MFA with federation, the Azure AD MFA authentication provider is installed on AD FS. The Azure AD relying party trust and other relying party trusts are configured to use Azure AD MFA for migrated users.
-The following diagram shows the process of this migration.
+The following diagram shows the migration process.
-![Flow chart showing the steps of the process. These align to the headings in this document in the same order](./media/how-to-migrate-mfa-server-to-azure-mfa-with-federation/mfa-federation-flow.png)
+ ![Flow chart of the migration process. Process areas and headings in this document are in the same order](./media/how-to-migrate-mfa-server-to-azure-mfa-with-federation/mfa-federation-flow.png)
## Create migration groups
-To create new conditional access policies, you'll need to assign those policies to groups. You can use existing Azure AD security groups or Microsoft 365 Groups for this purpose. You can also create or sync new ones.
+To create new Conditional Access policies, you'll need to assign those policies to groups. You can use Azure AD security groups or Microsoft 365 Groups for this purpose. You can also create or sync new ones.
You'll also need an Azure AD security group for iteratively migrating users to Azure AD MFA. These groups are used in your claims rules.
In AD FS 2019, you can specify additional authentication methods for a relying p
Now that Azure AD MFA is an additional authentication method, you can assign groups of users to use it. You do so by configuring claims rules, also known as relying party trusts. By using groups, you can control which authentication provider is called globally or by application. For example, you can call Azure AD MFA for users who have registered for combined security information, while calling MFA Server for those who haven't.
-> [!NOTE]
-> Claims rules require on-premises security group. Before making changes to claims rules, back them up.
+ > [!NOTE]
+ > Claims rules require on-premises security group. Before making changes to claims rules, back them up.
-#### Back up existing rules
+#### Back up rules
-Before configuring new claims rules, back up your existing rules. You'll need to restore these rules as a part of your cleanup steps.
+Before configuring new claims rules, back up your rules. You'll need to restore these rules as a part of your clean-up steps.
-Depending on your configuration, you may also need to copy the existing rule and append the new rules being created for the migration.
+Depending on your configuration, you may also need to copy the rule and append the new rules being created for the migration.
-To view existing global rules, run:
+To view global rules, run:
```powershell Get-AdfsAdditionalAuthenticationRule ```
-To view existing relying party trusts, run the following command and replace RPTrustName with the name of the relying party trust claims rule:
+To view relying party trusts, run the following command and replace RPTrustName with the name of the relying party trust claims rule:
```powershell (Get-AdfsRelyingPartyTrust -Name "RPTrustName").AdditionalAuthenticationRules
To find the group SID, use the following command, with your group name
`Get-ADGroup "GroupName"`
-![Image of screen shot showing the results of the Get-ADGroup script.](./media/how-to-migrate-mfa-server-to-mfa-user-authentication/find-the-sid.png)
+ ![Image of screen shot showing the results of the Get-ADGroup script.](./media/how-to-migrate-mfa-server-to-mfa-user-authentication/find-the-sid.png)
#### Setting the claims rules to call Azure AD MFA
The following PowerShell cmdlets invoke Azure AD MFA for users in the group when
Make sure you review the [How to Choose Additional Auth Providers in 2019](/windows-server/identity/ad-fs/overview/whats-new-active-directory-federation-services-windows-server).
- > [!IMPORTANT]
-> Backup your existing claims rules
+ > [!IMPORTANT]
+ > Back up your claims rules
This section covers final steps before migrating user MFA settings.
For federated domains, MFA may be enforced by Azure AD Conditional Access or by the on-premises federation provider. Each federated domain has a Microsoft Graph PowerShell security setting named **federatedIdpMfaBehavior**. You can set **federatedIdpMfaBehavior** to `enforceMfaByFederatedIdp` so Azure AD accepts MFA that's performed by the federated identity provider. If the federated identity provider didn't perform MFA, Azure AD redirects the request to the federated identity provider to perform MFA. For more information, see [federatedIdpMfaBehavior](/graph/api/resources/internaldomainfederation?view=graph-rest-beta#federatedidpmfabehavior-values&preserve-view=true ).
->[!NOTE]
-> The **federatedIdpMfaBehavior** setting is an evolved version of the **SupportsMfa** property of the [Set-MsolDomainFederationSettings MSOnline v1 PowerShell cmdlet](/powershell/module/msonline/set-msoldomainfederationsettings).
+ >[!NOTE]
+ > The **federatedIdpMfaBehavior** setting is a new version of the **SupportsMfa** property of the [New-MgDomainFederationConfiguration](/powershell/module/microsoft.graph.identity.directorymanagement/new-mgdomainfederationconfiguration) cmdlet.
-For domains that have already set the **SupportsMfa** property, these rules determine how **federatedIdpMfaBehavior** and **SupportsMfa** work together:
+For domains that set the **SupportsMfa** property, these rules determine how **federatedIdpMfaBehavior** and **SupportsMfa** work together:
- Switching between **federatedIdpMfaBehavior** and **SupportsMfa** isn't supported. - Once **federatedIdpMfaBehavior** property is set, Azure AD ignores the **SupportsMfa** setting.
You can check the status of **federatedIdpMfaBehavior** by using [Get-MgDomainFe
Get-MgDomainFederationConfiguration ΓÇôDomainID yourdomain.com ```
-You can also check the status of your **SupportsMfa** flag with [Get-MsolDomainFederationSettings](/powershell/module/msonline/get-msoldomainfederationsettings):
+You can also check the status of your **SupportsMfa** flag with [Get-MgDomainFederationConfiguration](/powershell/module/microsoft.graph.identity.directorymanagement/get-mgdomainfederationconfiguration):
```powershell
-Get-MsolDomainFederationSettings ΓÇôDomainName yourdomain.com
+Get-MgDomainFederationConfiguration ΓÇôDomainName yourdomain.com
``` The following example shows how to set **federatedIdpMfaBehavior** to `enforceMfaByFederatedIdp` by using Graph PowerShell.
These include templates for email, posters, table tents, and various other asset
We recommend that you [secure the security registration process with Conditional Access](../conditional-access/howto-conditional-access-policy-registration.md) that requires the registration to occur from a trusted device or location. For information on tracking registration statuses, see [Authentication method activity for Azure Active Directory](howto-authentication-methods-activity.md).
-> [!NOTE]
-> Users who MUST register their combined security information from a non-trusted location or device can be issued a Temporary Access Pass or alternatively, temporarily excluded from the policy.
+ > [!NOTE]
+ > Users who must register their combined security information from a non-trusted location or device can be issued a Temporary Access Pass or alternatively, temporarily excluded from the policy.
### Migrate MFA settings from MFA Server
In Usage & insights, select **Authentication methods**.
Detailed Azure AD MFA registration information can be found on the Registration tab. You can drill down to view a list of registered users by selecting the **Users capable of Azure multi-factor authentication** hyperlink.
-![Image of Authentication methods activity screen showing user registrations to MFA](./media/how-to-migrate-mfa-server-to-azure-mfa-with-federation/authentication-methods.png)
+ ![Image of Authentication methods activity screen showing user registrations to MFA](./media/how-to-migrate-mfa-server-to-azure-mfa-with-federation/authentication-methods.png)
## Cleanup steps
active-directory How To Migrate Mfa Server To Mfa User Authentication https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/authentication/how-to-migrate-mfa-server-to-mfa-user-authentication.md
Title: Migrate to Azure AD MFA and Azure AD user authentication
-description: Step-by-step guidance to move from MFA Server on-premises to Azure AD MFA and Azure AD user authentication
-
+description: Guidance to move from MFA Server on-premises to Azure AD MFA and Azure AD user authentication
Previously updated : 01/29/2023- Last updated : 05/23/2023 - # Migrate to Azure AD MFA and Azure AD user authentication
-Multi-factor authentication (MFA) helps secure your infrastructure and assets from bad actors.
-Microsoft's Multi-Factor Authentication Server (MFA Server) is no longer offered for new deployments.
-Customers who are using MFA Server should move to Azure AD Multi-Factor Authentication (Azure AD MFA).
+Multi-factor authentication (MFA) helps secure your infrastructure and assets from bad actors. Microsoft Multi-Factor Authentication Server (MFA Server) is no longer offered for new deployments. Customers who are using MFA Server should move to Azure AD Multi-Factor Authentication (Azure AD MFA).
There are several options for migrating from MFA Server to Azure Active Directory (Azure AD):
Groups are used in three capacities for MFA migration.
### Configure Conditional Access policies If you're already using Conditional Access to determine when users are prompted for MFA, you won't need any changes to your policies.
-As users are migrated to cloud authentication, they'll start using Azure AD MFA as defined by your existing Conditional Access policies.
+As users are migrated to cloud authentication, they'll start using Azure AD MFA as defined by your Conditional Access policies.
They won't be redirected to AD FS and MFA Server anymore. If your federated domains have the **federatedIdpMfaBehavior** set to `enforceMfaByFederatedIdp` or **SupportsMfa** flag set to `$True` (the **federatedIdpMfaBehavior** overrides **SupportsMfa** when both are set), you're likely enforcing MFA on AD FS by using claims rules.
Now that Azure AD MFA is an additional authentication method, you can assign gro
>[!NOTE] >Claims rules require on-premises security group.
-#### Back up existing rules
+#### Back up rules
-Before configuring new claims rules, back up your existing rules.
-You'll need to restore claims rules as a part of your cleanup steps.
+Before configuring new claims rules, back up your rules.
+You'll need to restore claims rules as a part of your clean-up steps.
Depending on your configuration, you may also need to copy the existing rule and append the new rules being created for the migration.
-To view existing global rules, run:
+To view global rules, run:
```powershell Get-AdfsAdditionalAuthenticationRule ```
-To view existing relying party trusts, run the following command and replace RPTrustName with the name of the relying party trust claims rule:
+To view relying party trusts, run the following command and replace RPTrustName with the name of the relying party trust claims rule:
```powershell (Get-AdfsRelyingPartyTrust -Name "RPTrustName").AdditionalAuthenticationRules
To find the group SID, run the following command and replace `GroupName` with yo
Get-ADGroup GroupName ```
-![PowerShell command to get the group SID.](media/how-to-migrate-mfa-server-to-mfa-user-authentication/find-the-sid.png)
+![Microsoft Graph PowerShell command to get the group SID.](media/how-to-migrate-mfa-server-to-mfa-user-authentication/find-the-sid.png)
#### Setting the claims rules to call Azure AD MFA
-The following PowerShell cmdlets invoke Azure AD MFA for users in the group when they aren't on the corporate network.
-You must replace `"YourGroupSid"` with the SID found by running the preceding cmdlet.
+The following Microsoft Graph PowerShell cmdlets invoke Azure AD MFA for users in the group when they aren't on the corporate network.
+Replace `"YourGroupSid"` with the SID found by running the preceding cmdlet.
Make sure you review the [How to Choose Additional Auth Providers in 2019](/windows-server/identity/ad-fs/overview/whats-new-active-directory-federation-services-windows-server#how-to-choose-additional-auth-providers-in-2019). >[!IMPORTANT]
->Backup your existing claims rules before proceeding.
+>Back up your claims rules before proceeding.
##### Set global claims rule
Value=="YourGroupSid"]) => issue(Type =
### Configure Azure AD MFA as an authentication provider in AD FS
-In order to configure Azure AD MFA for AD FS, you must configure each AD FS server.
-If multiple AD FS servers are in your farm, you can configure them remotely using Azure AD PowerShell.
+In order to configure Azure AD MFA for AD FS, you must configure each AD FS server. If multiple AD FS servers are in your farm, you can configure them remotely using Microsoft Graph PowerShell.
For step-by-step directions on this process, see [Configure the AD FS servers](/windows-server/identity/ad-fs/operations/configure-ad-fs-and-azure-mfa#configure-the-ad-fs-servers).
Possible considerations when decommissions the MFA Server include:
## Move application authentication to Azure Active Directory
-If you migrate all your application authentication along with your MFA and user authentication, you'll be able to remove significant portions of your on-premises infrastructure, reducing costs and risks.
+If you migrate all your application authentication with your MFA and user authentication, you'll be able to remove significant portions of your on-premises infrastructure, reducing costs and risks.
If you move all application authentication, you can skip the [Prepare AD FS](#prepare-ad-fs) stage and simplify your MFA migration. The process for moving all application authentication is shown in the following diagram.
For more information about migrating applications to Azure, see [Resources for m
## Next steps - [Migrate from Microsoft MFA Server to Azure AD MFA (Overview)](how-to-migrate-mfa-server-to-azure-mfa.md)-- [Migrate applications from Windows Active Directory to Azure Active Directory](../manage-apps/migrate-application-authentication-to-azure-active-directory.md)
+- [Migrate applications from Windows Active Directory to Azure AD](../manage-apps/migrate-application-authentication-to-azure-active-directory.md)
- [Plan your cloud authentication strategy](../fundamentals/active-directory-deployment-plans.md)
active-directory Howto Authentication Passwordless Phone https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/authentication/howto-authentication-passwordless-phone.md
Previously updated : 04/26/2023 Last updated : 05/16/2023
Admins can also configure parameters to better control how Microsoft Authenticat
Global Administrators can also manage Microsoft Authenticator on a tenant-wide basis by using legacy MFA and SSPR policies. These policies allow Microsoft Authenticator to be enabled or disabled for all users in the tenant. There are no options to include or exclude anyone, or control how Microsoft Authenticator can be used for sign-in.
-## Known Issues
+## Known issues
The following known issues exist.
To resolve this scenario, follow these steps:
Then the user can continue to use passwordless phone sign-in.
-### Federated Accounts
+### AuthenticatorAppSignInPolicy not supported
+
+The AuthenticatorAppSignInPolicy is a legacy policy that is not supported with Microsoft Authenticator. In order to enable your users for push notifications or passwordless phone sign-in with the Authenticator app, use the [Authentication Methods policy](concept-authentication-methods-manage.md).
+
+### Federated accounts
When a user has enabled any passwordless credential, the Azure AD login process stops using the login\_hint. Therefore the process no longer accelerates the user toward a federated login location.
active-directory Howto Mfa Mfasettings https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/authentication/howto-mfa-mfasettings.md
Previously updated : 04/10/2023 Last updated : 05/17/2023
The feature reduces the number of authentications on web apps, which normally pr
> > The **remember multi-factor authentication** feature isn't compatible with B2B users and won't be visible for B2B users when they sign in to the invited tenants. >
+> The **remember multi-factor authentication** feature isn't compatible with the Sign-in frequency Conditional Access control. For more information, see [Configure authentication session management with Conditional Access](../conditional-access/howto-conditional-access-session-lifetime.md#configuring-authentication-session-controls).
#### Enable remember multi-factor authentication
active-directory Howto Mfa Nps Extension Errors https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/authentication/howto-mfa-nps-extension-errors.md
If your users are [Having trouble with two-step verification](https://support.mi
### Health check script
-The [Azure AD MFA NPS Extension health check script](/samples/azure-samples/azure-mfa-nps-extension-health-check/azure-mfa-nps-extension-health-check/) performs a basic health check when troubleshooting the NPS extension. Run the script and choose option **1** to isolate the cause of the potential issue.
+The [Azure AD MFA NPS Extension health check script](/samples/azure-samples/azure-mfa-nps-extension-health-check/azure-mfa-nps-extension-health-check/) performs several basic health checks when troubleshooting the NPS extension. Here's a quick summary about each available option when the script is run:
+- Option **1** - to isolate the cause of the issue: if it's an NPS or MFA issue (Export MFA RegKeys, Restart NPS, Test, Import RegKeys, Restart NPS)
+- Option **2** - to check a full set of tests, when not all users can use the MFA NPS Extension (Testing Access to Azure/Create HTML Report)
+- Option **3** - to check a specific set of tests, when a specific user can't use the MFA NPS Extension (Test MFA for specific UPN)
+- Option **4** - to collect logs to contact Microsoft support (Enable Logging/Restart NPS/Gather Logs)
### Contact Microsoft support If you need additional help, contact a support professional through [Azure Multi-Factor Authentication Server support](https://support.microsoft.com/oas/default.aspx?prid=14947). When contacting us, it's helpful if you can include as much information about your issue as possible. Information you can supply includes the page where you saw the error, the specific error code, the specific session ID, the ID of the user who saw the error, and debug logs.
-To collect debug logs for support diagnostics, run the [Azure AD MFA NPS Extension health check script](/samples/azure-samples/azure-mfa-nps-extension-health-check/azure-mfa-nps-extension-health-check/) on the NPS server and choose option **4** to collect logs.
+To collect debug logs for support diagnostics, run the [Azure AD MFA NPS Extension health check script](/samples/azure-samples/azure-mfa-nps-extension-health-check/azure-mfa-nps-extension-health-check/) on the NPS server and choose option **4** to collect the logs to provide them to Microsoft support.
-At the end, zip the contents of the C:\NPS folder and attach the zipped file to the support case.
+At the end, upload the zip output file generated on the C:\NPS folder and attach it to the support case.
active-directory Howto Mfaserver Deploy https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/authentication/howto-mfaserver-deploy.md
Make sure the server that you're using for Azure Multi-Factor Authentication me
| Azure Multi-Factor Authentication Server Requirements | Description | |: |: | | Hardware |<li>200 MB of hard disk space</li><li>x32 or x64 capable processor</li><li>1 GB or greater RAM</li> |
-| Software |<li>Windows Server 2016</li><li>Windows Server 2012 R2</li><li>Windows Server 2012</li><li>Windows Server 2008/R2 (with [ESU](/lifecycle/faq/extended-security-updates) only)</li><li>Windows 10</li><li>Windows 8.1, all editions</li><li>Windows 8, all editions</li><li>Windows 7, all editions (with [ESU](/lifecycle/faq/extended-security-updates) only)</li><li>Microsoft .NET 4.0 Framework</li><li>IIS 7.0 or greater if installing the user portal or web service SDK</li> |
+| Software |<li>Windows Server 2019</li><li>Windows Server 2016</li><li>Windows Server 2012 R2</li><li>Windows Server 2012</li><li>Windows Server 2008/R2 (with [ESU](/lifecycle/faq/extended-security-updates) only)</li><li>Windows 10</li><li>Windows 8.1, all editions</li><li>Windows 8, all editions</li><li>Windows 7, all editions (with [ESU](/lifecycle/faq/extended-security-updates) only)</li><li>Microsoft .NET 4.0 Framework</li><li>IIS 7.0 or greater if installing the user portal or web service SDK</li> |
| Permissions | Domain Administrator or Enterprise Administrator account to register with Active Directory | ### Azure MFA Server Components
active-directory Tutorial Enable Sspr Writeback https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/authentication/tutorial-enable-sspr-writeback.md
Previously updated : 01/29/2023 Last updated : 05/16/2023
To enable password writeback in SSPR, complete the following steps:
1. (optional) If Azure AD Connect provisioning agents are detected, you can additionally check the option for **Write back passwords with Azure AD Connect cloud sync**. 3. Check the option for **Allow users to unlock accounts without resetting their password** to *Yes*.
- ![Configure Azure AD Connect for password writeback](media/tutorial-enable-sspr-writeback/enable-password-writeback.png)
+ > [!div class="mx-imgBorder"]
+ > ![Screenshot of how to manage settings password writeback.](media/tutorial-enable-sspr-writeback/manage-settings.png)
1. When ready, select **Save**.
active-directory App Objects And Service Principals https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/app-objects-and-service-principals.md
Previously updated : 04/27/2023 Last updated : 05/22/2023
An application object has:
A service principal must be created in each tenant where the application is used, enabling it to establish an identity for sign-in and/or access to resources being secured by the tenant. A single-tenant application has only one service principal (in its home tenant), created and consented for use during application registration. A multi-tenant application also has a service principal created in each tenant where a user from that tenant has consented to its use.
+### List service principals associated with an app
+
+You can find the service principals associated with an application object.
+
+# [Browser](#tab/browser)
+
+In the [Azure portal](https://portal.azure.com), navigate to the application registration overview. Select **Managed application in local directory**.
++
+# [PowerShell](#tab/azure-powershell)
+
+Using PowerShell:
+
+```azurepowershell
+Get-AzureADServicePrincipal -Filter "appId eq '{AppId}'"
+```
+
+# [Azure CLI](#tab/azure-cli)
+
+Using Azure CLI:
+
+```azurecli
+az ad sp list --filter "appId eq '{AppId}'"
+```
++ ### Consequences of modifying and deleting applications Any changes that you make to your application object are also reflected in its service principal object in the application's home tenant only (the tenant where it was registered). This means that deleting an application object will also delete its home tenant service principal object. However, restoring that application object through the app registrations UI won't restore its corresponding service principal. For more information on deletion and recovery of applications and their service principal objects, see [delete and recover applications and service principal objects](../manage-apps/recover-deleted-apps-faq.md).
active-directory Claims Challenge https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/claims-challenge.md
Here's an example:
```https HTTP 401; Unauthorized
-www-authenticate =Bearer realm="", authorization_uri="https://login.microsoftonline.com/common/oauth2/authorize", error="insufficient_claims", claims="eyJhY2Nlc3NfdG9rZW4iOnsiYWNycyI6eyJlc3NlbnRpYWwiOnRydWUsInZhbHVlIjoiYzEifX19"
+www-authenticate =Bearer realm="", authorization_uri="https://login.microsoftonline.com/common/oauth2/authorize", error="insufficient_claims", claims="eyJhY2Nlc3NfdG9rZW4iOnsiYWNycyI6eyJlc3NlbnRpYWwiOnRydWUsInZhbHVlIjoiY3AxIn19fQ=="
``` **HTTP Status Code**: Must be **401 Unauthorized**.
active-directory Custom Extension Get Started https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/custom-extension-get-started.md
Previously updated : 04/10/2023 Last updated : 05/23/2023
The following screenshot demonstrates how to configure the Azure HTTP trigger fu
public Claims claims { get; set; } public Action() {
- odatatype = "microsoft.graph.provideClaimsForToken";
+ odatatype = "microsoft.graph.tokenIssuanceStart.provideClaimsForToken";
claims = new Claims(); } }
active-directory Howto Get List Of All Auth Library Apps https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/howto-get-list-of-all-auth-library-apps.md
+
+ Title: "How to: Get a complete list of all apps using Active Directory Authentication Library (ADAL) in your tenant"
+description: In this how-to guide, you get a complete list of all apps that are using ADAL in your tenant.
++++++++ Last updated : 03/03/2022+++
+# Customer intent: As an application developer / IT admin, I need to know / identify which of my apps are using ADAL.
++
+# Get a complete list of apps using ADAL in your tenant
+
+Support for Active Directory Authentication Library (ADAL) will end in December, 2022. Apps using ADAL on existing OS versions will continue to work, but technical support and security updates will end. Without continued security updates, apps using ADAL will become increasingly vulnerable to the latest security attack patterns. For more information, see [Migrate apps to MSAL](msal-migration.md). This article provides guidance on how to use Azure Monitor workbooks to obtain a list of all apps that use ADAL in your tenant.
+
+## Sign-ins workbook
+
+Workbooks are a set of queries that collect and visualize information that is available in Azure Active Directory (Azure AD) logs. [Learn more about the sign-in logs schema here](../reports-monitoring/reference-azure-monitor-sign-ins-log-schema.md). The Sign-ins workbook in the Azure portal now has a table to assist you in determining which applications use ADAL and how often they are used. First, weΓÇÖll detail how to access the workbook before showing the visualization for the list of applications.
+
+## Step 1: Send Azure AD sign-in events to Azure Monitor
+
+Azure AD doesn't send sign-in events to Azure Monitor by default, which the Sign-ins workbook in Azure Monitor requires.
+
+Configure AD to send sign-in events to Azure Monitor by following the steps in [Integrate your Azure AD sign-in and audit logs with Azure Monitor](../reports-monitoring/howto-integrate-activity-logs-with-log-analytics.md). In the **Diagnostic settings** configuration step, select the **SignInLogs** check box.
+
+No sign-in event that occurred *before* you configure Azure AD to send the events to Azure Monitor will appear in the Sign-ins workbook.
+
+## Step 2: Access sign-ins workbook in Azure portal
+
+Once you've integrated your Azure AD sign-in and audit logs with Azure Monitor as specified in the Azure Monitor integration, access the sign-ins workbook:
+
+ 1. Sign into the Azure portal
+ 1. Navigate to **Azure Active Directory** > **Monitoring** > **Workbooks**
+ 1. In the **Usage** section, open the **Sign-ins** workbook
+
+ :::image type="content" source="media/howto-get-list-of-all-auth-library-apps/sign-in-workbook.png" alt-text="Screenshot of the Azure portal workbooks interface highlighting the sign-ins workbook.":::
+
+## Step 3: Identify apps that use ADAL
+
+The table at the bottom of the Sign-ins workbook page lists apps that recently used ADAL. You can also export a list of the apps. Update these apps to use MSAL.
+
+
+If there are no apps using ADAL, the workbook will display a view as shown below.
+
+
+## Step 4: Update your code
+
+After identifying your apps that use ADAL, migrate them to MSAL depending on your application type as illustrated below.
++
+## Next steps
+
+For more information about MSAL, including usage information and which libraries are available for different programming languages and application types, see:
+
+- [Acquire and cache tokens using MSAL](msal-acquire-cache-tokens.md)
+- [Application configuration options](msal-client-application-configuration.md)
+- [List of MSAL authentication libraries](reference-v2-libraries.md)
active-directory Id Tokens https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/id-tokens.md
The table below shows the claims that are in most ID tokens by default (except w
|`at_hash`| String |The access token hash is included in ID tokens only when the ID token is issued from the `/authorize` endpoint with an OAuth 2.0 access token. It can be used to validate the authenticity of an access token. To understand how to do this validation, see the [OpenID Connect specification](https://openid.net/specs/openid-connect-core-1_0.html#HybridIDToken). This is not returned on ID tokens from the `/token` endpoint. | |`aio` | Opaque String | An internal claim used by Azure AD to record data for token reuse. Should be ignored.| |`preferred_username` | String |The primary username that represents the user. It could be an email address, phone number, or a generic username without a specified format. Its value is mutable and might change over time. Since it is mutable, this value must not be used to make authorization decisions. It can be used for username hints, however, and in human-readable UI as a username. The `profile` scope is required in order to receive this claim. Present only in v2.0 tokens.|
-|`email` | String | The `email` claim is present by default for guest accounts that have an email address. Your app can request the email claim for managed users (those from the same tenant as the resource) using the `email` [optional claim](active-directory-optional-claims.md). On the v2.0 endpoint, your app can also request the `email` OpenID Connect scope - you don't need to request both the optional claim and the scope to get the claim.|
+|`email` | String | The `email` claim is present by default for guest accounts that have an email address. Your app can request the email claim for managed users (those from the same tenant as the resource) using the `email` [optional claim](active-directory-optional-claims.md). This value isn't guaranteed to be correct and is mutable over time. Never use it for authorization or to save data for a user. If you require an addressable email address in your app, request this data from the user directly by using this claim as a suggestion or prefill in your UX. On the v2.0 endpoint, your app can also request the `email` OpenID Connect scope - you don't need to request both the optional claim and the scope to get the claim.|
|`name` | String | The `name` claim provides a human-readable value that identifies the subject of the token. The value isn't guaranteed to be unique, it can be changed, and it's designed to be used only for display purposes. The `profile` scope is required to receive this claim. | |`nonce`| String | The nonce matches the parameter included in the original /authorize request to the IDP. If it does not match, your application should reject the token. | |`oid` | String, a GUID | The immutable identifier for an object in the Microsoft identity system, in this case, a user account. This ID uniquely identifies the user across applications - two different applications signing in the same user will receive the same value in the `oid` claim. The Microsoft Graph will return this ID as the `id` property for a given user account. Because the `oid` allows multiple apps to correlate users, the `profile` scope is required to receive this claim. Note that if a single user exists in multiple tenants, the user will contain a different object ID in each tenant - they're considered different accounts, even though the user logs into each account with the same credentials. The `oid` claim is a GUID and cannot be reused. |
active-directory Msal Ios Shared Devices https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/msal-ios-shared-devices.md
Previously updated : 11/03/2022 Last updated : 05/16/2023 -+
Frontline workers such as retail associates, flight crew members, and field service workers often use a shared mobile device to perform their work. These shared devices can present security risks if your users share their passwords or PINs, intentionally or not, to access customer and business data on the shared device.
-Shared device mode allows you to configure an iOS 13 or higher device to be more easily and securely shared by employees. Employees can sign in and access customer information quickly. When they're finished with their shift or task, they can sign out of the device, and it's immediately ready for use by the next employee.
+[Shared device mode](msal-shared-devices.md) allows you to configure an iOS 14 or higher device to be more easily and securely shared by employees. Employees can sign-in once and get single sign-on (SSO) to all apps that support this feature, giving them faster access to information. When they're finished with their shift or task, they can sign out of the device through any supported app that also signs them out from all apps supporting this feature, and the device is immediately ready for use by the next employee with no access to previous user's data.
-Shared device mode also provides Microsoft identity-backed management of the device.
+To take advantage of shared device mode feature, app developers and cloud device admins work together:
-This feature uses the [Microsoft Authenticator app](https://support.microsoft.com/account-billing/how-to-use-the-microsoft-authenticator-app-9783c865-0308-42fb-a519-8cf666fe0acc) to manage the users on the device and to distribute the [Microsoft Enterprise SSO plug-in for Apple devices](apple-sso-plugin.md).
+1. **Device administrators** prepare the device to be shared by using a mobile device management (MDM) provider like Microsoft Intune. The MDM pushes the [Microsoft Authenticator app](https://support.microsoft.com/account-billing/how-to-use-the-microsoft-authenticator-app-9783c865-0308-42fb-a519-8cf666fe0acc) to the devices and turns on "Shared Mode" for each device through a profile update to the device. This Shared Mode setting is what changes the behavior of the supported apps on the device. This configuration from the MDM provider sets the shared device mode for the device and enables the [Microsoft Enterprise SSO plug-in for Apple devices](apple-sso-plugin.md) that is required for shared device mode. To learn more about SSO extensions, see the [Apple video](https://developer.apple.com/videos/play/tech-talks/301/).
-## Create a shared device mode app
+1. **Application developers** write a single-account app (multiple-account apps aren't supported in shared device mode) to handle the following scenario:
-To create a shared device mode app, developers and cloud device admins work together:
+ - Sign in a user device-wide through any supported application.
+ - Sign out a user device-wide through any supported application.
+ - Query the state of the device to determine if your application is on a device that's in shared device mode.
+ - Query the device state of the user on the device to determine if anything has changed since the last time your application was used.
-1. **Application developers** write a single-account app (multiple-account apps aren't supported in shared device mode) and write code to handle things like shared device sign-out.
+ Supporting shared device mode should be considered a feature upgrade for your application, and can help increase its adoption in environments where the same device is used among multiple users.
-1. **Device administrators** prepare the device to be shared by using a mobile device management (MDM) provider like Microsoft Intune to manage the devices in their organization. The MDM pushes the Microsoft Authenticator app to the devices and turns on "Shared Mode" for each device through a profile update to the device. This Shared Mode setting is what changes the behavior of the supported apps on the device. This configuration from the MDM provider sets the shared device mode for the device and enables the [Microsoft Enterprise SSO plug-in for Apple devices](apple-sso-plugin.md) which is required for shared device mode.
+ > [!IMPORTANT]
+ > [Microsoft applications](#microsoft-applications-that-support-shared-device-mode) that support shared device mode on iOS don't require any changes and just need to be installed on the device to get the benefits that come with shared device mode.
-1. [**Required during Public Preview only**] A user with [Cloud Device Administrator](../roles/permissions-reference.md#cloud-device-administrator) role must then launch the [Microsoft Authenticator app](https://support.microsoft.com/account-billing/how-to-use-the-microsoft-authenticator-app-9783c865-0308-42fb-a519-8cf666fe0acc) and join their device to the organization.
+## Set up device in Shared Device Mode
- To configure the membership of your organizational roles in the Azure portal: **Azure Active Directory** > **Roles and Administrators** > **Cloud Device Administrator**
+Your device needs to be configured to support shared device mode. It must have iOS 14+ installed and be MDM-enrolled. MDM configuration also needs to enable [Microsoft Enterprise SSO plug-in for Apple devices](apple-sso-plugin.md).
-The following sections help you update your application to support shared device mode.
+Microsoft Intune supports zero-touch provisioning for devices in Azure Active Directory (Azure AD) shared device mode, which means that the device can be set up and enrolled in Intune with minimal interaction from the frontline worker. To set up device in shared device mode when using Microsoft Intune as the MDM, see [Set up enrollment for devices in Azure AD shared device mode](/mem/intune/enrollment/automated-device-enrollment-shared-device-mode/).
-## Use Intune to enable shared device mode & SSO extension
-
-> [!NOTE]
-> The following step is required only during public preview.
-
-Your device needs to be configured to support shared device mode. It must have iOS 13+ installed and be MDM-enrolled. MDM configuration also needs to enable [Microsoft Enterprise SSO plug-in for Apple devices](apple-sso-plugin.md). To learn more about SSO extensions, see the [Apple video](https://developer.apple.com/videos/play/tech-talks/301/).
-
-1. In the Intune Configuration Portal, tell the device to enable the [Microsoft Enterprise SSO plug-in for Apple devices](apple-sso-plugin.md) with the following configuration:
-
- - **Type**: Redirect
- - **Extension ID**: com.microsoft.azureauthenticator.ssoextension
- - **Team ID**: (this field isn't needed for iOS)
- - **URLs**:
- - `https://login.microsoftonline.com`
- - `https://login.microsoft.com`
- - `https://sts.windows.net`
- - `https://login.partner.microsoftonline.cn`
- - `https://login.chinacloudapi.cn`
- - `https://login.microsoftonline.de`
- - `https://login.microsoftonline.us`
- - `https://login.usgovcloudapi.net`
- - `https://login-us.microsoftonline.com`
- - **Additional Data to configure**:
- - Key: sharedDeviceMode
- - Type: Boolean
- - Value: true
-
- For more information about configuring with Intune, see the [Intune configuration documentation](/intune/configuration/ios-device-features-settings).
-
-1. Next, configure your MDM to push the Microsoft Authenticator app to your device through an MDM profile.
-
- Set the following configuration options to turn on Shared Device mode:
-
- - Configuration 1:
- - Key: sharedDeviceMode
- - Type: Boolean
- - Value: true
+> [!IMPORTANT]
+> We are working with third-party MDMs to support shared device mode. We will update the list of third-party MDMs as they start supporting the shared device mode.
## Modify your iOS application to support shared device mode
On a user change, you should ensure both the previous user's data is cleared and
### Detect shared device mode
-Detecting shared device mode is important for your application. Many applications will require a change in their user experience (UX) when the application is used on a shared device. For example, your application might have a "Sign-Up" feature, which isn't appropriate for a frontline worker because they likely already have an account. You may also want to add extra security to your application's handling of data if it's in shared device mode.
+Detecting shared device mode is important for your application. Many applications require a change in their user experience (UX) when the application is used on a shared device. For example, your application might have a "Sign-Up" feature, which isn't appropriate for a frontline worker because they likely already have an account. You may also want to add extra security to your application's handling of data if it's in shared device mode.
Use the `getDeviceInformationWithParameters:completionBlock:` API in the `MSALPublicClientApplication` to determine if an app is running on a device in shared device mode.
parameters.loginHint = self.loginHintTextField.text;
### Globally sign out a user
-The following code removes the signed-in account and clears cached tokens from not only the app, but also from the device that's in shared device mode. It doesn't, however, clear the _data_ from your application. You must clear the data from your application, as well as clear any cached data your application may be displaying to the user.
+The following code removes the signed-in account and clears cached tokens from not only the app, but also from the device that's in shared device mode. It doesn't, however, clear the _data_ from your application. You must clear the data from your application, and clear any cached data your application may be displaying to the user.
#### Swift
signoutParameters.signoutFromBrowser = YES; // To trigger a browser signout in S
}]; ```
-The [Microsoft Enterprise SSO plug-in for Apple devices](apple-sso-plugin.md) clears state only for applications. It doesn't clear state on the Safari browser. You can use the optional signoutFromBrowser property shown in code snippets above to trigger a browser signout in Safari. This will cause the browser to briefly launch on the device.
+The [Microsoft Enterprise SSO plug-in for Apple devices](apple-sso-plugin.md) clears state only for applications. It doesn't clear state on the Safari browser. You can use the optional `signoutFromBrowser` property shown in code snippets to trigger a browser sign out in Safari. This causes the browser to briefly launch on the device.
### Receive broadcast to detect global sign out initiated from other applications
-To receive the account change broadcast, you'll need to register a broadcast receiver. When an account change broadcast is received, immediately [get the signed in user and determine if a user has changed on the device](#get-the-signed-in-user-and-determine-if-a-user-has-changed-on-the-device). If a change is detected, initiate data cleanup for previously signed-in account. It's recommended to properly stop any operations and do data cleanup.
+To receive the account change broadcast, you need to register a broadcast receiver. When an account change broadcast is received, immediately [get the signed in user and determine if a user has changed on the device](#get-the-signed-in-user-and-determine-if-a-user-has-changed-on-the-device). If a change is detected, initiate data cleanup for previously signed-in account. It's recommended to properly stop any operations and do data cleanup.
The following code snippet shows how you could register a broadcast receiver. ```objectivec
-NSString *const MSID_SHARED_MODE_CURRENT_ACCOUNT_CHANGED_NOTIFICATION_KEY = @"SHARED_MODE_CURRENT_ACCOUNT_CHANGED";
+NSString *const MSAL_SHARED_MODE_CURRENT_ACCOUNT_CHANGED_NOTIFICATION_KEY = @"SHARED_MODE_CURRENT_ACCOUNT_CHANGED";
- (void) registerDarwinNotificationListenerΓÇ»
NSString *const MSID_SHARED_MODE_CURRENT_ACCOUNT_CHANGED_NOTIFICATION_KEY = @"SH
sharedModeAccountChangedCallback,
- (CFStringRef)MSID_SHARED_MODE_CURRENT_ACCOUNT_CHANGED_NOTIFICATION_KEY,ΓÇ»
+ (CFStringRef)MSAL_SHARED_MODE_CURRENT_ACCOUNT_CHANGED_NOTIFICATION_KEY,ΓÇ»
nil, CFNotificationSuspensionBehaviorDeliverImmediately);ΓÇ»
void sharedModeAccountChangedCallback(CFNotificationCenterRef center, void * o
}ΓÇ» ```
-For more information about the available options for CFNotificationAddObserver or to see the corresponding method signatures in Swift, see:
+For more information about the available options for `CFNotificationAddObserver` or to see the corresponding method signatures in Swift, see:
- [CFNotificationAddObserver](https://developer.apple.com/documentation/corefoundation/1543316-cfnotificationcenteraddobserver?language=objc) - [CFNotificationCallback](https://developer.apple.com/documentation/corefoundation/cfnotificationcallback?language=objc)
-For iOS, your app will require a background permission to remain active in the background and listen to Darwin notifications. The background capability must be added to support a different background operation ΓÇô your app may be subject to rejection from the Apple App Store if it has a background capability only to listen for Darwin notifications. If your app is already configured to complete background operations, you can add the listener as part of that operation. For more information about iOS background capabilities, see [Configuring background execution modes](https://developer.apple.com/documentation/xcode/configuring-background-execution-modes)
+For iOS, your app requires a background permission to remain active in the background and listen to Darwin notifications. The background capability must be added to support a different background operation ΓÇô your app may be subject to rejection from the Apple App Store if it has a background capability only to listen for Darwin notifications. If your app is already configured to complete background operations, you can add the listener as part of that operation. For more information about iOS background capabilities, see [Configuring background execution modes](https://developer.apple.com/documentation/xcode/configuring-background-execution-modes)
+
+## Microsoft applications that support shared device mode
+
+These Microsoft applications support Azure AD's shared device mode:
+
+- [Microsoft Teams](/microsoftteams/platform/) (in Public Preview)
+
+> [!IMPORTANT]
+> Public preview is provided without a service-level agreement and isn't recommended for production workloads. Some features might be unsupported or have constrained capabilities. For more information, see [Supplemental terms of use for Microsoft Azure previews](https://azure.microsoft.com/support/legal/preview-supplemental-terms/).
## Next steps
active-directory Multi Service Web App Access Microsoft Graph As User https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/multi-service-web-app-access-microsoft-graph-as-user.md
public class IndexModel : PageModel
# [Node.js](#tab/programming-language-nodejs)
-Using the [microsoft-identity-express](https://github.com/Azure-Samples/microsoft-identity-express) package, the web app gets the user's access token from the incoming requests header. microsoft-identity-express detects that the web app is hosted on App Service and gets the access token from the App Service authentication/authorization module. The access token is then passed down to the Microsoft Graph SDK client to make an authenticated request to the `/me` endpoint.
+Using a custom **AuthProvider** class that encapsulates authentication logic, the web app gets the user's access token from the incoming requests header. The **AuthProvider** instance detects that the web app is hosted on App Service and gets the access token from the App Service authentication/authorization module. The access token is then passed down to the Microsoft Graph SDK client to make an authenticated request to the `/me` endpoint.
To see this code as part of a sample application, see *graphController.js* in the [sample on GitHub](https://github.com/Azure-Samples/ms-identity-easyauth-nodejs-storage-graphapi/tree/main/2-WebApp-graphapi-on-behalf). > [!NOTE]
-> The microsoft-identity-express package isn't required in your web app for basic authentication/authorization or to authenticate requests with Microsoft Graph. It's possible to [securely call downstream APIs](../../app-service/tutorial-auth-aad.md#call-api-securely-from-server-code) with only the App Service authentication/authorization module enabled.
->
-> However, the App Service authentication/authorization is designed for more basic authentication scenarios. Later, when your web app needs to handle more complex scenarios, you can disable the App Service authentication/authorization module and microsoft-identity-express will already be a part of your app.
+> The App Service authentication/authorization is designed for more basic authentication scenarios. Later, when your web app needs to handle more complex scenarios, you can disable the App Service authentication/authorization module and the **AuthProvider** instance in the sample will fallback to use [MSAL Node](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-node), which is the recommended library for adding authentication/authorization to Node.js applications.
```nodejs const graphHelper = require('../utils/graphHelper');
active-directory Reference Breaking Changes https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/reference-breaking-changes.md
Check this article regularly to learn about:
> [!TIP] > To be notified of updates to this page, add this URL to your RSS feed reader:<br/>`https://learn.microsoft.com/api/search/rss?search=%22Azure+Active+Directory+breaking+changes+reference%22&locale=en-us`
+## May 2023
+
+### The Power BI administrator role will be renamed to Fabric Administrator.
+
+**Effective date**: June 2023
+
+**Endpoints impacted**:
+- List roleDefinitions - Microsoft Graph v1.0
+- List directoryRoles - Microsoft Graph v1.0
+
+**Change**
+
+The Power BI Administrator role will be renamed to Fabric Administrator.
+
+On May 23, 2023, Microsoft unveiled Microsoft Fabric, which provides a Data Factory-powered data integration experience, Synapse-powered data engineering, data warehouse, data science, and real-time analytics experiences and business intelligence (BI) with Power BI ΓÇö all hosted on a lake-centric SaaS solution. The tenant and capacity administration for these experiences are centralized in the Fabric Admin portal (previously known as the Power BI admin portal).
+
+Starting June 2023, the Power BI Administrator role will be renamed to Fabric Administrator to align with the changing scope and responsibility of this role. All applications including Azure Active Directory, Microsoft Graph APIs, Microsoft 365, and GDAP will start to reflect the new role name over the course of several weeks.
+
+As a reminder, your application code and scripts shouldn't make decisions based on role name or display name.
++ ## December 2021 ### AD FS users will see more login prompts to ensure that the correct user is signed in.
active-directory Refresh Tokens https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/refresh-tokens.md
Previously updated : 06/10/2022 Last updated : 05/23/2023
Refresh tokens can be revoked by the server because of a change in credentials,
| User does SSPR | Revoked | Revoked | Stays alive | Stays alive | Stays alive | | Admin resets password | Revoked | Revoked | Stays alive | Stays alive | Stays alive | | User revokes their refresh tokens [via PowerShell](/powershell/module/microsoft.graph.users.actions/invoke-mginvalidateuserrefreshtoken) | Revoked | Revoked | Revoked | Revoked | Revoked |
-| Admin revokes all refresh tokens for a user [via PowerShell](/powershell/module/azuread/revoke-azureaduserallrefreshtoken) | Revoked | Revoked | Revoked | Revoked | Revoked |
+| Admin revokes all refresh tokens for a user [via PowerShell](/powershell/module/microsoft.graph.users.actions/invoke-mginvalidateuserrefreshtoken) | Revoked | Revoked | Revoked | Revoked | Revoked |
| Single sign-out [on web](v2-protocols-oidc.md#single-sign-out) | Revoked | Stays alive | Revoked | Stays alive | Stays alive | ## Next steps
active-directory Spa Quickstart Portal Angular Ciam https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/spa-quickstart-portal-angular-ciam.md
Title: "Quickstart: Add sign in to a Angular SPA"
+ Title: "Quickstart: Add sign in to an Angular SPA"
description: Learn how to run a sample Angular SPA to sign in users
Last updated 05/05/2023
# Portal quickstart for Angular SPA
-> In this quickstart, you download and run a code sample that demonstrates how a Angular single-page application (SPA) can sign in users with Azure Active Directory for customers.
+> In this quickstart, you download and run a code sample that demonstrates how an Angular single-page application (SPA) can sign in users with Azure Active Directory for customers.
> > [!div renderon="portal" id="display-on-portal" class="sxs-lookup"] > 1. Make sure you've installed [Node.js](https://nodejs.org/en/download/). >
-> 1. Unzip the sample app, `cd` into the folder that contains `package.json`, then run the following commands:
+> 1. Unzip the sample app.
+>
+> 1. In your terminal, locate the sample app folder, then run the following commands:
+>
> ```console
-> npm install && npm start
+> cd SPA && npm install && npm start
> ```
+>
> 1. Open your browser, visit `http://localhost:4200`, select **Sign-in**, then follow the prompts.
->
+>
active-directory Spa Quickstart Portal React Ciam https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/spa-quickstart-portal-react-ciam.md
Previously updated : 05/05/2023 Last updated : 05/22/2023 # Portal quickstart for React SPA
Last updated 05/05/2023
> [!div renderon="portal" id="display-on-portal" class="sxs-lookup"] > 1. Make sure you've installed [Node.js](https://nodejs.org/en/download/). >
-> 1. Unzip the sample app, `cd` into the folder that contains `package.json`, then run the following commands:
+> 1. Unzip the sample app.
+>
+> 1. In your terminal, locate the sample app folder, then run the following commands:
+>
> ```console
-> npm install && npm start
+> cd SPA && npm install && npm start
> ```
+>
> 1. Open your browser, visit `http://localhost:3000`, select **Sign-in**, then follow the prompts. >
active-directory Spa Quickstart Portal Vanilla Js Ciam https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/spa-quickstart-portal-vanilla-js-ciam.md
Previously updated : 05/05/2023 Last updated : 05/22/2023 # Portal quickstart for JavaScript application
Last updated 05/05/2023
> [!div renderon="portal" id="display-on-portal" class="sxs-lookup"] > 1. Make sure you've installed [Node.js](https://nodejs.org/en/download/). >
-> 1. Unzip the sample app, `cd` into the app root folder, then run the following command:
+> 1. Unzip the sample app.
+>
+> 1. In your terminal, locate the sample app folder, then run the following commands:
+>
> ```console
-> npm install && npm start
+> cd App && npm install && npm start
> ```
+>
> 1. Open your browser, visit `http://localhost:3000`, select **Sign-in**, then follow the prompts. >
active-directory Tutorial V2 Android https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/tutorial-v2-android.md
In this tutorial:
- [Android Studio](https://developer.android.com/studio) - [Android documentation on generating a key](https://developer.android.com/studio/publish/app-signing#generate-key)-- [Layout resource](https://developer.android.com/guide/topics/resources/layout-resource) ## How this tutorial works
A layout is a file that defines the visual structure and appearance of a user in
```
+1. In **app** > **src** > **main**> **res** > **menu** > **activity_main_drawer.xml**. If you don't have **activity_main_drawer.xml** in your folder, create and add the following code snippet:
+
+ ```xml
+ <?xml version="1.0" encoding="utf-8"?>
+ <menu xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ tools:showIn="navigation_view">
+ <group android:checkableBehavior="single">
+ <item
+ android:id="@+id/nav_single_account"
+ android:icon="@drawable/ic_single_account_24dp"
+ android:title="Single Account Mode" />
+
+ </group>
+ </menu>
+ ```
+ 1. In **app** > **src** > **main**> **res** > **values** > **dimens.xml**. Replace the content of **dimens.xml** with the following code snippet: ```xml
A layout is a file that defines the visual structure and appearance of a user in
</resources> ```
+1. In **app** > **src** > **main**> **res** > **values** > **strings.xml**. Replace the content of **strings.xml** with the following code snippet:
+
+ ```xml
+ <resources>
+ <string name="app_name">MSALAndroidapp</string>
+ <string name="action_settings">Settings</string>
+ <!-- Strings used for fragments for navigation -->
+ <string name="first_fragment_label">First Fragment</string>
+ <string name="second_fragment_label">Second Fragment</string>
+ <string name="nav_header_desc">Navigation header</string>
+ <string name="navigation_drawer_open">Open navigation drawer</string>
+ <string name="navigation_drawer_close">Close navigation drawer</string>
+ <string name="next">Next</string>
+ <string name="previous">Previous</string>
+
+ <string name="hello_first_fragment">Hello first fragment</string>
+ <string name="hello_second_fragment">Hello second fragment. Arg: %1$s</string>
+ <!-- TODO: Remove or change this placeholder text -->
+ <string name="hello_blank_fragment">Hello blank fragment</string>
+ </resources>
+ ```
+ 1. In **app** > **src** > **main**> **res** > **values** > **styles.xml**. If you don't have **styles.xml** in your folder, create and add the following code snippet: ```xml
active-directory Tutorial V2 Angular Auth Code https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/tutorial-v2-angular-auth-code.md
Previously updated : 04/28/2023 Last updated : 05/08/2023
In this tutorial, you'll build an Angular single-page application (SPA) that sig
In this tutorial: > [!div class="checklist"]
-> * Register the application in the Azure portal
-> * Create an Angular project with `npm`
-> * Add code to support user sign-in and sign-out
-> * Add code to call Microsoft Graph API
-> * Test the app
+>
+> - Register the application in the Azure portal
+> - Create an Angular project with `npm`
+> - Add code to support user sign-in and sign-out
+> - Add code to call Microsoft Graph API
+> - Test the app
MSAL Angular v2 improves on MSAL Angular v1 by supporting the authorization code flow in the browser instead of the implicit grant flow. MSAL Angular v2 does **NOT** support the implicit flow. ## Prerequisites
-* [Node.js](https://nodejs.org/en/download/) for running a local web server.
-* [Visual Studio Code](https://code.visualstudio.com/download) or other editor for modifying project files.
+- [Node.js](https://nodejs.org/en/download/) for running a local web server.
+- [Visual Studio Code](https://code.visualstudio.com/download) or other editor for modifying project files.
## How the sample app works
In this scenario, after a user signs in, an access token is requested and added
This tutorial uses the following libraries:
-|Library|Description|
-|||
-|[MSAL Angular](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-angular)|Microsoft Authentication Library for JavaScript Angular Wrapper|
-|[MSAL Browser](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-browser)|Microsoft Authentication Library for JavaScript v2 browser package |
+| Library | Description |
+| | |
+| [MSAL Angular](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-angular) | Microsoft Authentication Library for JavaScript Angular Wrapper |
+| [MSAL Browser](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-browser) | Microsoft Authentication Library for JavaScript v2 browser package |
You can find the source code for all of the MSAL.js libraries in the [AzureAD/microsoft-authentication-library-for-js](https://github.com/AzureAD/microsoft-authentication-library-for-js) repository on GitHub.
+### Get the completed code sample
+
+Do you prefer to download the completed sample project for this tutorial instead? Clone the [ms-identity-javascript-angular-spa](https://github.com/Azure-Samples/ms-identity-javascript-angular-spa)
+
+```bash
+git clone https://github.com/Azure-Samples/ms-identity-javascript-angular-spa.git
+```
+
+To continue with the tutorial and build the application yourself, move on to the next section, [Register the application and record identifiers](#register-the-application-and-record-identifiers).
+ ## Register the application and record identifiers To complete registration, provide the application a name, specify the supported account types, and add a redirect URI. Once registered, the application **Overview** pane displays the identifiers needed in the application source code.
To complete registration, provide the application a name, specify the supported
1. If access to multiple tenants is available, use the **Directories + subscriptions** filter :::image type="icon" source="media/common/portal-directory-subscription-filter.png" border="false"::: in the top menu to switch to the tenant in which to register the application. 1. Search for and select **Azure Active Directory**. 1. Under **Manage**, select **App registrations > New registration**.
-1. Enter a **Name** for the application, such as *Angular-SPA-auth-code*.
+1. Enter a **Name** for the application, such as _Angular-SPA-auth-code_.
1. For **Supported account types**, select **Accounts in this organizational directory only**. For information on different account types, select the **Help me choose** option. 1. Under **Redirect URI (optional)**, use the drop-down menu to select **Single-page-application (SPA)** and enter `http://localhost:4200` into the text box. 1. Select **Register**.
To complete registration, provide the application a name, specify the supported
1. Open Visual Studio Code, select **File** > **Open Folder...**. Navigate to and select the location in which to create your project. 1. Open a new terminal by selecting **Terminal** > **New Terminal**.
- 1. You may need to switch terminal types. Select the down arrow next to the **+** icon in the terminal and select **Command Prompt**.
-1. Run the following commands to create a new Angular project with the name *msal-angular-tutorial*, install Angular Material component libraries, MSAL Browser, MSAL Angular and generate home and profile components.
-
- ```cmd
- npm install -g @angular/cli
- ng new msal-angular-tutorial --routing=true --style=css --strict=false
- cd msal-angular-tutorial
- npm install @angular/material @angular/cdk
- npm install @azure/msal-browser @azure/msal-angular
- ng generate component home
- ng generate component profile
- ```
+ 1. You may need to switch terminal types. Select the down arrow next to the **+** icon in the terminal and select **Command Prompt**.
+1. Run the following commands to create a new Angular project with the name _msal-angular-tutorial_, install Angular Material component libraries, MSAL Browser, MSAL Angular and generate home and profile components.
+
+ ```cmd
+ npm install -g @angular/cli
+ ng new msal-angular-tutorial --routing=true --style=css --strict=false
+ cd msal-angular-tutorial
+ npm install @angular/material @angular/cdk
+ npm install @azure/msal-browser @azure/msal-angular
+ ng generate component home
+ ng generate component profile
+ ```
## Configure the application and edit the base UI
-1. Open *src/app/app.module.ts*. The `MsalModule` and `MsalInterceptor` need to be added to `imports` along with the `isIE` constant. You'll also add the material modules. Replace the entire contents of the file with the following snippet:
-
- ```javascript
- import { BrowserModule } from '@angular/platform-browser';
- import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
- import { NgModule } from '@angular/core';
-
- import { MatButtonModule } from '@angular/material/button';
- import { MatToolbarModule } from '@angular/material/toolbar';
- import { MatListModule } from '@angular/material/list';
-
- import { AppRoutingModule } from './app-routing.module';
- import { AppComponent } from './app.component';
- import { HomeComponent } from './home/home.component';
- import { ProfileComponent } from './profile/profile.component';
-
- import { MsalModule, MsalRedirectComponent} from '@azure/msal-angular';
- import { PublicClientApplication } from '@azure/msal-browser';
-
- const isIE = window.navigator.userAgent.indexOf('MSIE ') > -1 || window.navigator.userAgent.indexOf('Trident/') > -1;
-
- @NgModule({
- declarations: [
- AppComponent,
- HomeComponent,
- ProfileComponent
- ],
- imports: [
- BrowserModule,
- BrowserAnimationsModule,
- AppRoutingModule,
- MatButtonModule,
- MatToolbarModule,
- MatListModule,
- MsalModule.forRoot( new PublicClientApplication({
- auth: {
- clientId: 'Enter_the_Application_Id_here', // Application (client) ID from the app registration
- authority: 'Enter_the_Cloud_Instance_Id_Here/Enter_the_Tenant_Info_Here', // The Azure cloud instance and the app's sign-in audience (tenant ID, common, organizations, or consumers)
- redirectUri: 'Enter_the_Redirect_Uri_Here'// This is your redirect URI
- },
- cache: {
- cacheLocation: 'localStorage',
- storeAuthStateInCookie: isIE, // Set to true for Internet Explorer 11
- }
- }), null, null)
- ],
- providers: [],
- bootstrap: [AppComponent, MsalRedirectComponent]
- })
- export class AppModule { }
- ```
+1. Open _src/app/app.module.ts_. The `MsalModule` and `MsalInterceptor` need to be added to `imports` along with the `isIE` constant. You'll also add the material modules. Replace the entire contents of the file with the following snippet:
+
+ ```javascript
+ import { BrowserModule } from "@angular/platform-browser";
+ import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
+ import { NgModule } from "@angular/core";
+
+ import { MatButtonModule } from "@angular/material/button";
+ import { MatToolbarModule } from "@angular/material/toolbar";
+ import { MatListModule } from "@angular/material/list";
+
+ import { AppRoutingModule } from "./app-routing.module";
+ import { AppComponent } from "./app.component";
+ import { HomeComponent } from "./home/home.component";
+ import { ProfileComponent } from "./profile/profile.component";
+
+ import { MsalModule, MsalRedirectComponent } from "@azure/msal-angular";
+ import { PublicClientApplication } from "@azure/msal-browser";
+
+ const isIE =
+ window.navigator.userAgent.indexOf("MSIE ") > -1 ||
+ window.navigator.userAgent.indexOf("Trident/") > -1;
+
+ @NgModule({
+ declarations: [AppComponent, HomeComponent, ProfileComponent],
+ imports: [
+ BrowserModule,
+ BrowserAnimationsModule,
+ AppRoutingModule,
+ MatButtonModule,
+ MatToolbarModule,
+ MatListModule,
+ MsalModule.forRoot(
+ new PublicClientApplication({
+ auth: {
+ clientId: "Enter_the_Application_Id_here", // Application (client) ID from the app registration
+ authority:
+ "Enter_the_Cloud_Instance_Id_Here/Enter_the_Tenant_Info_Here", // The Azure cloud instance and the app's sign-in audience (tenant ID, common, organizations, or consumers)
+ redirectUri: "Enter_the_Redirect_Uri_Here", // This is your redirect URI
+ },
+ cache: {
+ cacheLocation: "localStorage",
+ storeAuthStateInCookie: isIE, // Set to true for Internet Explorer 11
+ },
+ }),
+ null,
+ null
+ ),
+ ],
+ providers: [],
+ bootstrap: [AppComponent, MsalRedirectComponent],
+ })
+ export class AppModule {}
+ ```
1. Replace the following values with the values obtained from the Azure portal. For more information about available configurable options, see [Initialize client applications](msal-js-initializing-client-applications.md).
- - `clientId` - The identifier of the application, also referred to as the client. Replace `Enter_the_Application_Id_Here` with the **Application (client) ID** value that was recorded earlier from the overview page of the registered application.
- - `authority` - This is composed of two parts:
- - The *Instance* is endpoint of the cloud provider. For the main or global Azure cloud, enter `https://login.microsoftonline.com`. Check with the different available endpoints in [National clouds](authentication-national-cloud.md#azure-ad-authentication-endpoints).
- - The *Tenant ID* is the identifier of the tenant where the application is registered. Replace the `_Enter_the_Tenant_Info_Here` with the **Directory (tenant) ID** value that was recorded earlier from the overview page of the registered application.
- - `redirectUri` - the location where the authorization server sends the user once the app has been successfully authorized and granted an authorization code or access token. Replace `Enter_the_Redirect_Uri_Here` with `http://localhost:4200`.
-
-1. Open *src/app/app-routing.module.ts* and add routes to the *home* and *profile* components. Replace the entire contents of the file with the following snippet:
-
- ```javascript
- import { NgModule } from '@angular/core';
- import { Routes, RouterModule } from '@angular/router';
- import { BrowserUtils } from '@azure/msal-browser';
- import { HomeComponent } from './home/home.component';
- import { ProfileComponent } from './profile/profile.component';
-
- const routes: Routes = [
- {
- path: 'profile',
- component: ProfileComponent,
- },
- {
- path: '',
- component: HomeComponent
- },
- ];
-
- const isIframe = window !== window.parent && !window.opener;
-
- @NgModule({
- imports: [RouterModule.forRoot(routes, {
- // Don't perform initial navigation in iframes or popups
- initialNavigation: !BrowserUtils.isInIframe() && !BrowserUtils.isInPopup() ? 'enabledNonBlocking' : 'disabled' // Set to enabledBlocking to use Angular Universal
- })],
- exports: [RouterModule]
- })
- export class AppRoutingModule { }
- ```
-
-1. Open *src/app/app.component.html* and replace the existing code with the following:
-
- ```HTML
- <mat-toolbar color="primary">
- <a class="title" href="/">{{ title }}</a>
-
- <div class="toolbar-spacer"></div>
-
- <a mat-button [routerLink]="['profile']">Profile</a>
-
- <button mat-raised-button *ngIf="!loginDisplay" (click)="login()">Login</button>
-
- </mat-toolbar>
- <div class="container">
- <!--This is to avoid reload during acquireTokenSilent() because of hidden iframe -->
- <router-outlet *ngIf="!isIframe"></router-outlet>
- </div>
- ```
-
-1. Open *src/style.css* to define the CSS:
-
- ```css
- @import '~@angular/material/prebuilt-themes/deeppurple-amber.css';
-
- html, body { height: 100%; }
- body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; }
- .container { margin: 1%; }
- ```
-
-4. Open *src/app/app.component.css* to add CSS styling to the application:
-
- ```css
- .toolbar-spacer {
- flex: 1 1 auto;
- }
-
- a.title {
- color: white;
- }
- ```
+
+ - `clientId` - The identifier of the application, also referred to as the client. Replace `Enter_the_Application_Id_Here` with the **Application (client) ID** value that was recorded earlier from the overview page of the registered application.
+ - `authority` - This is composed of two parts:
+ - The _Instance_ is endpoint of the cloud provider. For the main or global Azure cloud, enter `https://login.microsoftonline.com`. Check with the different available endpoints in [National clouds](authentication-national-cloud.md#azure-ad-authentication-endpoints).
+ - The _Tenant ID_ is the identifier of the tenant where the application is registered. Replace the `_Enter_the_Tenant_Info_Here` with the **Directory (tenant) ID** value that was recorded earlier from the overview page of the registered application.
+ - `redirectUri` - the location where the authorization server sends the user once the app has been successfully authorized and granted an authorization code or access token. Replace `Enter_the_Redirect_Uri_Here` with `http://localhost:4200`.
+
+1. Open _src/app/app-routing.module.ts_ and add routes to the _home_ and _profile_ components. Replace the entire contents of the file with the following snippet:
+
+ ```javascript
+ import { NgModule } from "@angular/core";
+ import { Routes, RouterModule } from "@angular/router";
+ import { BrowserUtils } from "@azure/msal-browser";
+ import { HomeComponent } from "./home/home.component";
+ import { ProfileComponent } from "./profile/profile.component";
+
+ const routes: Routes = [
+ {
+ path: "profile",
+ component: ProfileComponent,
+ },
+ {
+ path: "",
+ component: HomeComponent,
+ },
+ ];
+
+ const isIframe = window !== window.parent && !window.opener;
+
+ @NgModule({
+ imports: [
+ RouterModule.forRoot(routes, {
+ // Don't perform initial navigation in iframes or popups
+ initialNavigation:
+ !BrowserUtils.isInIframe() && !BrowserUtils.isInPopup()
+ ? "enabledNonBlocking"
+ : "disabled", // Set to enabledBlocking to use Angular Universal
+ }),
+ ],
+ exports: [RouterModule],
+ })
+ export class AppRoutingModule {}
+ ```
+
+1. Open _src/app/app.component.html_ and replace the existing code with the following:
+
+ ```HTML
+ <mat-toolbar color="primary">
+ <a class="title" href="/">{{ title }}</a>
+
+ <div class="toolbar-spacer"></div>
+
+ <a mat-button [routerLink]="['profile']">Profile</a>
+
+ <button mat-raised-button *ngIf="!loginDisplay" (click)="login()">Login</button>
+
+ </mat-toolbar>
+ <div class="container">
+ <!--This is to avoid reload during acquireTokenSilent() because of hidden iframe -->
+ <router-outlet *ngIf="!isIframe"></router-outlet>
+ </div>
+ ```
+
+1. Open _src/style.css_ to define the CSS:
+
+ ```css
+ @import "~@angular/material/prebuilt-themes/deeppurple-amber.css";
+
+ html,
+ body {
+ height: 100%;
+ }
+ body {
+ margin: 0;
+ font-family: Roboto, "Helvetica Neue", sans-serif;
+ }
+ .container {
+ margin: 1%;
+ }
+ ```
+
+1. Open _src/app/app.component.css_ to add CSS styling to the application:
+
+ ```css
+ .toolbar-spacer {
+ flex: 1 1 auto;
+ }
+
+ a.title {
+ color: white;
+ }
+ ```
## Sign in using pop-ups
-1. Open *src/app/app.component.ts* and replace the contents of the file to the following to sign in a user using a pop-up window:
-
- ```javascript
- import { MsalService } from '@azure/msal-angular';
- import { Component, OnInit } from '@angular/core';
-
- @Component({
- selector: 'app-root',
- templateUrl: './app.component.html',
- styleUrls: ['./app.component.css']
- })
- export class AppComponent implements OnInit {
- title = 'msal-angular-tutorial';
- isIframe = false;
- loginDisplay = false;
-
- constructor(private authService: MsalService) { }
-
- ngOnInit() {
- this.isIframe = window !== window.parent && !window.opener;
- }
-
- login() {
- this.authService.loginPopup()
- .subscribe({
- next: (result) => {
- console.log(result);
- this.setLoginDisplay();
- },
- error: (error) => console.log(error)
- });
- }
-
- setLoginDisplay() {
- this.loginDisplay = this.authService.instance.getAllAccounts().length > 0;
- }
- }
- ```
+1. Open _src/app/app.component.ts_ and replace the contents of the file to the following to sign in a user using a pop-up window:
+
+ ```javascript
+ import { MsalService } from '@azure/msal-angular';
+ import { Component, OnInit } from '@angular/core';
+
+ @Component({
+ selector: 'app-root',
+ templateUrl: './app.component.html',
+ styleUrls: ['./app.component.css']
+ })
+ export class AppComponent implements OnInit {
+ title = 'msal-angular-tutorial';
+ isIframe = false;
+ loginDisplay = false;
+
+ constructor(private authService: MsalService) { }
+
+ ngOnInit() {
+ this.isIframe = window !== window.parent && !window.opener;
+ }
+
+ login() {
+ this.authService.loginPopup()
+ .subscribe({
+ next: (result) => {
+ console.log(result);
+ this.setLoginDisplay();
+ },
+ error: (error) => console.log(error)
+ });
+ }
+
+ setLoginDisplay() {
+ this.loginDisplay = this.authService.instance.getAllAccounts().length > 0;
+ }
+ }
+ ```
## Sign in using redirects
-1. Update *src/app/app.module.ts* to bootstrap the `MsalRedirectComponent`. This is a dedicated redirect component, which handles redirects. Change the `MsalModule` import and `AppComponent` bootstrap to resemble the following:
-
- ```javascript
- ...
- import { MsalModule, MsalRedirectComponent } from '@azure/msal-angular'; // Updated import
- ...
- bootstrap: [AppComponent, MsalRedirectComponent] // MsalRedirectComponent bootstrapped here
- ...
- ```
-
-2. Open *src/https://docsupdatetracker.net/index.html* and replace the entire contents of the file with the following snippet, which adds the `<app-redirect>` selector:
-
- ```HTML
- <!doctype html>
- <html lang="en">
- <head>
- <meta charset="utf-8">
- <title>msal-angular-tutorial</title>
- <base href="/">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <link rel="icon" type="image/x-icon" href="favicon.ico">
- </head>
- <body>
- <app-root></app-root>
- <app-redirect></app-redirect>
- </body>
- </html>
- ```
-
-3. Open *src/app/app.component.ts* and replace the code with the following to sign in a user using a full-frame redirect:
-
- ```javascript
- import { MsalService } from '@azure/msal-angular';
- import { Component, OnInit } from '@angular/core';
-
- @Component({
- selector: 'app-root',
- templateUrl: './app.component.html',
- styleUrls: ['./app.component.css']
- })
- export class AppComponent implements OnInit {
- title = 'msal-angular-tutorial';
- isIframe = false;
- loginDisplay = false;
-
- constructor(private authService: MsalService) { }
-
- ngOnInit() {
- this.isIframe = window !== window.parent && !window.opener;
- }
-
- login() {
- this.authService.loginRedirect();
- }
-
- setLoginDisplay() {
- this.loginDisplay = this.authService.instance.getAllAccounts().length > 0;
- }
- }
- ```
-
-4. Navigate to *src/app/home/home.component.ts* and replace the entire contents of the file with the following snippet to subscribe to the `LOGIN_SUCCESS` event:
-
- ```javascript
- import { Component, OnInit } from '@angular/core';
- import { MsalBroadcastService, MsalService } from '@azure/msal-angular';
- import { EventMessage, EventType, InteractionStatus } from '@azure/msal-browser';
- import { filter } from 'rxjs/operators';
-
- @Component({
- selector: 'app-home',
- templateUrl: './home.component.html',
- styleUrls: ['./home.component.css']
- })
- export class HomeComponent implements OnInit {
- constructor(private authService: MsalService, private msalBroadcastService: MsalBroadcastService) { }
-
- ngOnInit(): void {
- this.msalBroadcastService.msalSubject$
- .pipe(
- filter((msg: EventMessage) => msg.eventType === EventType.LOGIN_SUCCESS),
- )
- .subscribe((result: EventMessage) => {
- console.log(result);
- });
- }
- }
- ```
+1. Update _src/app/app.module.ts_ to bootstrap the `MsalRedirectComponent`. This is a dedicated redirect component, which handles redirects. Change the `MsalModule` import and `AppComponent` bootstrap to resemble the following:
+
+ ```javascript
+ ...
+ import { MsalModule, MsalRedirectComponent } from '@azure/msal-angular'; // Updated import
+ ...
+ bootstrap: [AppComponent, MsalRedirectComponent] // MsalRedirectComponent bootstrapped here
+ ...
+ ```
+
+2. Open _src/https://docsupdatetracker.net/index.html_ and replace the entire contents of the file with the following snippet, which adds the `<app-redirect>` selector:
+
+ ```HTML
+ <!doctype html>
+ <html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <title>msal-angular-tutorial</title>
+ <base href="/">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="icon" type="image/x-icon" href="favicon.ico">
+ </head>
+ <body>
+ <app-root></app-root>
+ <app-redirect></app-redirect>
+ </body>
+ </html>
+ ```
+
+3. Open _src/app/app.component.ts_ and replace the code with the following to sign in a user using a full-frame redirect:
+
+ ```javascript
+ import { MsalService } from '@azure/msal-angular';
+ import { Component, OnInit } from '@angular/core';
+
+ @Component({
+ selector: 'app-root',
+ templateUrl: './app.component.html',
+ styleUrls: ['./app.component.css']
+ })
+ export class AppComponent implements OnInit {
+ title = 'msal-angular-tutorial';
+ isIframe = false;
+ loginDisplay = false;
+
+ constructor(private authService: MsalService) { }
+
+ ngOnInit() {
+ this.isIframe = window !== window.parent && !window.opener;
+ }
+
+ login() {
+ this.authService.loginRedirect();
+ }
+
+ setLoginDisplay() {
+ this.loginDisplay = this.authService.instance.getAllAccounts().length > 0;
+ }
+ }
+ ```
+
+4. Navigate to _src/app/home/home.component.ts_ and replace the entire contents of the file with the following snippet to subscribe to the `LOGIN_SUCCESS` event:
+
+ ```javascript
+ import { Component, OnInit } from '@angular/core';
+ import { MsalBroadcastService, MsalService } from '@azure/msal-angular';
+ import { EventMessage, EventType, InteractionStatus } from '@azure/msal-browser';
+ import { filter } from 'rxjs/operators';
+
+ @Component({
+ selector: 'app-home',
+ templateUrl: './home.component.html',
+ styleUrls: ['./home.component.css']
+ })
+ export class HomeComponent implements OnInit {
+ constructor(private authService: MsalService, private msalBroadcastService: MsalBroadcastService) { }
+
+ ngOnInit(): void {
+ this.msalBroadcastService.msalSubject$
+ .pipe(
+ filter((msg: EventMessage) => msg.eventType === EventType.LOGIN_SUCCESS),
+ )
+ .subscribe((result: EventMessage) => {
+ console.log(result);
+ });
+ }
+ }
+ ```
## Conditional rendering In order to render certain User Interface (UI) only for authenticated users, components have to subscribe to the `MsalBroadcastService` to see if users have been signed in, and interaction has completed.
-1. Add the `MsalBroadcastService` to *src/app/app.component.ts* and subscribe to the `inProgress$` observable to check if interaction is complete and an account is signed in before rendering UI. Your code should now look like this:
-
- ```javascript
- import { Component, OnInit, OnDestroy } from '@angular/core';
- import { MsalService, MsalBroadcastService } from '@azure/msal-angular';
- import { InteractionStatus } from '@azure/msal-browser';
- import { Subject } from 'rxjs';
- import { filter, takeUntil } from 'rxjs/operators';
-
- @Component({
- selector: 'app-root',
- templateUrl: './app.component.html',
- styleUrls: ['./app.component.css']
- })
- export class AppComponent implements OnInit, OnDestroy {
- title = 'msal-angular-tutorial';
- isIframe = false;
- loginDisplay = false;
- private readonly _destroying$ = new Subject<void>();
-
- constructor(private broadcastService: MsalBroadcastService, private authService: MsalService) { }
-
- ngOnInit() {
- this.isIframe = window !== window.parent && !window.opener;
-
- this.broadcastService.inProgress$
- .pipe(
- filter((status: InteractionStatus) => status === InteractionStatus.None),
- takeUntil(this._destroying$)
- )
- .subscribe(() => {
- this.setLoginDisplay();
- })
- }
-
- login() {
- this.authService.loginRedirect();
- }
-
- setLoginDisplay() {
- this.loginDisplay = this.authService.instance.getAllAccounts().length > 0;
- }
-
- ngOnDestroy(): void {
- this._destroying$.next(undefined);
- this._destroying$.complete();
- }
- }
- ```
-
-2. Update the code in *src/app/home/home.component.ts* to also check for interaction to be completed before updating UI. Your code should now look like this:
-
- ```javascript
- import { Component, OnInit } from '@angular/core';
- import { MsalBroadcastService, MsalService } from '@azure/msal-angular';
- import { EventMessage, EventType, InteractionStatus } from '@azure/msal-browser';
- import { filter } from 'rxjs/operators';
-
- @Component({
- selector: 'app-home',
- templateUrl: './home.component.html',
- styleUrls: ['./home.component.css']
- })
- export class HomeComponent implements OnInit {
- loginDisplay = false;
-
- constructor(private authService: MsalService, private msalBroadcastService: MsalBroadcastService) { }
-
- ngOnInit(): void {
- this.msalBroadcastService.msalSubject$
- .pipe(
- filter((msg: EventMessage) => msg.eventType === EventType.LOGIN_SUCCESS),
- )
- .subscribe((result: EventMessage) => {
- console.log(result);
- });
-
- this.msalBroadcastService.inProgress$
- .pipe(
- filter((status: InteractionStatus) => status === InteractionStatus.None)
- )
- .subscribe(() => {
- this.setLoginDisplay();
- })
- }
-
- setLoginDisplay() {
- this.loginDisplay = this.authService.instance.getAllAccounts().length > 0;
- }
- }
- ```
-
-3. Replace the code in *src/app/home/home.component.html* with the following conditional displays:
-
- ```HTML
- <div *ngIf="!loginDisplay">
- <p>Please sign-in to see your profile information.</p>
- </div>
-
- <div *ngIf="loginDisplay">
- <p>Login successful!</p>
- <p>Request your profile information by clicking Profile above.</p>
- </div>
- ```
+1. Add the `MsalBroadcastService` to _src/app/app.component.ts_ and subscribe to the `inProgress$` observable to check if interaction is complete and an account is signed in before rendering UI. Your code should now look like this:
+
+ ```javascript
+ import { Component, OnInit, OnDestroy } from '@angular/core';
+ import { MsalService, MsalBroadcastService } from '@azure/msal-angular';
+ import { InteractionStatus } from '@azure/msal-browser';
+ import { Subject } from 'rxjs';
+ import { filter, takeUntil } from 'rxjs/operators';
+
+ @Component({
+ selector: 'app-root',
+ templateUrl: './app.component.html',
+ styleUrls: ['./app.component.css']
+ })
+ export class AppComponent implements OnInit, OnDestroy {
+ title = 'msal-angular-tutorial';
+ isIframe = false;
+ loginDisplay = false;
+ private readonly _destroying$ = new Subject<void>();
+
+ constructor(private broadcastService: MsalBroadcastService, private authService: MsalService) { }
+
+ ngOnInit() {
+ this.isIframe = window !== window.parent && !window.opener;
+
+ this.broadcastService.inProgress$
+ .pipe(
+ filter((status: InteractionStatus) => status === InteractionStatus.None),
+ takeUntil(this._destroying$)
+ )
+ .subscribe(() => {
+ this.setLoginDisplay();
+ })
+ }
+
+ login() {
+ this.authService.loginRedirect();
+ }
+
+ setLoginDisplay() {
+ this.loginDisplay = this.authService.instance.getAllAccounts().length > 0;
+ }
+
+ ngOnDestroy(): void {
+ this._destroying$.next(undefined);
+ this._destroying$.complete();
+ }
+ }
+ ```
+
+2. Update the code in _src/app/home/home.component.ts_ to also check for interaction to be completed before updating UI. Your code should now look like this:
+
+ ```javascript
+ import { Component, OnInit } from '@angular/core';
+ import { MsalBroadcastService, MsalService } from '@azure/msal-angular';
+ import { EventMessage, EventType, InteractionStatus } from '@azure/msal-browser';
+ import { filter } from 'rxjs/operators';
+
+ @Component({
+ selector: 'app-home',
+ templateUrl: './home.component.html',
+ styleUrls: ['./home.component.css']
+ })
+ export class HomeComponent implements OnInit {
+ loginDisplay = false;
+
+ constructor(private authService: MsalService, private msalBroadcastService: MsalBroadcastService) { }
+
+ ngOnInit(): void {
+ this.msalBroadcastService.msalSubject$
+ .pipe(
+ filter((msg: EventMessage) => msg.eventType === EventType.LOGIN_SUCCESS),
+ )
+ .subscribe((result: EventMessage) => {
+ console.log(result);
+ });
+
+ this.msalBroadcastService.inProgress$
+ .pipe(
+ filter((status: InteractionStatus) => status === InteractionStatus.None)
+ )
+ .subscribe(() => {
+ this.setLoginDisplay();
+ })
+ }
+
+ setLoginDisplay() {
+ this.loginDisplay = this.authService.instance.getAllAccounts().length > 0;
+ }
+ }
+ ```
+
+3. Replace the code in _src/app/home/home.component.html_ with the following conditional displays:
+
+ ```HTML
+ <div *ngIf="!loginDisplay">
+ <p>Please sign-in to see your profile information.</p>
+ </div>
+
+ <div *ngIf="loginDisplay">
+ <p>Login successful!</p>
+ <p>Request your profile information by clicking Profile above.</p>
+ </div>
+ ```
## Implement Angular Guard
The `MsalGuard` class is one you can use to protect routes and require authentic
`MsalGuard` is a convenience class you can use to improve the user experience, but it shouldn't be relied upon for security. Attackers can potentially get around client-side guards, and you should ensure that the server doesn't return any data the user shouldn't access.
-1. Add the `MsalGuard` class as a provider in your application in *src/app/app.module.ts*, and add the configurations for the `MsalGuard`. Scopes needed for acquiring tokens later can be provided in the `authRequest`, and the type of interaction for the Guard can be set to `Redirect` or `Popup`. Your code should look like the following:
-
- ```javascript
- import { BrowserModule } from '@angular/platform-browser';
- import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
- import { NgModule } from '@angular/core';
-
- import { MatButtonModule } from '@angular/material/button';
- import { MatToolbarModule } from '@angular/material/toolbar';
- import { MatListModule } from '@angular/material/list';
-
- import { AppRoutingModule } from './app-routing.module';
- import { AppComponent } from './app.component';
- import { HomeComponent } from './home/home.component';
- import { ProfileComponent } from './profile/profile.component';
-
- import { MsalModule, MsalRedirectComponent, MsalGuard } from '@azure/msal-angular'; // MsalGuard added to imports
- import { PublicClientApplication, InteractionType } from '@azure/msal-browser'; // InteractionType added to imports
-
- const isIE = window.navigator.userAgent.indexOf('MSIE ') > -1 || window.navigator.userAgent.indexOf('Trident/') > -1;
-
- @NgModule({
- declarations: [
- AppComponent,
- HomeComponent,
- ProfileComponent
- ],
- imports: [
- BrowserModule,
- BrowserAnimationsModule,
- AppRoutingModule,
- MatButtonModule,
- MatToolbarModule,
- MatListModule,
- MsalModule.forRoot( new PublicClientApplication({
- auth: {
- clientId: 'Enter_the_Application_Id_here',
- authority: 'Enter_the_Cloud_Instance_Id_Here/Enter_the_Tenant_Info_Here',
- redirectUri: 'Enter_the_Redirect_Uri_Here'
- },
- cache: {
- cacheLocation: 'localStorage',
- storeAuthStateInCookie: isIE,
- }
- }), {
- interactionType: InteractionType.Redirect, // MSAL Guard Configuration
- authRequest: {
- scopes: ['user.read']
- }
- }, null)
- ],
- providers: [
- MsalGuard // MsalGuard added as provider here
- ],
- bootstrap: [AppComponent, MsalRedirectComponent]
- })
- export class AppModule { }
- ```
-
-2. Set the `MsalGuard` on the routes you wish to protect in *src/app/app-routing.module.ts*:
-
- ```javascript
- import { NgModule } from '@angular/core';
- import { Routes, RouterModule } from '@angular/router';
- import { HomeComponent } from './home/home.component';
- import { ProfileComponent } from './profile/profile.component';
- import { MsalGuard } from '@azure/msal-angular';
-
- const routes: Routes = [
- {
- path: 'profile',
- component: ProfileComponent,
- canActivate: [MsalGuard]
- },
- {
- path: '',
- component: HomeComponent
- },
- ];
-
- const isIframe = window !== window.parent && !window.opener;
-
- @NgModule({
- imports: [RouterModule.forRoot(routes, {
- initialNavigation: !isIframe ? 'enabled' : 'disabled' // Don't perform initial navigation in iframes
- })],
- exports: [RouterModule]
- })
- export class AppRoutingModule { }
- ```
-
-3. Adjust the login calls in *src/app/app.component.ts* to take the `authRequest` set in the guard configurations into account. Your code should now look like the following:
-
- ```javascript
- import { Component, OnInit, OnDestroy, Inject } from '@angular/core';
- import { MsalService, MsalBroadcastService, MSAL_GUARD_CONFIG, MsalGuardConfiguration } from '@azure/msal-angular';
- import { InteractionStatus, RedirectRequest } from '@azure/msal-browser';
- import { Subject } from 'rxjs';
- import { filter, takeUntil } from 'rxjs/operators';
-
- @Component({
- selector: 'app-root',
- templateUrl: './app.component.html',
- styleUrls: ['./app.component.css']
- })
- export class AppComponent implements OnInit, OnDestroy {
- title = 'msal-angular-tutorial';
- isIframe = false;
- loginDisplay = false;
- private readonly _destroying$ = new Subject<void>();
-
- constructor(@Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MsalGuardConfiguration, private broadcastService: MsalBroadcastService, private authService: MsalService) { }
-
- ngOnInit() {
- this.isIframe = window !== window.parent && !window.opener;
-
- this.broadcastService.inProgress$
- .pipe(
- filter((status: InteractionStatus) => status === InteractionStatus.None),
- takeUntil(this._destroying$)
- )
- .subscribe(() => {
- this.setLoginDisplay();
- })
- }
-
- login() {
- if (this.msalGuardConfig.authRequest){
- this.authService.loginRedirect({...this.msalGuardConfig.authRequest} as RedirectRequest);
- } else {
- this.authService.loginRedirect();
- }
- }
-
- setLoginDisplay() {
- this.loginDisplay = this.authService.instance.getAllAccounts().length > 0;
- }
-
- ngOnDestroy(): void {
- this._destroying$.next(undefined);
- this._destroying$.complete();
- }
- }
- ```
+1. Add the `MsalGuard` class as a provider in your application in _src/app/app.module.ts_, and add the configurations for the `MsalGuard`. Scopes needed for acquiring tokens later can be provided in the `authRequest`, and the type of interaction for the Guard can be set to `Redirect` or `Popup`. Your code should look like the following:
+
+ ```javascript
+ import { BrowserModule } from "@angular/platform-browser";
+ import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
+ import { NgModule } from "@angular/core";
+
+ import { MatButtonModule } from "@angular/material/button";
+ import { MatToolbarModule } from "@angular/material/toolbar";
+ import { MatListModule } from "@angular/material/list";
+
+ import { AppRoutingModule } from "./app-routing.module";
+ import { AppComponent } from "./app.component";
+ import { HomeComponent } from "./home/home.component";
+ import { ProfileComponent } from "./profile/profile.component";
+
+ import {
+ MsalModule,
+ MsalRedirectComponent,
+ MsalGuard,
+ } from "@azure/msal-angular"; // MsalGuard added to imports
+ import {
+ PublicClientApplication,
+ InteractionType,
+ } from "@azure/msal-browser"; // InteractionType added to imports
+
+ const isIE =
+ window.navigator.userAgent.indexOf("MSIE ") > -1 ||
+ window.navigator.userAgent.indexOf("Trident/") > -1;
+
+ @NgModule({
+ declarations: [AppComponent, HomeComponent, ProfileComponent],
+ imports: [
+ BrowserModule,
+ BrowserAnimationsModule,
+ AppRoutingModule,
+ MatButtonModule,
+ MatToolbarModule,
+ MatListModule,
+ MsalModule.forRoot(
+ new PublicClientApplication({
+ auth: {
+ clientId: "Enter_the_Application_Id_here",
+ authority:
+ "Enter_the_Cloud_Instance_Id_Here/Enter_the_Tenant_Info_Here",
+ redirectUri: "Enter_the_Redirect_Uri_Here",
+ },
+ cache: {
+ cacheLocation: "localStorage",
+ storeAuthStateInCookie: isIE,
+ },
+ }),
+ {
+ interactionType: InteractionType.Redirect, // MSAL Guard Configuration
+ authRequest: {
+ scopes: ["user.read"],
+ },
+ },
+ null
+ ),
+ ],
+ providers: [
+ MsalGuard, // MsalGuard added as provider here
+ ],
+ bootstrap: [AppComponent, MsalRedirectComponent],
+ })
+ export class AppModule {}
+ ```
+
+2. Set the `MsalGuard` on the routes you wish to protect in _src/app/app-routing.module.ts_:
+
+ ```javascript
+ import { NgModule } from "@angular/core";
+ import { Routes, RouterModule } from "@angular/router";
+ import { HomeComponent } from "./home/home.component";
+ import { ProfileComponent } from "./profile/profile.component";
+ import { MsalGuard } from "@azure/msal-angular";
+
+ const routes: Routes = [
+ {
+ path: "profile",
+ component: ProfileComponent,
+ canActivate: [MsalGuard],
+ },
+ {
+ path: "",
+ component: HomeComponent,
+ },
+ ];
+
+ const isIframe = window !== window.parent && !window.opener;
+
+ @NgModule({
+ imports: [
+ RouterModule.forRoot(routes, {
+ // Don't perform initial navigation in iframes or popups
+ initialNavigation:
+ !BrowserUtils.isInIframe() && !BrowserUtils.isInPopup()
+ ? "enabledNonBlocking"
+ : "disabled", // Set to enabledBlocking to use Angular Universal
+ }),
+ ],
+ exports: [RouterModule],
+ })
+ export class AppRoutingModule {}
+ ```
+
+3. Adjust the login calls in _src/app/app.component.ts_ to take the `authRequest` set in the guard configurations into account. Your code should now look like the following:
+
+ ```javascript
+ import { Component, OnInit, OnDestroy, Inject } from '@angular/core';
+ import { MsalService, MsalBroadcastService, MSAL_GUARD_CONFIG, MsalGuardConfiguration } from '@azure/msal-angular';
+ import { InteractionStatus, RedirectRequest } from '@azure/msal-browser';
+ import { Subject } from 'rxjs';
+ import { filter, takeUntil } from 'rxjs/operators';
+
+ @Component({
+ selector: 'app-root',
+ templateUrl: './app.component.html',
+ styleUrls: ['./app.component.css']
+ })
+ export class AppComponent implements OnInit, OnDestroy {
+ title = 'msal-angular-tutorial';
+ isIframe = false;
+ loginDisplay = false;
+ private readonly _destroying$ = new Subject<void>();
+
+ constructor(@Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MsalGuardConfiguration, private broadcastService: MsalBroadcastService, private authService: MsalService) { }
+
+ ngOnInit() {
+ this.isIframe = window !== window.parent && !window.opener;
+
+ this.broadcastService.inProgress$
+ .pipe(
+ filter((status: InteractionStatus) => status === InteractionStatus.None),
+ takeUntil(this._destroying$)
+ )
+ .subscribe(() => {
+ this.setLoginDisplay();
+ })
+ }
+
+ login() {
+ if (this.msalGuardConfig.authRequest){
+ this.authService.loginRedirect({...this.msalGuardConfig.authRequest} as RedirectRequest);
+ } else {
+ this.authService.loginRedirect();
+ }
+ }
+
+ setLoginDisplay() {
+ this.loginDisplay = this.authService.instance.getAllAccounts().length > 0;
+ }
+
+ ngOnDestroy(): void {
+ this._destroying$.next(undefined);
+ this._destroying$.complete();
+ }
+ }
+ ```
## Acquire a token
The `MsalGuard` class is one you can use to protect routes and require authentic
MSAL Angular provides an `Interceptor` class that automatically acquires tokens for outgoing requests that use the Angular `http` client to known protected resources.
-1. Add the `Interceptor` class as a provider to your application in *src/app/app.module.ts*, with its configurations. Your code should now look like the following:
-
- ```javascript
- import { BrowserModule } from '@angular/platform-browser';
- import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
- import { NgModule } from '@angular/core';
- import { HTTP_INTERCEPTORS, HttpClientModule } from "@angular/common/http"; // Import
-
- import { MatButtonModule } from '@angular/material/button';
- import { MatToolbarModule } from '@angular/material/toolbar';
- import { MatListModule } from '@angular/material/list';
-
- import { AppRoutingModule } from './app-routing.module';
- import { AppComponent } from './app.component';
- import { HomeComponent } from './home/home.component';
- import { ProfileComponent } from './profile/profile.component';
-
- import { MsalModule, MsalRedirectComponent, MsalGuard, MsalInterceptor } from '@azure/msal-angular'; // Import MsalInterceptor
- import { InteractionType, PublicClientApplication } from '@azure/msal-browser';
-
- const isIE = window.navigator.userAgent.indexOf('MSIE ') > -1 || window.navigator.userAgent.indexOf('Trident/') > -1;
-
- @NgModule({
- declarations: [
- AppComponent,
- HomeComponent,
- ProfileComponent
- ],
- imports: [
- BrowserModule,
- BrowserAnimationsModule,
- AppRoutingModule,
- MatButtonModule,
- MatToolbarModule,
- MatListModule,
- HttpClientModule,
- MsalModule.forRoot( new PublicClientApplication({
- auth: {
- clientId: 'Enter_the_Application_Id_Here',
- authority: 'Enter_the_Cloud_Instance_Id_Here/Enter_the_Tenant_Info_Here',
- redirectUri: 'Enter_the_Redirect_Uri_Here',
- },
- cache: {
- cacheLocation: 'localStorage',
- storeAuthStateInCookie: isIE,
- }
- }), {
- interactionType: InteractionType.Redirect,
- authRequest: {
- scopes: ['user.read']
- }
- }, {
- interactionType: InteractionType.Redirect, // MSAL Interceptor Configuration
- protectedResourceMap: new Map([
- ['Enter_the_Graph_Endpoint_Here/v1.0/me', ['user.read']]
- ])
- })
- ],
- providers: [
- {
- provide: HTTP_INTERCEPTORS,
- useClass: MsalInterceptor,
- multi: true
- },
- MsalGuard
- ],
- bootstrap: [AppComponent, MsalRedirectComponent]
- })
- export class AppModule { }
-
- ```
-
- The protected resources are provided as a `protectedResourceMap`. The URLs you provide in the `protectedResourceMap` collection are case-sensitive. For each resource, add scopes being requested to be returned in the access token.
-
- For example:
-
- * `["user.read"]` for Microsoft Graph
- * `["<Application ID URL>/scope"]` for custom web APIs (that is, `api://<Application ID>/access_as_user`)
-
- Modify the values in the `protectedResourceMap` as described here:
- - `Enter_the_Graph_Endpoint_Here` is the instance of the Microsoft Graph API the application should communicate with. For the **global** Microsoft Graph API endpoint, replace this string with `https://graph.microsoft.com`. For endpoints in **national** cloud deployments, see [National cloud deployments](/graph/deployments) in the Microsoft Graph documentation.
-
-2. Replace the code in *src/app/profile/profile.component.ts* to retrieve a user's profile with an HTTP request, and replace the `GRAPH_ENDPOINT` with the Microsoft Graph endpoint:
-
- ```JavaScript
- import { Component, OnInit } from '@angular/core';
- import { HttpClient } from '@angular/common/http';
-
- const GRAPH_ENDPOINT = 'Enter_the_Graph_Endpoint_Here/v1.0/me';
-
- type ProfileType = {
- givenName?: string,
- surname?: string,
- userPrincipalName?: string,
- id?: string
- };
-
- @Component({
- selector: 'app-profile',
- templateUrl: './profile.component.html',
- styleUrls: ['./profile.component.css']
- })
- export class ProfileComponent implements OnInit {
- profile!: ProfileType;
-
- constructor(
- private http: HttpClient
- ) { }
-
- ngOnInit() {
- this.getProfile();
- }
-
- getProfile() {
- this.http.get(GRAPH_ENDPOINT)
- .subscribe(profile => {
- this.profile = profile;
- });
- }
- }
- ```
-
-3. Replace the UI in *src/app/profile/profile.component.html* to display profile information:
-
- ```HTML
- <div>
- <p><strong>First Name: </strong> {{profile?.givenName}}</p>
- <p><strong>Last Name: </strong> {{profile?.surname}}</p>
- <p><strong>Email: </strong> {{profile?.userPrincipalName}}</p>
- <p><strong>Id: </strong> {{profile?.id}}</p>
- </div>
- ```
+1. Add the `Interceptor` class as a provider to your application in _src/app/app.module.ts_, with its configurations. Your code should now look like the following:
+
+ ```javascript
+ import { BrowserModule } from "@angular/platform-browser";
+ import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
+ import { NgModule } from "@angular/core";
+ import { HTTP_INTERCEPTORS, HttpClientModule } from "@angular/common/http"; // Import
+
+ import { MatButtonModule } from "@angular/material/button";
+ import { MatToolbarModule } from "@angular/material/toolbar";
+ import { MatListModule } from "@angular/material/list";
+
+ import { AppRoutingModule } from "./app-routing.module";
+ import { AppComponent } from "./app.component";
+ import { HomeComponent } from "./home/home.component";
+ import { ProfileComponent } from "./profile/profile.component";
+
+ import {
+ MsalModule,
+ MsalRedirectComponent,
+ MsalGuard,
+ MsalInterceptor,
+ } from "@azure/msal-angular"; // Import MsalInterceptor
+ import {
+ InteractionType,
+ PublicClientApplication,
+ } from "@azure/msal-browser";
+
+ const isIE =
+ window.navigator.userAgent.indexOf("MSIE ") > -1 ||
+ window.navigator.userAgent.indexOf("Trident/") > -1;
+
+ @NgModule({
+ declarations: [AppComponent, HomeComponent, ProfileComponent],
+ imports: [
+ BrowserModule,
+ BrowserAnimationsModule,
+ AppRoutingModule,
+ MatButtonModule,
+ MatToolbarModule,
+ MatListModule,
+ HttpClientModule,
+ MsalModule.forRoot(
+ new PublicClientApplication({
+ auth: {
+ clientId: "Enter_the_Application_Id_Here",
+ authority:
+ "Enter_the_Cloud_Instance_Id_Here/Enter_the_Tenant_Info_Here",
+ redirectUri: "Enter_the_Redirect_Uri_Here",
+ },
+ cache: {
+ cacheLocation: "localStorage",
+ storeAuthStateInCookie: isIE,
+ },
+ }),
+ {
+ interactionType: InteractionType.Redirect,
+ authRequest: {
+ scopes: ["user.read"],
+ },
+ },
+ {
+ interactionType: InteractionType.Redirect, // MSAL Interceptor Configuration
+ protectedResourceMap: new Map([
+ ["Enter_the_Graph_Endpoint_Here/v1.0/me", ["user.read"]],
+ ]),
+ }
+ ),
+ ],
+ providers: [
+ {
+ provide: HTTP_INTERCEPTORS,
+ useClass: MsalInterceptor,
+ multi: true,
+ },
+ MsalGuard,
+ ],
+ bootstrap: [AppComponent, MsalRedirectComponent],
+ })
+ export class AppModule {}
+ ```
+
+ The protected resources are provided as a `protectedResourceMap`. The URLs you provide in the `protectedResourceMap` collection are case-sensitive. For each resource, add scopes being requested to be returned in the access token.
+
+ For example:
+
+ - `["user.read"]` for Microsoft Graph
+ - `["<Application ID URL>/scope"]` for custom web APIs (that is, `api://<Application ID>/access_as_user`)
+
+ Modify the values in the `protectedResourceMap` as described here:
+
+ - `Enter_the_Graph_Endpoint_Here` is the instance of the Microsoft Graph API the application should communicate with. For the **global** Microsoft Graph API endpoint, replace this string with `https://graph.microsoft.com`. For endpoints in **national** cloud deployments, see [National cloud deployments](/graph/deployments) in the Microsoft Graph documentation.
+
+2. Replace the code in _src/app/profile/profile.component.ts_ to retrieve a user's profile with an HTTP request, and replace the `GRAPH_ENDPOINT` with the Microsoft Graph endpoint:
+
+ ```JavaScript
+ import { Component, OnInit } from '@angular/core';
+ import { HttpClient } from '@angular/common/http';
+
+ const GRAPH_ENDPOINT = 'Enter_the_Graph_Endpoint_Here/v1.0/me';
+
+ type ProfileType = {
+ givenName?: string,
+ surname?: string,
+ userPrincipalName?: string,
+ id?: string
+ };
+
+ @Component({
+ selector: 'app-profile',
+ templateUrl: './profile.component.html',
+ styleUrls: ['./profile.component.css']
+ })
+ export class ProfileComponent implements OnInit {
+ profile!: ProfileType;
+
+ constructor(
+ private http: HttpClient
+ ) { }
+
+ ngOnInit() {
+ this.getProfile();
+ }
+
+ getProfile() {
+ this.http.get(GRAPH_ENDPOINT)
+ .subscribe(profile => {
+ this.profile = profile;
+ });
+ }
+ }
+ ```
+
+3. Replace the UI in _src/app/profile/profile.component.html_ to display profile information:
+
+ ```HTML
+ <div>
+ <p><strong>First Name: </strong> {{profile?.givenName}}</p>
+ <p><strong>Last Name: </strong> {{profile?.surname}}</p>
+ <p><strong>Email: </strong> {{profile?.userPrincipalName}}</p>
+ <p><strong>Id: </strong> {{profile?.id}}</p>
+ </div>
+ ```
## Sign out
-1. Update the code in *src/app/app.component.html* to conditionally display a `Logout` button:
-
- ```HTML
- <mat-toolbar color="primary">
- <a class="title" href="/">{{ title }}</a>
-
- <div class="toolbar-spacer"></div>
-
- <a mat-button [routerLink]="['profile']">Profile</a>
-
- <button mat-raised-button *ngIf="!loginDisplay" (click)="login()">Login</button>
- <button mat-raised-button *ngIf="loginDisplay" (click)="logout()">Logout</button>
-
- </mat-toolbar>
- <div class="container">
- <!--This is to avoid reload during acquireTokenSilent() because of hidden iframe -->
- <router-outlet *ngIf="!isIframe"></router-outlet>
- </div>
- ```
+1. Update the code in _src/app/app.component.html_ to conditionally display a `Logout` button:
+
+ ```HTML
+ <mat-toolbar color="primary">
+ <a class="title" href="/">{{ title }}</a>
+
+ <div class="toolbar-spacer"></div>
+
+ <a mat-button [routerLink]="['profile']">Profile</a>
+
+ <button mat-raised-button *ngIf="!loginDisplay" (click)="login()">Login</button>
+ <button mat-raised-button *ngIf="loginDisplay" (click)="logout()">Logout</button>
+
+ </mat-toolbar>
+ <div class="container">
+ <!--This is to avoid reload during acquireTokenSilent() because of hidden iframe -->
+ <router-outlet *ngIf="!isIframe"></router-outlet>
+ </div>
+ ```
### Sign out using redirects
-1. Update the code in *src/app/app.component.ts* to sign out a user using redirects:
-
- ```javascript
- import { Component, OnInit, OnDestroy, Inject } from '@angular/core';
- import { MsalService, MsalBroadcastService, MSAL_GUARD_CONFIG, MsalGuardConfiguration } from '@azure/msal-angular';
- import { InteractionStatus, RedirectRequest } from '@azure/msal-browser';
- import { Subject } from 'rxjs';
- import { filter, takeUntil } from 'rxjs/operators';
-
- @Component({
- selector: 'app-root',
- templateUrl: './app.component.html',
- styleUrls: ['./app.component.css']
- })
- export class AppComponent implements OnInit, OnDestroy {
- title = 'msal-angular-tutorial';
- isIframe = false;
- loginDisplay = false;
- private readonly _destroying$ = new Subject<void>();
-
- constructor(@Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MsalGuardConfiguration, private broadcastService: MsalBroadcastService, private authService: MsalService) { }
-
- ngOnInit() {
- this.isIframe = window !== window.parent && !window.opener;
-
- this.broadcastService.inProgress$
- .pipe(
- filter((status: InteractionStatus) => status === InteractionStatus.None),
- takeUntil(this._destroying$)
- )
- .subscribe(() => {
- this.setLoginDisplay();
- })
- }
-
- login() {
- if (this.msalGuardConfig.authRequest){
- this.authService.loginRedirect({...this.msalGuardConfig.authRequest} as RedirectRequest);
- } else {
- this.authService.loginRedirect();
- }
- }
-
- logout() { // Add log out function here
- this.authService.logoutRedirect({
- postLogoutRedirectUri: 'http://localhost:4200'
- });
- }
-
- setLoginDisplay() {
- this.loginDisplay = this.authService.instance.getAllAccounts().length > 0;
- }
-
- ngOnDestroy(): void {
- this._destroying$.next(undefined);
- this._destroying$.complete();
- }
- }
- ```
+1. Update the code in _src/app/app.component.ts_ to sign out a user using redirects:
+
+ ```javascript
+ import { Component, OnInit, OnDestroy, Inject } from '@angular/core';
+ import { MsalService, MsalBroadcastService, MSAL_GUARD_CONFIG, MsalGuardConfiguration } from '@azure/msal-angular';
+ import { InteractionStatus, RedirectRequest } from '@azure/msal-browser';
+ import { Subject } from 'rxjs';
+ import { filter, takeUntil } from 'rxjs/operators';
+
+ @Component({
+ selector: 'app-root',
+ templateUrl: './app.component.html',
+ styleUrls: ['./app.component.css']
+ })
+ export class AppComponent implements OnInit, OnDestroy {
+ title = 'msal-angular-tutorial';
+ isIframe = false;
+ loginDisplay = false;
+ private readonly _destroying$ = new Subject<void>();
+
+ constructor(@Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MsalGuardConfiguration, private broadcastService: MsalBroadcastService, private authService: MsalService) { }
+
+ ngOnInit() {
+ this.isIframe = window !== window.parent && !window.opener;
+
+ this.broadcastService.inProgress$
+ .pipe(
+ filter((status: InteractionStatus) => status === InteractionStatus.None),
+ takeUntil(this._destroying$)
+ )
+ .subscribe(() => {
+ this.setLoginDisplay();
+ })
+ }
+
+ login() {
+ if (this.msalGuardConfig.authRequest){
+ this.authService.loginRedirect({...this.msalGuardConfig.authRequest} as RedirectRequest);
+ } else {
+ this.authService.loginRedirect();
+ }
+ }
+
+ logout() { // Add log out function here
+ this.authService.logoutRedirect({
+ postLogoutRedirectUri: 'http://localhost:4200'
+ });
+ }
+
+ setLoginDisplay() {
+ this.loginDisplay = this.authService.instance.getAllAccounts().length > 0;
+ }
+
+ ngOnDestroy(): void {
+ this._destroying$.next(undefined);
+ this._destroying$.complete();
+ }
+ }
+ ```
### Sign out using pop-ups
-1. Update the code in *src/app/app.component.ts* to sign out a user using pop-ups:
-
- ```javascript
- import { Component, OnInit, OnDestroy, Inject } from '@angular/core';
- import { MsalService, MsalBroadcastService, MSAL_GUARD_CONFIG, MsalGuardConfiguration } from '@azure/msal-angular';
- import { InteractionStatus, PopupRequest } from '@azure/msal-browser';
- import { Subject } from 'rxjs';
- import { filter, takeUntil } from 'rxjs/operators';
-
- @Component({
- selector: 'app-root',
- templateUrl: './app.component.html',
- styleUrls: ['./app.component.css']
- })
- export class AppComponent implements OnInit, OnDestroy {
- title = 'msal-angular-tutorial';
- isIframe = false;
- loginDisplay = false;
- private readonly _destroying$ = new Subject<void>();
-
- constructor(@Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MsalGuardConfiguration, private broadcastService: MsalBroadcastService, private authService: MsalService) { }
-
- ngOnInit() {
- this.isIframe = window !== window.parent && !window.opener;
-
- this.broadcastService.inProgress$
- .pipe(
- filter((status: InteractionStatus) => status === InteractionStatus.None),
- takeUntil(this._destroying$)
- )
- .subscribe(() => {
- this.setLoginDisplay();
- })
- }
-
- login() {
- if (this.msalGuardConfig.authRequest){
- this.authService.loginPopup({...this.msalGuardConfig.authRequest} as PopupRequest)
- .subscribe({
- next: (result) => {
- console.log(result);
- this.setLoginDisplay();
- },
- error: (error) => console.log(error)
- });
- } else {
- this.authService.loginPopup()
- .subscribe({
- next: (result) => {
- console.log(result);
- this.setLoginDisplay();
- },
- error: (error) => console.log(error)
- });
- }
- }
-
- logout() { // Add log out function here
- this.authService.logoutPopup({
- mainWindowRedirectUri: "/"
- });
- }
-
- setLoginDisplay() {
- this.loginDisplay = this.authService.instance.getAllAccounts().length > 0;
- }
-
- ngOnDestroy(): void {
- this._destroying$.next(undefined);
- this._destroying$.complete();
- }
- }
- ```
+1. Update the code in _src/app/app.component.ts_ to sign out a user using pop-ups:
+
+ ```javascript
+ import { Component, OnInit, OnDestroy, Inject } from '@angular/core';
+ import { MsalService, MsalBroadcastService, MSAL_GUARD_CONFIG, MsalGuardConfiguration } from '@azure/msal-angular';
+ import { InteractionStatus, PopupRequest } from '@azure/msal-browser';
+ import { Subject } from 'rxjs';
+ import { filter, takeUntil } from 'rxjs/operators';
+
+ @Component({
+ selector: 'app-root',
+ templateUrl: './app.component.html',
+ styleUrls: ['./app.component.css']
+ })
+ export class AppComponent implements OnInit, OnDestroy {
+ title = 'msal-angular-tutorial';
+ isIframe = false;
+ loginDisplay = false;
+ private readonly _destroying$ = new Subject<void>();
+
+ constructor(@Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MsalGuardConfiguration, private broadcastService: MsalBroadcastService, private authService: MsalService) { }
+
+ ngOnInit() {
+ this.isIframe = window !== window.parent && !window.opener;
+
+ this.broadcastService.inProgress$
+ .pipe(
+ filter((status: InteractionStatus) => status === InteractionStatus.None),
+ takeUntil(this._destroying$)
+ )
+ .subscribe(() => {
+ this.setLoginDisplay();
+ })
+ }
+
+ login() {
+ if (this.msalGuardConfig.authRequest){
+ this.authService.loginPopup({...this.msalGuardConfig.authRequest} as PopupRequest)
+ .subscribe({
+ next: (result) => {
+ console.log(result);
+ this.setLoginDisplay();
+ },
+ error: (error) => console.log(error)
+ });
+ } else {
+ this.authService.loginPopup()
+ .subscribe({
+ next: (result) => {
+ console.log(result);
+ this.setLoginDisplay();
+ },
+ error: (error) => console.log(error)
+ });
+ }
+ }
+
+ logout() { // Add log out function here
+ this.authService.logoutPopup({
+ mainWindowRedirectUri: "/"
+ });
+ }
+
+ setLoginDisplay() {
+ this.loginDisplay = this.authService.instance.getAllAccounts().length > 0;
+ }
+
+ ngOnDestroy(): void {
+ this._destroying$.next(undefined);
+ this._destroying$.complete();
+ }
+ }
+ ```
## Test your code 1. Start the web server to listen to the port by running the following commands at a command-line prompt from the application folder:
- ```bash
- npm install
- npm start
- ```
+ ```bash
+ npm install
+ npm start
+ ```
+ 1. In your browser, enter `http://localhost:4200`, and you should see a page that looks like the following.
- :::image type="content" source="media/tutorial-v2-angular-auth-code/angular-01-not-signed-in.png" alt-text="Web browser displaying sign-in dialog":::
+ :::image type="content" source="media/tutorial-v2-angular-auth-code/angular-01-not-signed-in.png" alt-text="Web browser displaying sign-in dialog":::
1. Select **Accept** to grant the app permissions to your profile. This will happen the first time that you start to sign in.
- :::image type="content" source="media/tutorial-v2-javascript-auth-code/spa-02-consent-dialog.png" alt-text="Content dialog displayed in web browser":::
+ :::image type="content" source="media/tutorial-v2-javascript-auth-code/spa-02-consent-dialog.png" alt-text="Content dialog displayed in web browser":::
-1. After consenting, the following If you consent to the requested permissions, the web application shows a successful login page.
+1. After consenting, the following If you consent to the requested permissions, the web application shows a successful login page.
- :::image type="content" source="media/tutorial-v2-angular-auth-code/angular-02-signed-in.png" alt-text="Results of a successful sign-in in the web browser":::
+ :::image type="content" source="media/tutorial-v2-angular-auth-code/angular-02-signed-in.png" alt-text="Results of a successful sign-in in the web browser":::
1. Select **Profile** to view the user profile information returned in the response from the call to the Microsoft Graph API:
- :::image type="content" source="media/tutorial-v2-angular-auth-code/angular-03-profile-data.png" alt-text="Profile information from Microsoft Graph displayed in the browser":::
+ :::image type="content" source="media/tutorial-v2-angular-auth-code/angular-03-profile-data.png" alt-text="Profile information from Microsoft Graph displayed in the browser":::
## Add scopes and delegated permissions
The Microsoft Graph API requires the _User.Read_ scope to read a user's profile.
As you add scopes, your users might be prompted to provide extra consent for the added scopes.
->[!NOTE]
->The user might be prompted for additional consents as you increase the number of scopes.
+> [!NOTE]
+> The user might be prompted for additional consents as you increase the number of scopes.
[!INCLUDE [Help and support](../../../includes/active-directory-develop-help-support-include.md)]
As you add scopes, your users might be prompted to provide extra consent for the
Delve deeper into single-page application (SPA) development on the Microsoft identity platform in our multi-part article series.
-> [!div class="nextstepaction"]
+> [!div class="nextstepaction"]
> [Scenario: Single-page application](scenario-spa-overview.md)
active-directory Web App Quickstart Portal Dotnet Ciam https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/web-app-quickstart-portal-dotnet-ciam.md
Previously updated : 05/05/2023 Last updated : 05/22/2023 # Portal quickstart for ASP.NET web app
Last updated 05/05/2023
> [!div renderon="portal" id="display-on-portal" class="sxs-lookup"] > 1. Make sure you've installed [.NET SDK v7](https://dotnet.microsoft.com/download/dotnet/7.0) or later. >
-> 1. Unzip the sample app, `cd` into the app root folder, then run the following command:
+> 1. Unzip the sample app.
+>
+> 1. In your terminal, locate the sample app folder, then run the following command:
+>
> ```console > dotnet run > ```
+>
> 1. Open your browser, visit `https://localhost:7274`, select **Sign-in**, then follow the prompts. >
active-directory Web App Quickstart Portal Node Js Ciam https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/web-app-quickstart-portal-node-js-ciam.md
Previously updated : 05/05/2023 Last updated : 05/22/2023 # Portal quickstart for Node.js/Express web app
Last updated 05/05/2023
> [!div renderon="portal" id="display-on-portal" class="sxs-lookup"] > 1. Make sure you've installed [Node.js](https://nodejs.org/en/download/). >
-> 1. Unzip the sample app, `cd` into the folder that contains `package.json`, then run the following command:
+> 1. Unzip the sample app
+>
+> 1. In your terminal, locate the sample app folder, then run the following commands:
+>
> ```console
-> npm install && npm start
+> cd App && npm install && npm start
> ```
+>
> 1. Open your browser, visit `http://localhost:3000`, select **Sign-in**, then follow the prompts. >
active-directory Azuread Join Sso https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/devices/azuread-join-sso.md
Azure AD Connect or Azure AD Connect cloud sync synchronize your on-premises ide
> Additional configuration is required when passwordless authentication to Azure AD joined devices is used. > > For FIDO2 security key based passwordless authentication and Windows Hello for Business Hybrid Cloud Trust, see [Enable passwordless security key sign-in to on-premises resources with Azure Active Directory](../authentication/howto-authentication-passwordless-security-key-on-premises.md).
+>
+> For Windows Hello for Business Cloud Kerberos Trust, see [Configure and provision Windows Hello for Business - cloud Kerberos trust](/windows/security/identity-protection/hello-for-business/hello-hybrid-cloud-kerberos-trust-provision).
> > For Windows Hello for Business Hybrid Key Trust, see [Configure Azure AD joined devices for On-premises Single-Sign On using Windows Hello for Business](/windows/security/identity-protection/hello-for-business/hello-hybrid-aadj-sso-base). >
active-directory Concept Azure Ad Register https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/devices/concept-azure-ad-register.md
+ # Azure AD registered devices The goal of Azure AD registered - also known as Workplace joined - devices is to provide your users with support for bring your own device (BYOD) or mobile device scenarios. In these scenarios, a user can access your organizationΓÇÖs resources using a personal device.
The goal of Azure AD registered - also known as Workplace joined - devices is to
| | Bring your own device | | | Mobile devices | | **Device ownership** | User or Organization |
-| **Operating Systems** | Windows 10 or newer, iOS, Android, macOS, Ubuntu 20.04/22.04 |
+| **Operating Systems** | Windows 10 or newer, iOS, Android, macOS, Ubuntu 20.04/22.04 LTS|
| **Provisioning** | Windows 10 or newer ΓÇô Settings | | | iOS/Android ΓÇô Company Portal or Microsoft Authenticator app | | | macOS ΓÇô Company Portal |
-| | Linux - Intune Agent |
+| | Linux - Intune Agent |
| **Device sign in options** | End-user local credentials | | | Password | | | Windows Hello |
Another user wants to access their organizational email on their personal Androi
- [Manage device identities using the Azure portal](device-management-azure-portal.md) - [Manage stale devices in Azure AD](manage-stale-devices.md) - [Register your personal device on your work or school network](https://support.microsoft.com/account-billing/register-your-personal-device-on-your-work-or-school-network-8803dd61-a613-45e3-ae6c-bd1ab25bf8a8)++
active-directory Groups Dynamic Membership https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/enterprise-users/groups-dynamic-membership.md
user.assignedPlans -any (assignedPlan.service -eq "SCO" -and assignedPlan.capabi
The following expression selects all users who have no assigned service plan: ```
-user.assignedPlans -all (assignedPlan.servicePlanId -eq "")
+user.assignedPlans -all (assignedPlan.servicePlanId -ne null)
``` ### Using the underscore (\_) syntax
active-directory B2b Fundamentals https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/b2b-fundamentals.md
Previously updated : 08/30/2022 Last updated : 05/17/2023
This article contains recommendations and best practices for business-to-busines
| | | | Consult Azure AD guidance for securing your collaboration with external partners | Learn how to take a holistic governance approach to your organization's collaboration with external partners by following the recommendations in [Securing external collaboration in Azure Active Directory and Microsoft 365](../fundamentals/secure-external-access-resources.md). | | Carefully plan your cross-tenant access and external collaboration settings | Azure AD gives you a flexible set of controls for managing collaboration with external users and organizations. You can allow or block all collaboration, or configure collaboration only for specific organizations, users, and apps. Before configuring settings for cross-tenant access and external collaboration, take a careful inventory of the organizations you work and partner with. Then determine if you want to enable [B2B direct connect](b2b-direct-connect-overview.md) or [B2B collaboration](what-is-b2b.md) with other Azure AD tenants, and how you want to manage [B2B collaboration invitations](external-collaboration-settings-configure.md). |
+| Use tenant restrictions to control how external accounts are used on your networks and managed devices. | With tenant restrictions, you can prevent your users from using accounts they've created in unknown tenants or accounts they've received from external organizations. We recommend you disallow these accounts and use B2B collaboration instead. |
| For an optimal sign-in experience, federate with identity providers | Whenever possible, federate directly with identity providers to allow invited users to sign in to your shared apps and resources without having to create Microsoft Accounts (MSAs) or Azure AD accounts. You can use the [Google federation feature](google-federation.md) to allow B2B guest users to sign in with their Google accounts. Or, you can use the [SAML/WS-Fed identity provider (preview) feature](direct-federation.md) to set up federation with any organization whose identity provider (IdP) supports the SAML 2.0 or WS-Fed protocol. | | Use the Email one-time passcode feature for B2B guests who canΓÇÖt authenticate by other means | The [Email one-time passcode](one-time-passcode.md) feature authenticates B2B guest users when they can't be authenticated through other means like Azure AD, a Microsoft account (MSA), or Google federation. When the guest user redeems an invitation or accesses a shared resource, they can request a temporary code, which is sent to their email address. Then they enter this code to continue signing in. | | Add company branding to your sign-in page | You can customize your sign-in page so it's more intuitive for your B2B guest users. See how to [add company branding to sign in and Access Panel pages](../fundamentals/customize-branding.md). |
active-directory Cross Tenant Access Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/cross-tenant-access-overview.md
Previously updated : 05/05/2023 Last updated : 05/17/2023
For more information, see [Configure cross-tenant synchronization](../multi-tena
To configure this setting using Microsoft Graph, see the [Update crossTenantIdentitySyncPolicyPartner](/graph/api/crosstenantidentitysyncpolicypartner-update) API. For more information, see [Configure cross-tenant synchronization](../multi-tenant-organizations/cross-tenant-synchronization-configure.md).
+## Tenant restrictions
+
+With **Tenant Restrictions** settings, you can control the types of external accounts your users can use on the devices you manage, including:
+
+- Accounts your users have created in unknown tenants.
+- Accounts that external organizations have given to your users so they can access that organization's resources.
+
+We recommend configuring your tenant restrictions to disallow these types of external accounts and use B2B collaboration instead. B2B collaboration gives you the ability to:
+
+- Use Conditional Access and force multi-factor authentication for B2B collaboration users.
+- Manage inbound and outbound access.
+- Terminate sessions and credentials when a B2B collaboration user's employment status changes or their credentials are breached.
+- Use sign-in logs to view details about the B2B collaboration user.
+
+Tenant restrictions are independent of other cross-tenant access settings, so any inbound, outbound, or trust settings you've configured won't impact tenant restrictions. For details about configuring tenant restrictions, see [Set up tenant restrictions V2](tenant-restrictions-v2.md).
+ ## Microsoft cloud settings Microsoft cloud settings let you collaborate with organizations from different Microsoft Azure clouds. With Microsoft cloud settings, you can establish mutual B2B collaboration between the following clouds:
active-directory Azure Rest Api Operations Tenant Management https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/azure-rest-api-operations-tenant-management.md
+
+ Title: Tenant management with Azure REST API
+description: Learn how to manage your Azure AD for customers tenant by calling the Azure REST API.
++++++++ Last updated : 05/23/2023++
+#Customer intent: As a dev, devops, I want to learn how to use the Azure REST API to manage my Azure AD for customers tenant.
++
+# Manage Azure Active Directory for customers tenant with Azure REST API
+You can manage your Azure Active Directory for your tenant using the Azure REST API. The management of resources related to tenant management supports the following API operations. Each link in the following sections targets the corresponding page within the Microsoft Graph API reference for that operation.
+
+## Tenant Management operations
+
+You can perform tenant management operations with your Azure Active Directory for customers tenant with the following operations:
+
+- [Create or Update](/rest/api/azurestack/directory-tenants/create-or-update)
+- [Delete](/rest/api/azurestack/directory-tenants/delete)
+- [Get](/rest/api/azurestack/directory-tenants/get)
+- [List](/rest/api/azurestack/directory-tenants/list)
+
+## Next steps
+
+- To learn more about programmatic management, see [Microsoft Graph overview](/graph/overview).
active-directory Concept Planning Your Solution https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/concept-planning-your-solution.md
When planning for configuring company branding, language customizations, and cus
- **Multifactor authentication (MFA)**. You can also enable application access security by enforcing MFA, which adds a critical second layer of security to user sign-ins by requiring verification via email one-time passcode. Learn more about [MFA for customers](concept-security-customers.md#multifactor-authentication). -- **Security and governance**. Learn about [security and governance](concept-security-customers.md) features available in your customer tenant, such as Identity Protection and Identity Governance.
+- **Security and governance**. Learn about [security and governance](concept-security-customers.md) features available in your customer tenant, such as Identity Protection.
### How to customize and secure your sign-in
active-directory Concept Security Customers https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/concept-security-customers.md
Azure AD [Identity Protection](../../identity-protection/overview-identity-prote
Identity Protection comes with risk reports that can be used to investigate identity risks in customer tenants. For details, see [Investigate risk with Identity Protection in Azure AD for customers](how-to-identity-protection-customers.md).
-## Identity governance
-
-Identity Governance in a customer tenant enables you to mitigate access risk by protecting, monitoring, and auditing access to your critical assets. It includes identity access lifecycle capabilities that help you manage access over time as needs change. Identity Governance also helps you scale efficiently to be able to develop and enforce access policy and controls on an ongoing basis.
-
-Start using Identity Governance in the [Microsoft Entra admin center](https://entra.microsoft.com) by selecting the **Identity Governance** tile. On the Identity Governance page, find information for getting started with capabilities such as Entitlement Management, access reviews, and Privileged Identity Management.
- ## Next steps - [Planning for customer identity and access management](concept-planning-your-solution.md)
active-directory Concept Supported Features Customers https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/concept-supported-features-customers.md
Previously updated : 05/10/2023 Last updated : 05/17/2023
Azure Active Directory (Azure AD) for customers is designed for businesses that
Although workforce tenants and customer tenants are built on the same underlying Microsoft Entra platform, there are some feature differences. The following table compares the features available in each type of tenant.
+> [!NOTE]
+> During preview, features or capabilities that require a premium license are unavailable in customer tenants.
+ |Feature |Workforce tenant | Customer tenant | |||| | **External Identities** | Invite partners and other external users to your workforce tenant for collaboration. External users become guests in your workforce directory. | Enable self-service sign-up for customers and authorize access to apps. Users are added to your directory as customer accounts. |
active-directory Faq Customers https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/faq-customers.md
+
+ Title: Frequently asked questions
+description: Find answers to some of the most frequently asked questions about Microsoft Entra External ID for customers, also known as Azure Active Directory (Azure AD) for customers.
+++++++ Last updated : 05/23/2023++++
+# Microsoft Entra External ID for customers frequently asked questions
+
+This article answers frequently asked questions about Microsoft Entra External ID for customers, also known as Azure Active Directory (Azure AD) for customers. This document offers guidance to help customers better understand MicrosoftΓÇÖs current external identities capabilities and the journey for our next generation platform (Microsoft Entra External ID).
+
+This FAQ references customer identity and access management (CIAM). CIAM is an industry recognized category that covers solutions that manage identity, authentication, and authorization for external identity use cases (partners, customers, and citizens). Common functionality includes self-service capabilities, adaptive access, single sign-on (SSO), and bring your own identity (BYOI).
+
+## Frequently asked questions
+
+### What is Microsoft Entra External ID?
+
+Microsoft Entra External ID is our next generation CIAM platform that represents an evolutionary step in unifying secure and engaging experiences across all external identities including customers, partners, citizens, and others, within a single, integrated platform.
+
+### Is Microsoft Entra External ID a new name for Azure AD B2C?
+
+No, this isn't a new name for Azure AD B2C. Microsoft Entra External ID builds on the success of our existing Azure AD B2C technologies but represents our future for CIAM. The new platform serves as the foundation for rapid innovation, features, and capabilities that address use cases across all external users.
+
+### What is the release date for Microsoft Entra External ID?
+
+Microsoft Entra External ID (for customers) entered preview at Microsoft Build 2023. The existing B2B collaboration feature remains unchanged.
+
+### What is the pricing for Microsoft Entra External ID?
+
+Microsoft Entra External ID (for customers) is in preview, so no pricing details are available at this time. The pricing for existing B2B collaboration features is unchanged.
+
+### How does Microsoft Entra External ID affect B2B collaboration?
+
+There are no changes to the existing B2B collaboration features or related pricing. Upon general availability, Microsoft Entra External ID will address use cases across all external user identities, including partners, customers, citizens, and others.
+
+### How long will you support the current Azure AD B2C platform?
+
+We remain fully committed to support of the current Azure AD B2C product. The SLA remains unchanged, and weΓÇÖll continue investments in the product to ensure security, availability, and reliability. For existing Azure AD B2C customers that have an interest in moving to the next generation platform, more details will be made available after general availability.
+
+### I have many investments tied up in Azure AD B2C, both in code artifacts and CI/CD pipelines. Do I need to plan for a migration or some other effort?
+
+We recognize the large investments in building and managing custom policies. We’ve listened to many customers who, like you, have shared that custom policies are too hard to build and manage. Our next generation platform will resolve the need for intricate custom policies. In addition to many other platform and feature improvements, you’ll have equivalent functionality in the new platform but a much easier way to build and manage it. We expect to share migration options closer to general availability of the next generation platform.
+
+### IΓÇÖve heard I can preview the Microsoft Entra External ID platform. Where can I learn more?
+
+You can learn more about the preview and the features we're delivering on the new platform by visiting the Microsoft Entra External ID for customers [developer center](https://aka.ms/ciam/dev).
+
+### As a new customer, which solution is a better fit, Azure AD B2C or Microsoft Entra External ID (preview)?
+
+Opt for the current Azure AD B2C product if:
+
+- You have an immediate need to deploy a production ready build for customer-facing apps.
+
+ > [!NOTE]
+ > Keep in mind that the next generation Microsoft Entra External ID platform represents the future of CIAM for Microsoft, and rapid innovation, new features and capabilities will be focused on this platform. By choosing the next generation platform from the start, you will receive the benefits of rapid innovation and a future-proof architecture.
+
+Opt for the next generation Microsoft Entra External ID platform if:
+
+- YouΓÇÖre starting fresh building identities into apps or you're in the early stages of product discovery.
+- The benefits of rapid innovation, new features and capabilities are a priority.
+
+## Next steps
+
+[Learn more about Microsoft Entra External ID for customers](index.yml)
active-directory How To Management Apis Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/how-to-management-apis-overview.md
+
+ Title: Management APIs for Azure Active Directory for customers
+description: Learn how to manage resources in an Azure AD for customers tenant programmatically by using APIs.
++++++++ Last updated : 05/23/2023++
+#Customer intent: As a dev, devops, I want to learn how to programmatically manage my Azure Active Directory for customers tenant using APIs.
+
+# Management APIs for Azure Active Directory for customers
+
+Using APIs allows you to programmatically manage resources in your Azure Active Directory (AD) for customers directory. Depending on the resource you want to manage, you can use the Microsoft Graph API or the Azure REST API. Both APIs are supported for the management of resources related to Azure AD for customers. Each link in the following sections targets the corresponding page within the relevant reference for that operation. You can use this article to determine which API to use for the resource you want to manage.
+
+## Azure REST API
+Using the Azure REST API, you can manage your Azure AD for customers tenant. The following Azure REST API operations are supported for the management of resources related to Azure AD for customers.
+
+* [Tenant Management operations](azure-rest-api-operations-tenant-management.md)
+
+## Microsoft Graph API
+
+Querying and managing resources in your Azure AD for customers directory is done through the Microsoft Graph API. The following Microsoft Graph API operations are supported for the management of resources related to Azure AD for customers.
+
+* [User flows operations](microsoft-graph-operations-user-flow.md)
+
+* [Company branding operations](microsoft-graph-operations-branding.md)
+
+* [Custom extensions](microsoft-graph-operations-custom-extensions.md)
+
+### Register a Microsoft Graph API application
+
+In order to use the Microsoft Graph API, you need to register an application in your Azure AD for customers tenant. This application will be used to authenticate and authorize your application to call the Microsoft Graph API.
+
+During registration, you'll specify a **Redirect URI** which redirects the user after authentication with Azure Active Directory. The app registration process also generates a unique identifier known as an **Application (client) ID**.
+
+The following steps show you how to register your app in the Microsoft Entra admin center:
+
+1. Sign in to the [Microsoft Entra admin center](https://entra.microsoft.com/).
+
+1. If you have access to multiple tenants, make sure you use the directory that contains your Azure AD for customers tenant:
+
+ 1. Select the **Directories + subscriptions** icon in the portal toolbar.
+
+ 1. On the **Portal settings | Directories + subscriptions** page, find your Azure AD for customers directory in the **Directory name** list, and then select **Switch**.
+
+1. On the sidebar menu, select **Azure Active Directory**.
+
+1. Select **Applications**, then select **App Registrations**.
+
+1. Select **+ New registration**.
+
+1. In the **Register an application page** that appears, enter your application's registration information:
+
+ 1. In the **Name** section, enter a meaningful application name that will be displayed to users of the app, for example *ciam-client-app*.
+
+ 1. Under **Supported account types**, select **Accounts in this organizational directory only**.
+
+1. Select **Register**.
+
+1. The application's **Overview pane** is displayed when registration is complete. Record the **Directory (tenant) ID** and the **Application (client) ID** to be used in your application source code.
+
+### Grant API Access to your application
+
+For your application to access data in Microsoft Graph API, grant the registered application the relevant application permissions. The effective permissions of your application are the full level of privileges implied by the permission. For example, to create, read, update, and delete every user in your Azure AD for customers tenant, add the User.ReadWrite.All permission.
+
+1. Under **Manage**, select **API permissions**.
+
+1. Under **Configured permissions**, select **Add a permission**.
+
+1. Select the **Microsoft APIs** tab, then select **Microsoft Graph**.
+
+1. Select **Application permissions**.
+
+1. Expand the appropriate permission group and select the check box of the permission to grant to your management application. For example:
+
+ * **User** > **User.ReadWrite.All**: For user migration or user management scenarios.
+
+ * **Group** > **Group.ReadWrite.All**: For creating groups, read and update group memberships, and delete groups.
+
+ * **AuditLog** > **AuditLog.Read.All**: For reading the directory's audit logs.
+
+ * **Policy** > **Policy.ReadWrite.TrustFramework**: For continuous integration/continuous delivery (CI/CD) scenarios. For example, custom policy deployment with Azure Pipelines.
+
+1. Select **Add permissions**. As directed, wait a few minutes before proceeding to the next step.
+
+1. Select **Grant admin consent for (your tenant name)**.
+
+1. If you are not currently signed-in with Global Administrator account, sign in with an account in your Azure AD for customers tenant that's been assigned at least the *Cloud application administrator* role and then select **Grant admin consent for (your tenant name)**.
+
+1. Select **Refresh**, and then verify that "Granted for ..." appears under **Status**. It might take a few minutes for the permissions to propagate.
+
+After you have registered your application, you need to add a client secret to your application. This client secret will be used to authenticate your application to call the Microsoft Graph API.
+
+The application uses the client secret to prove its identity when it requests for tokens.
+
+1. From the **App registrations** page, select the application that you created (such as *ciam-client-app*) to open its **Overview** page.
+
+1. Under **Manage**, select **Certificates & secrets**.
+
+1. Select **New client secret**.
+
+1. In the **Description** box, enter a description for the client secret (for example, `ciam app client secret`).
+
+1. Under **Expires**, select a duration for which the secret is valid (per your organizations security rules), and then select **Add**.
+
+1. Record the secret's **Value**. You'll use this value for configuration in a later step.
+
+> [!NOTE]
+> The secret value won't be displayed again, and is not retrievable by any means, after you navigate away from the certificates and secrets page, so make sure you record it. <br> For enhanced security, consider using **certificates** instead of client secrets.
+## Next steps
+
+- To learn more about the Microsoft Graph API, see [Microsoft Graph overview](/graph/overview).
+
active-directory Microsoft Graph Operations Branding https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/microsoft-graph-operations-branding.md
+
+ Title: Manage branding resources with Microsoft Graph
+description: Learn how to manage branding resources in an Azure AD for customers tenant by calling the Microsoft Graph API. You use an application identity to automate the process.
++++++++ Last updated : 05/23/2023++
+#Customer intent: As a dev, devops, I want to learn how to use the Microsoft Graph to manage operations in my Azure AD customer tenant.
++
+# Manage Azure Active Directory for customers company branding with the Microsoft Graph API
+
+Using the Microsoft Graph API allows you to manage resources in your Azure Active Directory (AD) for customers directory. The following Microsoft Graph API operations are supported for the management of resources related to branding. Each link in the following sections targets the corresponding page within the Microsoft Graph API reference for that operation.
+
+> [!NOTE]
+> You can also programmatically create an Azure AD for customers directory itself, along with the corresponding Azure resource linked to an Azure subscription. This functionality isn't exposed through the Microsoft Graph API, but through the Azure REST API. For more information, see [Directory Tenants - Create Or Update](/rest/api/azurestack/directory-tenants/create-or-update).
+## Company branding
+
+Customers can customize look and feel of sign-in pages which appear when users sign in to tenant-specific apps. Developers can also read the company's branding information and customize their app experience to tailor it specifically for the signed-in user using their company's branding.
+
+You can't change your original configuration's default language. However, companies can add different branding based on locale. For language-specific branding, see the organizationalBrandingLocalization object.
+
+- [Get company branding](/graph/api/organizationalbranding-get)
+- [Update company branding](/graph/api/organizationalbranding-update)
+
+## Company branding - localization
+
+Resource that supports managing language-specific branding. While you can't change your original configuration's language, this resource allows you to create a new configuration for a different language.
+
+- [List localizations](/graph/api/organizationalbranding-list-localizations)
+- [Create localization](/graph/api/organizationalbranding-post-localizations)
+- [Get localization](/graph/api/organizationalbrandinglocalization-get)
+- [Update localization](/graph/api/organizationalbrandinglocalization-update)
+- [Delete localization](/graph/api/organizationalbrandinglocalization-delete)
++
+## How to programmatically manage Microsoft Graph
+
+When you want to manage Microsoft Graph, you can either do it as the application using the application permissions, or you can use delegated permissions. For delegated permissions, either the user or an administrator consents to the permissions that the app requests. The app is delegated with the permission to act as a signed-in user when it makes calls to the target resource. Application permissions are used by apps that do not require a signed in user present and thus require application permissions. Because of this, only administrators can consent to application permissions.
+
+> [!NOTE]
+> Delegated permissions for users signing in through user flows or custom policies cannot be used against delegated permissions for Microsoft Graph API.
+
+## Next steps
+
+- To learn more about the Microsoft Graph API, see [Microsoft Graph overview](/graph/overview).
active-directory Microsoft Graph Operations Custom Extensions https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/microsoft-graph-operations-custom-extensions.md
+
+ Title: Manage custom extension resources with Microsoft Graph
+description: Learn how to manage custom extension resources in an Azure AD for customers tenant by calling the Microsoft Graph API and using an application identity to automate the process.
++++++++ Last updated : 05/23/2023++
+#Customer intent: As a dev, devops, I want to learn how to use the Microsoft Graph to manage custom extension operations in my Azure AD customer tenant.
++
+# Manage Azure Active Directory (AD) for customers custom extension resources with Microsoft Graph
+
+Using the Microsoft Graph API allows you to manage resources in your Azure AD for customers directory. The following Microsoft Graph API operations are supported for the management of resources related to custom extensions. Each link in the following sections targets the corresponding page within the Microsoft Graph API reference for that operation.
+
+> [!NOTE]
+> You can also programmatically create an Azure AD for customers directory itself, along with the corresponding Azure resource linked to an Azure subscription. This functionality isn't exposed through the Microsoft Graph API, but through the Azure REST API. For more information, see [Directory Tenants - Create Or Update](/rest/api/azurestack/directory-tenants/create-or-update).
+## Custom authentication extensions (Preview)
+
+Custom authentication extensions define interactions with external systems during a user authentication session. This is an abstract type that's inherited by the onTokenIssuanceStartCustomExtension derived type.
+
+- [List custom authentication extensions](/graph/api/identitycontainer-list-customauthenticationextensions)
+- [Create custom authentication extension](/graph/api/identitycontainer-post-customauthenticationextensions)
+- [Get custom authentication extension](/graph/api/customauthenticationextension-get)
+- [Update custom authentication extension](/graph/api/customauthenticationextension-update)
+- [Delete custom authentication extension](/graph/api/customauthenticationextension-delete)
+
+## How to programmatically manage Microsoft Graph
+
+When you want to manage Microsoft Graph, you can either do it as the application using the application permissions, or you can use delegated permissions. For delegated permissions, either the user or an administrator consents to the permissions that the app requests. The app is delegated with the permission to act as a signed-in user when it makes calls to the target resource. Application permissions are used by apps that do not require a signed in user present and thus require application permissions. Because of this, only administrators can consent to application permissions.
+
+> [!NOTE]
+> Delegated permissions for users signing in through user flows or custom policies cannot be used against delegated permissions for Microsoft Graph API.
+## Next steps
+
+- To learn more about the Microsoft Graph API, see [Microsoft Graph overview](/graph/overview).
active-directory Microsoft Graph Operations User Flow https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/microsoft-graph-operations-user-flow.md
+
+ Title: Manage user flow resources with Microsoft Graph
+description: Learn how to manage user flow resources in an Azure AD for customers tenant by calling the Microsoft Graph API and using an application identity to automate the process.
++++++++ Last updated : 05/23/2023++
+#Customer intent: As a dev, devops, I want to learn how to use the Microsoft Graph to manage user flow operations in my Azure AD customer tenant.
++
+# Manage Azure Active Directory for customers user flow resources with Microsoft Graph
+
+Using the Microsoft Graph API allows you to manage resources in your Azure Active Directory (AD) for customers directory. The following Microsoft Graph API operations are supported for the management of resources related to user flows. Each link in the following sections targets the corresponding page within the Microsoft Graph API reference for that operation.
+
+> [!NOTE]
+> You can also programmatically create an Azure AD for customers directory itself, along with the corresponding Azure resource linked to an Azure subscription. This functionality isn't exposed through the Microsoft Graph API, but through the Azure REST API. For more information, see [Directory Tenants - Create Or Update](/rest/api/azurestack/directory-tenants/create-or-update).
+
+## User flows (Preview)
+
+User flows are used to enable a self-service sign-up experience for users within an Azure AD customer tenant. User flows define the experience the end user sees while signing up, including which identity providers they can use to authenticate, along with which attributes are collected as part of the sign-up process. The sign-up experience for an application is defined by a user flow, and multiple applications can use the same user flow.
+
+Configure pre-built policies for sign-up, sign-in, combined sign-up and sign-in, password reset, and profile update.
+
+- [List user flows](/graph/api/identitycontainer-list-authenticationeventsflows)
+- [Create a user flow](/graph/api/identitycontainer-post-authenticationeventsflows)
+- [Get a user flow](/graph/api/authenticationeventsflow-get)
+- [Delete a user flow](/graph/api/authenticationeventsflow-delete)
+
+## Identity providers (Preview)
+
+Get the identity providers that are defined for an external identities self-service sign-up user flow that's represented by an externalUsersSelfServiceSignupEventsFlow object type.
+
+- [List identity providers](/graph/api/onauthenticationmethodloadstartexternalusersselfservicesignup-list-identityproviders)
+- [Add identity provider](/graph/api/onauthenticationmethodloadstartexternalusersselfservicesignup-post-identityproviders)
+- [Remove identity provider](/graph/api/onauthenticationmethodloadstartexternalusersselfservicesignup-delete-identityproviders)
+
+## Attributes (Preview)
+
+- [List attributes](/graph/api/onattributecollectionexternalusersselfservicesignup-list-attributes)
+- [Add attributes](/graph/api/onattributecollectionexternalusersselfservicesignup-post-attributes)
+- [Remove attributes](/graph/api/onattributecollectionexternalusersselfservicesignup-delete-attributes)
++
+## How to programmatically manage Microsoft Graph
+
+When you want to manage Microsoft Graph, you can either do it as the application using the application permissions, or you can use delegated permissions. For delegated permissions, either the user or an administrator consents to the permissions that the app requests. The app is delegated with the permission to act as a signed-in user when it makes calls to the target resource. Application permissions are used by apps that do not require a signed in user present and thus require application permissions. Because of this, only administrators can consent to application permissions.
+
+> [!NOTE]
+> Delegated permissions for users signing in through user flows or custom policies cannot be used against delegated permissions for Microsoft Graph API.
+
+## Next steps
+
+- To learn more about the Microsoft Graph API, see [Microsoft Graph overview](/graph/overview).
active-directory Overview Customers Ciam https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/overview-customers-ciam.md
#Customer intent: As a dev, devops, or it admin, I want to learn about identity solutions for customer-facing apps
-# What is Azure Active Directory for customers?
+# What is Microsoft Entra External ID for customers?
-Azure Active Directory (Azure AD) for customers is MicrosoftΓÇÖs new customer identity and access management (CIAM) solution. For organizations and businesses that want to make their public-facing applications available to consumers, Azure AD makes it easy to add CIAM features like self-service registration, personalized sign-in experiences, and customer account management. Because these CIAM capabilities are built into Azure AD, you also benefit from platform features like enhanced security, compliance, and scalability.
+Microsoft Entra External ID for customers, also known as Azure Active Directory (Azure AD) for customers, is MicrosoftΓÇÖs new customer identity and access management (CIAM) solution. For organizations and businesses that want to make their public-facing applications available to consumers, Azure AD makes it easy to add CIAM features like self-service registration, personalized sign-in experiences, and customer account management. Because these CIAM capabilities are built into Azure AD, you also benefit from platform features like enhanced security, compliance, and scalability.
:::image type="content" source="media/overview-customers-ciam/overview-ciam.png" alt-text="Diagram showing an overview customer identity and access management." border="false":::
active-directory Quickstart Trial Setup https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/quickstart-trial-setup.md
Title: Quickstart - Set up a customer tenant free trial
description: Use our quickstart to set up the customer tenant free trial. -+
Last updated 05/10/2023
-#Customer intent: As a dev, devops, or it admin, I want to set up the customer tenant free trial.
+#Customer intent: As a dev, devops, or IT admin, I want to set up the customer tenant free trial.
# Quickstart: Get started with Azure AD for customers (Preview)
Your free trial of a customer tenant provides you with the opportunity to try ne
During the free trial period, you'll have access to all product features with few exceptions. See the following table for comparison: | Features | Azure AD for customers Trial (without credit card) | Azure Active Directory account includes Partners (needs credit card) |
-|-|--||
+|-|:--:|::|
| **Self-service account experiences** (Sign-up, sign-in, and password recovery.) | :heavy_check_mark: | :heavy_check_mark: | | **MFA** (With email OTP.) | :heavy_check_mark: | :heavy_check_mark: | | **Custom token augmentation** (From external sources.) | :heavy_check_mark: | :heavy_check_mark: |
During the free trial period, you'll have access to all product features with fe
## Sign up to your customer tenant free trial
-1. Open your browser and visit [https://aka.ms/ciam-free-trial](https://aka.ms/ciam-free-trial?wt.mc_id=ciamcustomertenantfreetrial_linkclick_content_cnl).
+1. Open your browser and visit <a href="https://aka.ms/ciam-free-trial?wt.mc_id=ciamcustomertenantfreetrial_linkclick_content_cnl" target="_blank">https://aka.ms/ciam-free-trial</a>.
1. You can sign in to the customer trial tenant using your personal account, and your Microsoft account (MSA) or GitHub account. 1. You'll notice that a domain name and location have been set for you. The domain name and the data location can't be changed later in the free trial. Select **Change settings** if you would like to adjust them. 1. Select **Continue** and hang on while we set up your trial. It will take a few minutes for the trial to become ready for the next step.
active-directory Tenant Restrictions V2 https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/tenant-restrictions-v2.md
+
+ Title: Configure tenant restrictions - Azure AD
+description: Use tenant restrictions to control the types of external accounts your users can use on your networks and the devices you manage. You can scope settings to apps, groups, and users for specified tenants.
++++ Last updated : 05/17/2023++++++++
+# Set up tenant restrictions V2 (Preview)
+
+> [!NOTE]
+> The **Tenant restrictions** settings, which are included with cross-tenant access settings, are preview features of Azure Active Directory. For more information about previews, see [Supplemental Terms of Use for Microsoft Azure Previews](https://azure.microsoft.com/support/legal/preview-supplemental-terms/).
+
+For increased security, you can limit what your users can access when they use an external account to sign in from your networks or devices. With the **Tenant restrictions** settings included with [cross-tenant access settings](cross-tenant-access-overview.md), you can control the external apps that your Windows device users can access when they're using external accounts.
+
+For example, let's say a user in your organization has created a separate account in an unknown tenant, or an external organization has given your user an account that lets them sign in to their organization. You can use tenant restrictions to prevent the user from using some or all external apps while they're signed in with the external account on your network or devices.
++
+| | |
+|||
+|**1** | Contoso configures **Tenant restrictions** in their cross-tenant access settings to block all external accounts and external apps. Contoso enforces the policy on each Windows device by updating the local computer configuration with Contoso's tenant ID and the tenant restrictions policy ID. |
+|**2** | A user with a Contoso-managed Windows device tries to sign in to an external app using an account from an unknown tenant. The Windows device adds an HTTP header to the authentication request. The header contains Contoso's tenant ID and the tenant restrictions policy ID. |
+|**3** | *Authentication plane protection:* Azure AD uses the header in the authentication request to look up the tenant restrictions policy in the Azure AD cloud. Because Contoso's policy blocks external accounts from accessing external tenants, the request is blocked at the authentication level. |
+|**4** | *Data plane protection:* The user tries to access the external application by copying an authentication response token they obtained outside of Contoso's network and pasting it into the Windows device. However, Azure AD compares the claim in the token to the HTTP header added by the Windows device. Because they don't match, Azure AD blocks the session so the user can't access the application. |
+|||
+
+This article describes how to configure tenant restrictions V2 using the Azure portal. You can also use the [Microsoft Graph cross-tenant access API](/graph/api/resources/crosstenantaccesspolicy-overview?view=graph-rest-beta&preserve-view=true) to create these same tenant restrictions policies.
+
+## Tenant restrictions V2 overview
+
+Azure AD offers two versions of tenant restrictions policies:
+
+- Tenant restrictions V1, described in [Set up tenant restrictions V1 for B2B collaboration](../manage-apps/tenant-restrictions.md), let you restrict access to external tenants by configuring a tenant allowlist on your corporate proxy.
+- Tenant restrictions V2, described in this article, let you apply policies directly to your users' Windows devices instead of through your corporate proxy, reducing overhead and providing more flexible, granular control.
+
+### Supported scenarios
+
+Tenant restrictions V2 can be scoped to specific users, groups, organizations, or external apps. Apps built on the Windows operating system networking stack are protected, including:
+
+- All Office apps (all versions/release channels).
+- Universal Windows Platform (UWP) .NET applications.
+- Microsoft Edge and all websites in Microsoft Edge.
+- Auth plane protection for all applications that authenticate with Azure AD, including all Microsoft first-party applications and any third-party applications that use Azure AD for authentication.
+- Data plane protection for SharePoint Online and Exchange Online.
+- Anonymous access protection for SharePoint Online, OneDrive for business, and Teams (with Federation Controls configured).
+- Authentication and Data plane protection for Microsoft tenant or Consumer accounts.
+
+### Unsupported scenarios
+
+- Chrome, Firefox, and .NET applications such as PowerShell.
+- Anonymous blocking to consumer OneDrive account. Customers can work around at proxy level by blocking https://onedrive.live.com/.
+- When a user accesses a third-party app, like Slack, using an anonymous link or non-Azure AD account.
+- When a user copies an Azure AD-issued token from a home machine to a work machine and uses it to access a third-party app like Slack.
+
+### Compare Tenant restrictions V1 and V2
+
+The following table compares the features in each version.
+
+| |Tenant restrictions V1 |Tenant restrictions V2 |
+|-|||
+|**Policy enforcement** | The corporate proxy enforces the tenant restriction policy in the Azure AD control plane. | Windows devices are configured to point Microsoft traffic to the tenant restriction policy, and the policy is enforced in the cloud. Tenant restrictions are enforced upon resource access, providing data path coverage and protection against token infiltration. For non-Windows devices, the corporate proxy enforces the policy. |
+|**Malicious tenant requests** | Azure AD blocks malicious tenant authentication requests to provide authentication plane protection. | Azure AD blocks malicious tenant authentication requests to provide authentication plane protection. |
+|**Granularity** | Limited. | Tenant, user, group, and application granularity. |
+|**Anonymous access** | Anonymous access to Teams meetings and file sharing is allowed. | Anonymous access to Teams meetings is blocked. Access to anonymously shared resources (ΓÇ£Anyone with the linkΓÇ¥) is blocked. |
+|**Microsoft accounts (MSA)** |Uses a Restrict-MSA header to block access to consumer accounts. | Allows control of Microsoft account (MSA and Live ID) authentication on both the identity and data planes. For example, if you enforce tenant restrictions by default, you can create a Microsoft accounts-specific policy that allows users to access specific apps with their Microsoft accounts, for example: <br> Microsoft Learn (app ID `18fbca16-2224-45f6-85b0-f7bf2b39b3f3`), or <br> Microsoft Enterprise Skills Initiative (app ID `195e7f27-02f9-4045-9a91-cd2fa1c2af2f`). |
+|**Proxy management** | Manage corporate proxies by adding tenants to the Azure AD traffic allowlist. | N/A |
+|**Platform support** |Supported on all platforms. Provides only authentication plane protection. | Supported on Windows operating systems and Microsoft Edge by adding the tenant restrictions V2 header using Windows Group Policy. This configuration provides both authentication plane and data plane protection.<br></br>On other platforms, like macOS, Chrome browser, and .NET applications, tenant restrictions V2 are supported when the tenant restrictions V2 header is added by the corporate proxy. This configuration provides only authentication plane protection. |
+|**Portal support** |No user interface in the Azure portal for configuring the policy. | User interface available in the Azure portal for setting up the cloud policy. |
+|**Unsupported apps** | N/A | Block unsupported app use with Microsoft endpoints by using Windows Defender Application Control (WDAC) or Windows Firewall (for example, for Chrome, Firefox, and so on). See [Block Chrome, Firefox and .NET applications like PowerShell](#block-chrome-firefox-and-net-applications-like-powershell). |
+
+### Migrate tenant restrictions V1 policies to V2
+
+Along with using tenant restrictions V2 to manage access for your Windows device users, we recommend configuring your corporate proxy to enforce tenant restrictions V2 to manage other devices and apps in your corporate network. Although configuring tenant restrictions on your corporate proxy doesn't provide data plane protection, it provides authentication plane protection. For details, see [Step 4: Set up tenant restrictions V2 on your corporate proxy](#step-4-set-up-tenant-restrictions-v2-on-your-corporate-proxy).
+
+### Tenant restrictions vs. inbound and outbound settings
+
+Although tenant restrictions are configured along with your cross-tenant access settings, they operate separately from inbound and outbound access settings. Cross-tenant access settings give you control when users sign in with an account from your organization. By contrast, tenant restrictions give you control when users are using an external account. Your inbound and outbound settings for B2B collaboration and B2B direct connect don't affect (and are unaffected by) your tenant restrictions settings.
+
+Think of the different cross-tenant access settings this way:
+
+- Inbound settings control *external* account access to your *internal* apps.
+- Outbound settings control *internal* account access to *external* apps.
+- Tenant restrictions control *external* account access to *external* apps.
+
+### Tenant restrictions vs. B2B collaboration
+
+When your users need access to external organizations and apps, we recommend enabling tenant restrictions to block external accounts and use B2B collaboration instead. B2B collaboration gives you the ability to:
+
+- Use Conditional Access and force multi-factor authentication for B2B collaboration users.
+- Manage inbound and outbound access.
+- Terminate sessions and credentials when a B2B collaboration user's employment status changes or their credentials are breached.
+- Use sign-in logs to view details about the B2B collaboration user.
+
+### Tenant restrictions and Microsoft Teams
+
+For greater control over access to Teams meetings, you can use [Federation Controls](/microsoftteams/manage-external-access) in Teams to allow or block specific tenants, along with tenant restrictions V2 to block anonymous access to Teams meetings. Tenant restrictions prevent users from using an externally issued identity to join Teams meetings.
+
+For example, suppose Contoso uses Teams Federation Controls to block the Fabrikam tenant. If someone with a Contoso device uses a Fabrikam account to join a Contoso Teams meeting, they're allowed into the meeting as an anonymous user. Now, if Contoso also enables tenant restrictions V2, Teams blocks anonymous access, and the user isn't able to join the meeting.
+
+To enforce tenant restrictions for Teams, you need to configure tenant restrictions V2 in your Azure AD cross-tenant access settings. You also need to set up Federation Controls in the Teams Admin portal and restart Teams. Tenant restrictions implemented on the corporate proxy won't block anonymous access to Teams meetings, SharePoint files, and other resources that don't require authentication.
+
+### Tenant restrictions V2 and SharePoint Online
+
+SharePoint Online supports tenant restrictions v2 on both the authentication plane and the data plane.
+
+#### Authenticated sessions
+
+When tenant restrictions v2 are enabled on a tenant, unauthorized access is blocked during authentication. If a user directly accesses a SharePoint Online resource without an authenticated session, they're prompted to sign in. If the tenant restrictions v2 policy allows access, the user can access the resource; otherwise, access is blocked.
+
+#### Anonymous access
+
+If a user tries to access an anonymous file using their home tenant/corporate identity, they'll be able to access the file. But if the user tries to access the anonymous file using any externally issued identity, access is blocked.
+
+For example, say a user is using a managed device configured with tenant restrictions V2 for Tenant A. If they select an anonymous access link generated for a Tenant A resource, they should be able to access the resource anonymously. But if they select an anonymous access link generated for Tenant B SharePoint Online, they're prompted to sign-in. Anonymous access to resources using an externally issued identity is always blocked.
+
+### Tenant restrictions V2 and OneDrive
+
+Like SharePoint, OneDrive for Business supports tenant restrictions v2 on both the authentication plane and the data plane. Blocking anonymous access to OneDrive for business is also supported. For example, tenant restrictions V2 policy enforcement works at the OneDrive for Business endpoint (microsoft-my.sharepoint.com).
+
+However, OneDrive for consumer accounts (via onedrive.live.com) doesn't support tenant restrictions V2. Some URLs (such as onedrive.live.com) are unconverged and use our legacy stack. When a user accesses the OneDrive consumer tenant through these URLs, the policy isn't enforced. As a workaround, you can block https://onedrive.live.com/ at the proxy level.
+
+### Tenant restrictions V2 and non-Windows platforms
+
+For non-Windows platforms, you can break and inspect traffic to add the tenant restrictions V2 parameters into the header via proxy. However, some platforms don't support break and inspect, so tenant restrictions V2 won't work. For these platforms, the following features of Azure AD can provide protection:
+
+- [Conditional Access: Only allow use of managed/compliant devices](/mem/intune/protect/conditional-access-intune-common-ways-use#device-based-conditional-access)
+- [Conditional Access: Manage access for guest/external users](/microsoft-365/security/office-365-security/identity-access-policies-guest-access)
+- [B2B Collaboration: Restrict outbound rules by Cross-tenant access for the same tenants listed in the parameter "Restrict-Access-To-Tenants"](../external-identities/cross-tenant-access-settings-b2b-collaboration.md)
+- [B2B Collaboration: Restrict invitations to B2B users to the same domains listed in the "Restrict-Access-To-Tenants" parameter](../external-identities/allow-deny-list.md)
+- [Application management: Restrict how users consent to applications](../manage-apps/configure-user-consent.md)
+- [Intune: Apply App Policy through Intune to restrict usage of managed apps to only the UPN of the account that enrolled the device](/mem/intune/apps/app-configuration-policies-use-android) (under **Allow only configured organization accounts in apps**)
+
+Although these alternatives provide protection, certain scenarios can only be covered through tenant restrictions, such as the use of a browser to access Microsoft 365 services through the web instead of the dedicated app.
+
+## Prerequisites
+
+To configure tenant restrictions, you'll need the following:
+
+- Azure AD Premium P1 or P2
+- Account with a role of Global administrator or Security administrator
+- Windows devices running Windows 10, Windows 11, or Windows Server 2022 with the latest updates
+
+## Step 1: Configure default tenant restrictions V2
+
+Settings for tenant restrictions V2 are located in the Azure portal under **Cross-tenant access settings**. First, configure the default tenant restrictions you want to apply to all users, groups, apps, and organizations. Then, if you need partner-specific configurations, you can add a partner's organization and customize any settings that differ from your defaults.
+
+### To configure default tenant restrictions
+
+1. Sign in to the [Azure portal](https://portal.azure.com) using a Global administrator, Security administrator, or Conditional Access administrator account. Then open the **Azure Active Directory** service.
+
+1. Select **External Identities**
+
+1. Select **Cross-tenant access settings**, and then select the **Default settings** tab.
+
+ :::image type="content" source="media/tenant-restrictions-v2/tenant-restrictions-default-section.png" alt-text="Screenshot showing the tenant restrictions section on the default settings tab.":::
+
+1. Scroll to the **Tenant restrictions (Preview)** section.
+
+1. Select the **Edit tenant restrictions defaults** link.
+
+ :::image type="content" source="media/tenant-restrictions-v2/tenant-restrictions-default-section-edit.png" alt-text="Screenshot showing edit buttons for Default settings.":::
+
+1. If a default policy doesn't exist yet in the tenant, next to the **Policy ID** you'll see a **Create Policy** link. Select this link.
+
+ :::image type="content" source="media/tenant-restrictions-v2/create-tenant-restrictions-policy.png" alt-text="Screenshot showing the Create Policy link.":::
+
+1. The **Tenant restrictions** page displays both your **Tenant ID** and your tenant restrictions **Policy ID**. Use the copy icons to copy both of these values. You'll use them when you configure Windows clients to enable tenant restrictions.
+
+ :::image type="content" source="media/tenant-restrictions-v2/tenant-policy-id.png" alt-text="Screenshot showing the tenant ID and policy ID for the tenant restrictions.":::
+
+1. Select the **External users and groups** tab. Under **Access status**, choose one of the following:
+
+ - **Allow access**: Allows all users who are signed in with external accounts to access external apps (specified on the **External applications** tab).
+ - **Block access**: Blocks all users who are signed in with external accounts from accessing external apps (specified on the **External applications** tab).
+
+ :::image type="content" source="media/tenant-restrictions-v2/tenant-restrictions-default-external-users-block.png" alt-text="Screenshot showing settings for access status.":::
+
+ > [!NOTE]
+ > Default settings can't be scoped to individual accounts or groups, so **Applies to** always equals **All &lt;your tenant&gt; users and groups**. Be aware that if you block access for all users and groups, you also need to block access to all external applications (on the **External applications** tab).
+
+1. Select the **External applications** tab. Under **Access status**, choose one of the following:
+
+ - **Allow access**: Allows all users who are signed in with external accounts to access the apps specified in the **Applies to** section.
+ - **Block access**: Blocks all users who are signed in with external accounts from accessing the apps specified in the **Applies to** section.
+
+ :::image type="content" source="media/tenant-restrictions-v2/tenant-restrictions-default-applications.png" alt-text="Screenshot showing access status on the external applications tab.":::
+
+1. Under **Applies to**, select one of the following:
+
+ - **All external applications**: Applies the action you chose under **Access status** to all external applications. If you block access to all external applications, you also need to block access for all of your users and groups (on the **Users and groups** tab).
+ - **Select external applications**: Lets you choose the external applications you want the action under **Access status** to apply to. To select applications, choose **Add Microsoft applications** or **Add other applications**. Then search by the application name or the application ID (either the *client app ID* or the *resource app ID*) and select the app. ([See a list of IDs for commonly used Microsoft applications.](https://learn.microsoft.com/troubleshoot/azure/active-directory/verify-first-party-apps-sign-in)) If you want to add more apps, use the **Add** button. When you're done, select **Submit**.
+
+ :::image type="content" source="media/tenant-restrictions-v2/tenant-restrictions-default-applications-applies-to.png" alt-text="Screenshot showing selecting the external applications tab.":::
+
+1. Select **Save**.
+
+## Step 2: Configure tenant restrictions V2 for specific partners
+
+Suppose you use tenant restrictions to block access by default, but you want to allow users to access certain applications using their own external accounts. For example, say you want users to be able to access Microsoft Learn with their own Microsoft accounts (MSAs). The instructions in this section describe how to add organization-specific settings that take precedence over the default settings.
+
+### Example: Configure tenant restrictions V2 to allow Microsoft Accounts
+
+1. Sign in to the [Azure portal](https://portal.azure.com) using a Global administrator, Security administrator, or Conditional Access administrator account. Then open the **Azure Active Directory** service.
+1. Select **External Identities**, and then select **Cross-tenant access settings**.
+1. Select **Organizational settings**. (If the organization you want to add has already been added to the list, you can skip adding it and go directly to modifying the settings.)
+1. Select **Add organization**.
+1. On the **Add organization** pane, type the full domain name (or tenant ID) for the organization.
+
+ **Example**: Search for the following Microsoft Accounts tenant ID:
+
+ ```
+ 9188040d-6c67-4c5b-b112-36a304b66dad
+ ```
+
+ :::image type="content" source="media/tenant-restrictions-v2/add-organization-microsoft-accounts.png" alt-text="Screenshot showing adding an organization.":::
+
+1. Select the organization in the search results, and then select **Add**.
+
+1. The organization appears in the **Organizational settings** list. Scroll to the right to see the **Tenant restrictions** column. At this point, all tenant restrictions settings for this organization are inherited from your default settings. To change the settings for this organization, select the **Inherited from default** link under the **Tenant restrictions** column.
+
+ :::image type="content" source="media/tenant-restrictions-v2/tenant-restrictions-edit-link.png" alt-text="Screenshot showing an organization added with default settings.":::
+
+1. The **Tenant restrictions (Preview)** page for the organization appears. Copy the values for **Tenant ID** and **Policy ID**. You'll use them when you configure Windows clients to enable tenant restrictions.
+
+ :::image type="content" source="media/tenant-restrictions-v2/org-tenant-policy-id.png" alt-text="Screenshot showing tenant ID and policy ID.":::
+
+1. Select **Customize settings**, and then select the **External users and groups** tab. Under **Access status**, choose an option:
+
+ - **Allow access**: Allows users and groups specified under **Applies to** who are signed in with external accounts to access external apps (specified on the **External applications** tab).
+ - **Block access**: Blocks users and groups specified under **Applies to** who are signed in with external accounts from accessing external apps (specified on the **External applications** tab).
+
+ > [!NOTE]
+ > For our Microsoft Accounts example, we select **Allow access**.
+
+ :::image type="content" source="media/tenant-restrictions-v2/tenant-restrictions-external-users-organizational.png" alt-text="Screenshot showing selecting the external users allow access selections.":::
+
+1. Under **Applies to**, choose either **All &lt;your tenant&gt; users and groups** or **Select &lt;your tenant&gt; users and groups**. If you choose **Select &lt;your tenant&gt; users and groups**, perform these steps for each user or group you want to add:
+
+ - Select **Add external users and groups**.
+ - In the **Select** pane, type the user name or group name in the search box.
+ - Select the user or group in the search results.
+ - If you want to add more, select **Add** and repeat these steps. When you're done selecting the users and groups you want to add, select **Submit**.
+
+ > [!NOTE]
+ > For our Microsoft Accounts example, we select **All Contoso users and groups**.
+
+ :::image type="content" source="media/tenant-restrictions-v2/tenant-restrictions-external-users-organizational-applies-to.png" alt-text="Screenshot showing selecting the external users and groups selections.":::
+
+1. Select the **External applications** tab. Under **Access status**, choose whether to allow or block access to external applications.
+
+ - **Allow access**: Allows the external applications specified under **Applies to** to be accessed by your users when using external accounts.
+ - **Block access**: Blocks the external applications specified under **Applies to** from being accessed by your users when using external accounts.
+
+ > [!NOTE]
+ > For our Microsoft Accounts example, we select **Allow access**.
+
+ :::image type="content" source="media/tenant-restrictions-v2/tenant-restrictions-edit-applications-access-status.png" alt-text="Screenshot showing the Access status selections.":::
+
+1. Under **Applies to**, select one of the following:
+
+ - **All external applications**: Applies the action you chose under **Access status** to all external applications.
+ - **Select external applications**: Applies the action you chose under **Access status** to all external applications.
+
+ > [!NOTE]
+ >
+ > - For our Microsoft Accounts example, we choose **Select external applications**.
+ > - If you block access to all external applications, you also need to block access for all of your users and groups (on the **Users and groups** tab).
+
+ :::image type="content" source="media/tenant-restrictions-v2/tenant-restrictions-edit-applications-applies-to.png" alt-text="Screenshot showing selecting the Applies to selections.":::
+
+1. If you chose **Select external applications**, do the following for each application you want to add:
+
+ - Select **Add Microsoft applications** or **Add other applications**. For our Microsoft Learn example, we choose **Add other applications**.
+ - In the search box, type the application name or the application ID (either the *client app ID* or the *resource app ID*). ([See a list of IDs for commonly used Microsoft applications.](https://learn.microsoft.com/troubleshoot/azure/active-directory/verify-first-party-apps-sign-in)) For our Microsoft Learn example, we enter the application ID `18fbca16-2224-45f6-85b0-f7bf2b39b3f3`.
+ - Select the application in the search results, and then select **Add**.
+ - Repeat for each application you want to add.
+ - When you're done selecting applications, select **Submit**.
+
+ :::image type="content" source="media/tenant-restrictions-v2/add-learning-app.png" alt-text="Screenshot showing selecting applications.":::
+
+1. The applications you selected are listed on the **External applications** tab. Select **Save**.
+
+ :::image type="content" source="media/tenant-restrictions-v2/add-app-save.png" alt-text="Screenshot showing the selected application.":::
+
+## Step 3: Enable tenant restrictions on Windows managed devices
+
+After you create a tenant restrictions V2 policy, you can enforce the policy on each Windows 10, Windows 11, and Windows Server 2022 device by adding your tenant ID and the policy ID to the device's **Tenant Restrictions** configuration. When tenant restrictions are enabled on a Windows device, corporate proxies aren't required for policy enforcement. Devices don't need to be Azure AD managed to enforce tenant restrictions V2; domain-joined devices that are managed with Group Policy are also supported.
+
+### Administrative Templates (.admx) for Windows 10 November 2021 Update (21H2) and Group policy settings
+
+You can use Group Policy to deploy the tenant restrictions configuration to Windows devices. Refer to these resources:
+
+- [Administrative Templates for Windows 10](https://www.microsoft.com/download/details.aspx?id=104042)
+- [Group Policy Settings Reference Spreadsheet for Windows 10](https://www.microsoft.com/download/details.aspx?id=104043)
+
+### Test the policies on a device
+
+To test the tenant restrictions V2 policy on a device, follow these steps.
+
+> [!NOTE]
+>
+> - The device must be running Windows 10, Windows 11, or Windows Server 2022 with the latest updates.
+
+1. On the Windows computer, press the Windows key, type **gpedit**, and then select **Edit group policy (Control panel)**.
+
+1. Go to **Computer Configuration** > **Administrative Templates** > **Windows Components** > **Tenant Restrictions**.
+
+1. Right-click **Cloud Policy Details** in the right pane, and then select **Edit**.
+
+1. Retrieve the **Tenant ID** and **Policy ID** you recorded earlier (in step 7 under [To configure default tenant restrictions](#to-configure-default-tenant-restrictions)) and enter them in the following fields (leave all other fields blank):
+
+ - **Azure AD Directory ID**: Enter the **Tenant ID** you recorded earlier. You can also find your tenant ID in the [Azure portal](https://portal.azure.com) by navigating to **Azure Active Directory** > **Properties** and copying the **Tenant ID**.
+ - **Policy GUID**: The ID for your cross-tenant access policy. It's the **Policy ID** you recorded earlier. You can also find this ID by using the Graph Explorer command [https://graph.microsoft.com/v1.0/policies/crossTenantAccessPolicy/default](https://graph.microsoft.com/v1.0/policies/crossTenantAccessPolicy/default).
+
+ :::image type="content" source="media/tenant-restrictions-v2/windows-cloud-policy-details.png" alt-text="Screenshot of Windows Cloud Policy Details.":::
+
+1. Select **OK**.
+
+## Step 4: Set up tenant restrictions V2 on your corporate proxy
+
+Tenant restrictions V2 policies can't be directly enforced on non-Windows 10, Windows 11, or Windows Server 2022 devices, such as Mac computers, mobile devices, unsupported Windows applications, and Chrome browsers. To ensure sign-ins are restricted on all devices and apps in your corporate network, configure your corporate proxy to enforce tenant restrictions V2. Although configuring tenant restrictions on your corporate proxy don't provide data plane protection, it does provide authentication plane protection.
+
+> [!IMPORTANT]
+> If you've previously set up tenant restrictions, you'll need to stop sending `restrict-msa` to login.live.com. Otherwise, the new settings will conflict with your existing instructions to the MSA login service.
+
+1. Configure the tenant restrictions V2 header as follows:
+
+ |Header name |Header Value |
+ |||
+ |`sec-Restrict-Tenant-Access-Policy` | `<DirectoryId>:<policyGuid>` |
+
+ - `DirectoryID` is your Azure AD tenant ID. Find this value by signing in to the Azure portal as an administrator, select **Azure Active Directory**, then select **Properties**.
+ - `policyGUID` is the object ID for your cross-tenant access policy. Find this value by calling `/crosstenantaccesspolicy/default` and using the ΓÇ£idΓÇ¥ field returned.
+
+1. On your corporate proxy, send the tenant restrictions V2 header to the following Microsoft login domains:
+
+ - login.live.com
+ - login.microsoft.com
+ - login.microsoftonline.com
+ - login.windows.net
+
+ This header enforces your tenant restrictions V2 policy on all sign-ins on your network. This header won't block anonymous access to Teams meetings, SharePoint files, or other resources that don't require authentication.
+
+## Block Chrome, Firefox and .NET applications like PowerShell
+
+You can use the Windows Firewall feature to block unprotected apps from accessing Microsoft resources via Chrome, Firefox, and .NET applications like PowerShell. The applications that would be blocked/allowed as per the tenant restrictions V2 policy.
+
+For example, if a customer adds PowerShell to their tenant restrictions V2 CIP policy and has graph.microsoft.com in their tenant restrictions V2 policy endpoint list, then PowerShell should be able to access it with firewall enabled.
+
+1. On the Windows computer, press the Windows key, type **gpedit**, and then select **Edit group policy (Control panel)**.
+
+1. Go to **Computer Configuration** > **Administrative Templates** > **Windows Components** > **Tenant Restrictions**.
+
+1. Right-click **Cloud Policy Details** in the right pane, and then select **Edit**.
+
+1. Select the **Enable firewall protection of Microsoft endpoints** checkbox, and then select **OK**.
++
+After you enable the firewall setting, try signing in using a Chrome browser. Sign-in should fail with the following message:
+
+
+### View tenant restrictions V2 events
+
+View events related to tenant restrictions in Event Viewer.
+
+1. In Event Viewer, open **Applications and Services Logs**.
+1. Navigate to **Microsoft** > **Windows** > **TenantRestrictions** > **Operational** and look for events.
++
+## Audit logs
+
+The Azure AD audit logs provide records of system and user activities, including activities initiated by guest users. To access audit logs, in Azure Active Directory, under Monitoring, select Audit logs. To access audit logs of one specific user, select Azure Active Directory > Users > select the user > Audit logs.
+
+
+You can get more details about each event listed in the audit log. For example, let's look at the user update details.
+
+
+You can also export these logs from Azure AD and use the reporting tool of your choice to get customized reports.
+
+## Microsoft Graph
+
+Use Microsoft Graph to get policy information:
+
+### HTTP request
+
+- Get default policy
+
+ ``` http
+ GET https://graph.microsoft.com/beta/policies/crossTenantAccessPolicy/default
+ ```
+
+- Reset to system default
+
+ ``` http
+ POST https://graph.microsoft.com/betefault
+ ```
+
+- Get partner configuration
+
+ ``` http
+ GET https://graph.microsoft.com/beta/policies/crossTenantAccessPolicy/partners
+ ```
+
+- Get a specific partner configuration
+
+ ``` http
+ GET https://graph.microsoft.com/beta/policies/crossTenantAccessPolicy/partners/9188040d-6c67-4c5b-b112-36a304b66dad
+ ```
+
+- Update a specific partner
+
+ ``` http
+ PATCH https://graph.microsoft.com/beta/policies/crossTenantAccessPolicy/partners/9188040d-6c67-4c5b-b112-36a304b66dad
+ ```
+
+### Request body
+
+``` json
+"tenantRestrictions": {
+ "usersAndGroups": {
+ "accessType": "allowed",
+ "targets": [
+ {
+ "target": "AllUsers",
+ "targetType": "user"
+ }
+ ]
+ },
+ "applications": {
+ "accessType": "allowed",
+ "targets": [
+ {
+ "target": "AllApplications",
+ "targetType": "application"
+ }
+ ]
+ }
+}
+```
+
+## Next steps
+
+See [Configure external collaboration settings](external-collaboration-settings-configure.md) for B2B collaboration with non-Azure AD identities, social identities, and non-IT managed external accounts.
active-directory Use Dynamic Groups https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/use-dynamic-groups.md
Previously updated : 10/13/2022 Last updated : 05/22/2023
+
+# Customer intent: As a tenant administrator, I want to learn how to use dynamic groups with B2B collaboration.
# Create dynamic groups in Azure Active Directory B2B collaboration
The following image shows the rule syntax for a dynamic group modified to includ
## Next steps - [B2B collaboration user properties](user-properties.md)-- [Adding a B2B collaboration user to a role](./add-users-administrator.md)
+- [Reset redemptions status](reset-redemption-status.md)
- [Conditional Access for B2B collaboration users](authentication-conditional-access.md)
active-directory User Properties https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/user-properties.md
Title: Properties of a B2B guest user
-description: Azure Active Directory B2B invited guest user properties and states before and after invitation redemption
+description: Azure Active Directory B2B collaboration guest user properties and states before and after invitation redemption.
Previously updated : 01/23/2023 Last updated : 05/18/2023 +
+# Customer intent: As a tenant administrator, I want to learn about B2B collaboration guest user properties and states before and after invitation redemption.
# Properties of an Azure Active Directory B2B collaboration user
If a guest user accepts your invitation and they subsequently change their email
## Next steps
-* [What is Azure AD B2B collaboration?](what-is-b2b.md)
+* [B2B user claims mapping](claims-mapping.md)
* [B2B collaboration user tokens](user-token.md)
-* [B2B collaboration user claims mapping](claims-mapping.md)
+* [B2B collaboration for hybrid organizations](hybrid-organizations.md)
active-directory Whats Deprecated Azure Ad https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/fundamentals/whats-deprecated-azure-ad.md
Use the following table to learn about changes including deprecations, retiremen
|Functionality, feature, or service|Change|Change date | |||:|
-|[Azure AD Domain Services virtual network deployments](../../active-directory-domain-services/migrate-from-classic-vnet.md)|Retirement|Mar 1, 2023|
+|[Azure AD Domain Services virtual network deployments](../../active-directory-domain-services/overview.md)|Retirement|Mar 1, 2023|
|[License management API, PowerShell](https://techcommunity.microsoft.com/t5/microsoft-entra-azure-ad-blog/migrate-your-apps-to-access-the-license-managements-apis-from/ba-p/2464366)|Retirement|*Mar 31, 2023| \* The legacy license management API and PowerShell cmdlets will not work for **new tenants** created after Nov 1, 2022.
active-directory Whats New Archive https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/fundamentals/whats-new-archive.md
For more information, see: [What is risk?](../identity-protection/concept-identi
In September 2022 we've added the following 15 new applications in our App gallery with Federation support:
-[RocketReach SSO](../saas-apps/rocketreach-sso-tutorial.md), [Arena EU](../saas-apps/arena-eu-tutorial.md), [Zola](../saas-apps/zola-tutorial.md), [FourKites SAML2.0 SSO for Tracking](../saas-apps/fourkites-tutorial.md), [Syniverse Customer Portal](../saas-apps/syniverse-customer-portal-tutorial.md), [Rimo](https://rimo.app/), [Q Ware CMMS](https://qware.app/), [Mapiq (OIDC)](https://app.mapiq.com/), [NICE Cxone](../saas-apps/nice-cxone-tutorial.md), [dominKnow|ONE](../saas-apps/dominknowone-tutorial.md), [Waynbo for Azure AD](https://webportal-eu.waynbo.com/Login), [innDex](https://web.inndex.co.uk/azure/authorize), [Profiler Software](https://www.profiler.net.au/), [Trotto go links](https://trot.to/_/auth/login), [AsignetSSOIntegration](../saas-apps/asignet-sso-tutorial.md).
+[RocketReach SSO](../saas-apps/rocketreach-sso-tutorial.md), [Arena EU](../saas-apps/arena-eu-tutorial.md), [Zola](../saas-apps/zola-tutorial.md), [FourKites SAML2.0 SSO for Tracking](../saas-apps/fourkites-tutorial.md), [Syniverse Customer Portal](../saas-apps/syniverse-customer-portal-tutorial.md), [Rimo](https://rimo.app/), [Q Ware CMMS](https://qware.app/), Mapiq (OIDC), [NICE Cxone](../saas-apps/nice-cxone-tutorial.md), [dominKnow|ONE](../saas-apps/dominknowone-tutorial.md), [Waynbo for Azure AD](https://webportal-eu.waynbo.com/Login), [innDex](https://web.inndex.co.uk/azure/authorize), [Profiler Software](https://www.profiler.net.au/), [Trotto go links](https://trot.to/_/auth/login), [AsignetSSOIntegration](../saas-apps/asignet-sso-tutorial.md).
You can also find the documentation of all the applications from here https://aka.ms/AppsTutorial,
Azure Service Health will soon support service outage notifications to Tenant Ad
In May 2022 we've added the following 25 new applications in our App gallery with Federation support:
-[UserZoom](../saas-apps/userzoom-tutorial.md), [AMX Mobile](https://www.amxsolutions.co.uk/), [i-Sight](../saas-apps/isight-tutorial.md), [Method InSight](https://digital.methodrecycling.com/), [Chronus SAML](../saas-apps/chronus-saml-tutorial.md), [Attendant Console for Microsoft Teams](https://attendant.anywhere365.io/), [Skopenow](../saas-apps/skopenow-tutorial.md), [Fidelity PlanViewer](../saas-apps/fidelity-planviewer-tutorial.md), [Lyve Cloud](../saas-apps/lyve-cloud-tutorial.md), [Framer](../saas-apps/framer-tutorial.md), [Authomize](../saas-apps/authomize-tutorial.md), [gamba!](../saas-apps/gamba-tutorial.md), [Datto File Protection Single Sign On](../saas-apps/datto-file-protection-tutorial.md), [LONEALERT](https://portal.lonealert.co.uk/auth/azure/saml/signin), [Payfactors](https://pf.payfactors.com/client/auth/login), [deBroome Brand Portal](../saas-apps/debroome-brand-portal-tutorial.md), [TeamSlide](../saas-apps/teamslide-tutorial.md), [Sensera Systems](https://sitecloud.senserasystems.com/), [YEAP](https://prismaonline.propay.be/logon/login.aspx), [Monaca Education](https://monaca.education/j), [OpenForms](https://login.openforms.com/Login).
+[UserZoom](../saas-apps/userzoom-tutorial.md), [AMX Mobile](https://www.amxsolutions.co.uk/), [i-Sight](../saas-apps/isight-tutorial.md), Method InSight, [Chronus SAML](../saas-apps/chronus-saml-tutorial.md), [Attendant Console for Microsoft Teams](https://attendant.anywhere365.io/), [Skopenow](../saas-apps/skopenow-tutorial.md), [Fidelity PlanViewer](../saas-apps/fidelity-planviewer-tutorial.md), [Lyve Cloud](../saas-apps/lyve-cloud-tutorial.md), [Framer](../saas-apps/framer-tutorial.md), [Authomize](../saas-apps/authomize-tutorial.md), [gamba!](../saas-apps/gamba-tutorial.md), [Datto File Protection Single Sign On](../saas-apps/datto-file-protection-tutorial.md), [LONEALERT](https://portal.lonealert.co.uk/auth/azure/saml/signin), [Payfactors](https://pf.payfactors.com/client/auth/login), [deBroome Brand Portal](../saas-apps/debroome-brand-portal-tutorial.md), [TeamSlide](../saas-apps/teamslide-tutorial.md), [Sensera Systems](https://sitecloud.senserasystems.com/), [YEAP](https://prismaonline.propay.be/logon/login.aspx), [Monaca Education](https://monaca.education/j), [OpenForms](https://login.openforms.com/Login).
You can also find the documentation of all the applications from here https://aka.ms/AppsTutorial,
Privileged Role Administrators can now create Azure AD access reviews on Azure A
-### General Availability - Azure AD single Sign-on and device-based Conditional Access support in Firefox on Windows 10/11
+### General Availability - Azure AD single sign-on and device-based Conditional Access support in Firefox on Windows 10/11
**Type:** New feature **Service category:** Authentications (Logins)
For more information, see [What is automated SaaS app user provisioning in Azure
In January 2021 we have added following 29 new applications in our App gallery with Federation support:
-[mySCView](https://www.myscview.com/), [Talentech](https://talentech.com/contact/), [Bipsync](https://www.bipsync.com/), [OroTimesheet](https://app.orotimesheet.com/login.php), [Mio](https://app.m.io/auth/install/microsoft?scopetype=hub), [Sovelto Easy](https://login.soveltoeasy.fi/), [Supportbench](https://account.supportbench.net/agent/login/),[Bienvenue Formation](https://formation.bienvenue.pro/login), [AIDA Healthcare SSO](https://aidaforparents.com/login/organizations), [International SOS Assistance Products](../saas-apps/international-sos-assistance-products-tutorial.md), [NAVEX One](../saas-apps/navex-one-tutorial.md), [LabLog](../saas-apps/lablog-tutorial.md), [Oktopost SAML](../saas-apps/oktopost-saml-tutorial.md), [EPHOTO DAM](../saas-apps/ephoto-dam-tutorial.md), [Notion](../saas-apps/notion-tutorial.md), [Syndio](../saas-apps/syndio-tutorial.md), [Yello Enterprise](../saas-apps/yello-enterprise-tutorial.md), [Timeclock 365 SAML](../saas-apps/timeclock-365-saml-tutorial.md), [Nalco E-data](https://www.ecolab.com/), [Vacancy Filler](https://app.vacancy-filler.co.uk/VFMVC/Account/Login), [Synerise AI Growth Ecosystem](../saas-apps/synerise-ai-growth-ecosystem-tutorial.md), [Imperva Data Security](../saas-apps/imperva-data-security-tutorial.md), [Illusive Networks](../saas-apps/illusive-networks-tutorial.md), [Proware](../saas-apps/proware-tutorial.md), [Splan Visitor](../saas-apps/splan-visitor-tutorial.md), [Aruba User Experience Insight](../saas-apps/aruba-user-experience-insight-tutorial.md), [Contentsquare SSO](../saas-apps/contentsquare-sso-tutorial.md), [Perimeter 81](../saas-apps/perimeter-81-tutorial.md), [Burp Suite Enterprise Edition](../saas-apps/burp-suite-enterprise-edition-tutorial.md)
+[mySCView](https://www.myscview.com/), [Talentech](https://talentech.com/contact/), [Bipsync](https://www.bipsync.com/), [OroTimesheet](https://app.orotimesheet.com/login.php), [Mio](https://app.m.io/auth/install/microsoft?scopetype=hub), Sovelto Easy, [Supportbench](https://account.supportbench.net/agent/login/),[Bienvenue Formation](https://formation.bienvenue.pro/login), [AIDA Healthcare SSO](https://aidaforparents.com/login/organizations), [International SOS Assistance Products](../saas-apps/international-sos-assistance-products-tutorial.md), [NAVEX One](../saas-apps/navex-one-tutorial.md), [LabLog](../saas-apps/lablog-tutorial.md), [Oktopost SAML](../saas-apps/oktopost-saml-tutorial.md), [EPHOTO DAM](../saas-apps/ephoto-dam-tutorial.md), [Notion](../saas-apps/notion-tutorial.md), [Syndio](../saas-apps/syndio-tutorial.md), [Yello Enterprise](../saas-apps/yello-enterprise-tutorial.md), [Timeclock 365 SAML](../saas-apps/timeclock-365-saml-tutorial.md), [Nalco E-data](https://www.ecolab.com/), [Vacancy Filler](https://app.vacancy-filler.co.uk/VFMVC/Account/Login), [Synerise AI Growth Ecosystem](../saas-apps/synerise-ai-growth-ecosystem-tutorial.md), [Imperva Data Security](../saas-apps/imperva-data-security-tutorial.md), [Illusive Networks](../saas-apps/illusive-networks-tutorial.md), [Proware](../saas-apps/proware-tutorial.md), [Splan Visitor](../saas-apps/splan-visitor-tutorial.md), [Aruba User Experience Insight](../saas-apps/aruba-user-experience-insight-tutorial.md), [Contentsquare SSO](../saas-apps/contentsquare-sso-tutorial.md), [Perimeter 81](../saas-apps/perimeter-81-tutorial.md), [Burp Suite Enterprise Edition](../saas-apps/burp-suite-enterprise-edition-tutorial.md)
You can also find the documentation of all the applications from here https://aka.ms/AppsTutorial
The user risk condition requires Azure AD Premium P2 because it uses Azure Ident
**Service category:** Enterprise Apps **Product capability:** SSO
-Some SAML applications require SPNameQualifier to be returned in the assertion subject when requested. Now Azure AD responds correctly when a SPNameQualifier is requested in the request NameID policy. This also works for SP initiated sign-in, and IdP initiated sign-in will follow. To learn more about SAML protocol in Azure Active Directory, see [Single Sign-On SAML protocol](../develop/single-sign-on-saml-protocol.md).
+Some SAML applications require SPNameQualifier to be returned in the assertion subject when requested. Now Azure AD responds correctly when a SPNameQualifier is requested in the request NameID policy. This also works for SP initiated sign-in, and IdP initiated sign-in will follow.
For more information, see [Administrative units management in Azure Active Direc
**Product capability:** Access Control
-Users in this role can enable, configure and manage services and settings related to enabling hybrid identity in Azure AD. This role grants the ability to configure Azure AD to one of the three supported authentication methods&#8212;Password hash synchronization (PHS), Pass-through authentication (PTA) or Federation (AD FS or 3rd party federation provider)&#8212;and to deploy related on-premises infrastructure to enable them. On-premises infrastructure includes Provisioning and PTA agents. This role grants the ability to enable Seamless Single Sign-On (S-SSO) to enable seamless authentication on non-Windows 10 devices or non-Windows Server 2016 computers. In addition, this role grants the ability to see sign-in logs and to access health and analytics for monitoring and troubleshooting purposes. [Learn more.](../roles/permissions-reference.md#hybrid-identity-administrator)
+Users in this role can enable, configure and manage services and settings related to enabling hybrid identity in Azure AD. This role grants the ability to configure Azure AD to one of the three supported authentication methods&#8212;Password hash synchronization (PHS), Pass-through authentication (PTA) or Federation (AD FS or 3rd party federation provider)&#8212;and to deploy related on-premises infrastructure to enable them. On-premises infrastructure includes Provisioning and PTA agents. This role grants the ability to enable seamless single sign-on (S-SSO) to enable seamless authentication on non-Windows 10 devices or non-Windows Server 2016 computers. In addition, this role grants the ability to see sign-in logs and to access health and analytics for monitoring and troubleshooting purposes. [Learn more.](../roles/permissions-reference.md#hybrid-identity-administrator)
For more information, see [Add Google as an identity provider for B2B guest user
**Service category:** Conditional Access **Product capability:** Identity Security & Protection
-Azure AD for Microsoft Edge on iOS and Android now supports Azure AD Single Sign-On and Conditional Access:
+Azure AD for Microsoft Edge on iOS and Android now supports Azure AD single sign-on and Conditional Access:
- **Microsoft Edge single sign-on (SSO):** Single sign-on is now available across native clients (such as Microsoft Outlook and Microsoft Edge) for all Azure AD -connected apps. - **Microsoft Edge conditional access:** Through application-based conditional access policies, your users must use Microsoft Intune-protected browsers, such as Microsoft Edge.
-For more information about conditional access and SSO with Microsoft Edge, see the [Microsoft Edge Mobile Support for Conditional Access and Single Sign-on Now Generally Available](https://techcommunity.microsoft.com/t5/Intune-Customer-Success/Microsoft-Edge-Mobile-Support-for-Conditional-Access-and-Single/ba-p/988179) blog post. For more information about how to set up your client apps using [app-based conditional access](../conditional-access/app-based-conditional-access.md) or [device-based conditional access](../conditional-access/require-managed-devices.md), see [Manage web access using a Microsoft Intune policy-protected browser](/intune/apps/app-configuration-managed-browser).
+For more information about conditional access and SSO with Microsoft Edge, see the [Microsoft Edge Mobile Support for Conditional Access and single sign-on Now Generally Available](https://techcommunity.microsoft.com/t5/Intune-Customer-Success/Microsoft-Edge-Mobile-Support-for-Conditional-Access-and-Single/ba-p/988179) blog post. For more information about how to set up your client apps using [app-based conditional access](../conditional-access/app-based-conditional-access.md) or [device-based conditional access](../conditional-access/require-managed-devices.md), see [Manage web access using a Microsoft Intune policy-protected browser](/intune/apps/app-configuration-managed-browser).
For more information, see the [Users can now check their sign-in history for unu
To our customers who have been stuck on classic virtual networks -- we have great news for you! You can now perform a one-time migration from a classic virtual network to an existing Resource Manager virtual network. After moving to the Resource Manager virtual network, you'll be able to take advantage of the additional and upgraded features such as, fine-grained password policies, email notifications, and audit logs.
-For more information, see [Preview - Migrate Azure AD Domain Services from the Classic virtual network model to Resource Manager](../../active-directory-domain-services/migrate-from-classic-vnet.md).
- ### Updates to the Azure AD B2C page contract layout
Starting on September 24, 2019, we're going to start rolling out a new Azure Act
The Global Reader role is the read-only counterpart to Global Administrator. Users in this role can read settings and administrative information across Microsoft 365 services, but can't take management actions. We've created the Global Reader role to help reduce the number of Global Administrators in your organization. Because Global Administrator accounts are powerful and vulnerable to attack, we recommend that you have fewer than five Global Administrators. We recommend using the Global Reader role for planning, audits, or investigations. We also recommend using the Global Reader role in combination with other limited administrator roles, like Exchange Administrator, to help get work done without requiring the Global Administrator role.
-The Global Reader role works with the new Microsoft 365 Admin Center, Exchange Admin Center, Teams Admin Center, Security Center, Compliance Center, Azure portal, and the Device Management Admin Center.
+The Global Reader role works with the new Microsoft 365 Admin Center, Exchange Admin Center, Teams Admin Center, Security Center, Microsoft Purview compliance portal, Azure portal, and the Device Management Admin Center.
>[!NOTE] > At the start of public preview, the Global Reader role won't work with: SharePoint, Privileged Access Management, Customer Lockbox, sensitivity labels, Teams Lifecycle, Teams Reporting & Call Analytics, Teams IP Phone Device Management, and Teams App Catalog.
active-directory Whats New Sovereign Clouds Archive https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/fundamentals/whats-new-sovereign-clouds-archive.md
The primary [What's new in sovereign clouds release notes](whats-new-sovereign-c
+## October 2022
+
+### General Availability - Azure AD certificate-based authentication
+
+**Type:** New feature
+**Service category:** Other
+**Product capability:** User Authentication
+
+
+Azure AD certificate-based authentication (CBA) enables customers to allow or require users to authenticate with X.509 certificates against their Azure Active Directory (Azure AD) for applications and browser sign-in. This feature enables customers to adopt a phishing resistant authentication and authenticate with an X.509 certificate against their Enterprise Public Key Infrastructure (PKI). For more information, see: [Overview of Azure AD certificate-based authentication (Preview)](../authentication/concept-certificate-based-authentication.md).
+
++
+### General Availability - Audited BitLocker Recovery
+
+**Type:** New feature
+**Service category:** Device Access Management
+**Product capability:** Device Lifecycle Management
+
+
+BitLocker keys are sensitive security items. Audited BitLocker recovery ensures that when BitLocker keys are read, an audit log is generated so that you can trace who accesses this information for given devices. For more information, see: [View or copy BitLocker keys](../devices/device-management-azure-portal.md#view-or-copy-bitlocker-keys).
+
++
+### General Availability - More device properties supported for Dynamic Device groups
+
+**Type:** Changed feature
+**Service category:** Group Management
+**Product capability:** Directory
+
+
+You can now create or update dynamic device groups using the following properties:
+
+- deviceManagementAppId
+- deviceTrustType
+- extensionAttribute1-15
+- profileType
+
+For more information on how to use this feature, see: [Dynamic membership rule for device groups](../enterprise-users/groups-dynamic-membership.md#rules-for-devices)
+
++ ## September 2022
active-directory Whats New Sovereign Clouds https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/fundamentals/whats-new-sovereign-clouds.md
Azure AD receives improvements on an ongoing basis. To stay up to date with the
This page updates monthly, so revisit it regularly. If you're looking for items older than six months, you can find them in [Archive for What's new in Sovereign Clouds](whats-new-archive.md).
+## April 2023
+
+### General Availability - Azure Active Directory Domain
+
+**Type:** New feature
+**Service category:** Azure Active Directory Domain Services
+**Product capability:** Azure Active Directory Domain Services
+
+You can now create trusts on both user and resource forests. On-premises Active Directory DS users can't authenticate to resources in the Azure Active Directory DS resource forest until you create an outbound trust to your on-premises Active Directory DS. An outbound trust requires network connectivity to your on-premises virtual network to which you have installed Azure AD Domain Service. On a user forest, trusts can be created for on-premises Active Directory forests that aren't synchronized to Azure Active Directory DS.
+
+For more information, see: [How trust relationships work for forests in Active Directory](/azure/active-directory-domain-services/concepts-forest-trust).
+++
+### General Availability - Azure AD SCIM Validator Tool
+
+**Type:** New feature
+**Service category:** Provisioning
+**Product capability:** Developer Experience
+
+Azure Active Directory SCIM validator will enable you to test your server for compatibility with the Azure Active Directory SCIM client. For more information, see: [Tutorial: Validate a SCIM endpoint](../app-provisioning/scim-validator-tutorial.md).
+++
+### General Availability - Enablement of combined security information registration for MFA and self-service password reset (SSPR)
+
+**Type:** New feature
+**Service category:** MFA
+**Product capability:** Identity Security & Protection
+
+Last year we announced the combined registration user experience for MFA and self-service password reset (SSPR) was rolling out as the default experience for all organizations. We're happy to announce that the combined security information registration experience is now fully rolled out. This change doesn't affect tenants located in the China region. For more information, see: [Combined security information registration for Azure Active Directory overview](../authentication/concept-registration-mfa-sspr-combined.md).
+++
+### General Availability - Devices settings Self-Help Capability for Pending Devices
+
+**Type:** New feature
+**Service category:** Device Registration and Management
+**Product capability:** End User Experiences
+
+In the **All Devices** settings under the Registered column, you can now select any pending devices you have, and it opens a context pane to help troubleshoot why a device may be pending. You can also offer feedback on if the summarized information is helpful or not. For more information, see [Pending devices in Azure Active Directory](/troubleshoot/azure/active-directory/pending-devices).
+++
+### General availability - Consolidated App launcher (My Apps) settings and new preview settings
+
+**Type:** New feature
+**Service category:** My Apps
+**Product capability:** End User Experiences
+
+We have consolidated relevant app launcher settings in a new App launchers section in the Azure and Entra portals. The entry point can be found under Enterprise applications, where Collections used to be. You can find the Collections option by selecting App launchers. In addition, we've added a new App launchers Settings option. This option has some settings you may already be familiar with like the Microsoft 365 settings. The new Settings options also have controls for previews. As an admin, you can choose to try out new app launcher features while they are in preview. Enabling a preview feature means that the feature turns on for your organization. This enabled feature reflects in the My Apps portal, and other app launchers for all of your users. To learn more about the preview settings, see: [End-user experiences for applications](../manage-apps/end-user-experiences.md).
++++
+### General Availability - RBAC: Delegated app registration management using custom roles
+
+**Type:** New feature
+**Service category:** RBAC
+**Product capability:** Access Control
+
+Custom roles give you fine-grained control over what access your admins have. This release of custom roles includes the ability to delegate management of app registrations and enterprise apps. For more information, see: [Overview of role-based access control in Azure Active Directory](../roles/custom-overview.md).
++++ ## March 2023 ### General Availability - Provisioning Insights Workbook
For more information, see: [Protect user accounts from attacks with Azure Active
**Service category:** Enterprise Apps **Product capability:** SSO
-Filter and transform group names in token claims configuration using regular expression. Many application configurations on ADFS and other IdPs rely on the ability to create authorization claims based on the content of Group Names using regular expression functions in the claim rules. Azure AD now has the capability to use a regular expression match and replace function to create claim content based on Group **onpremisesSAMAccount** names. This functionality will allow those applications to be moved to Azure AD for authentication using the same group management patterns. For more information, see: [Configure group claims for applications by using Azure Active Directory](../hybrid/how-to-connect-fed-group-claims.md).
+Filter and transform group names in token claims configuration using regular expression. Many application configurations on ADFS and other IdPs rely on the ability to create authorization claims based on the content of Group Names using regular expression functions in the claim rules. Azure AD now has the capability to use a regular expression match and replace function to create claim content based on Group **onpremisesSAMAccount** names. This functionality allows those applications to be moved to Azure AD for authentication using the same group management patterns. For more information, see: [Configure group claims for applications by using Azure Active Directory](../hybrid/how-to-connect-fed-group-claims.md).
Filter and transform group names in token claims configuration using regular exp
**Service category:** Enterprise Apps **Product capability:** SSO
-Azure AD now has the capability to filter the groups included in the token using substring match on the display name or **onPremisesSAMAccountName** attributes of the group object. Only Groups the user is a member of will be included in the token. This was a blocker for some of our customers to migrate their apps from ADFS to Azure AD. This feature will unblock those challenges.
+Azure AD now has the capability to filter the groups included in the token using substring match on the display name or **onPremisesSAMAccountName** attributes of the group object. Only Groups the user is a member of will be included in the token. This was a blocker for some of our customers to migrate their apps from ADFS to Azure AD. This feature unblocks those challenges.
For more information, see: - [Group Filter](../develop/reference-claims-mapping-policy-type.md#group-filter).
Azure AD now supports claims transformations on multi-valued attributes and can
**Service category:** Access Reviews **Product capability:** Identity Security & Protection
-Post-authentication anomalous activity detection for workload identities. This detection focuses specifically on detection of post authenticated anomalous behavior performed by a workload identity (service principal). Post-authentication behavior will be assessed for anomalies based on an action and/or sequence of actions occurring for the account. Based on the scoring of anomalies identified, the offline detection may score the account as low, medium, or high risk. The risk allocation from the offline detection will be available within the Risky workload identities reporting blade. A new detection type identified as Anomalous service principal activity will appear in filter options. For more information, see: [Securing workload identities](../identity-protection/concept-workload-identity-risk.md).
+Post-authentication anomalous activity detection for workload identities. This detection focuses specifically on detection of post authenticated anomalous behavior performed by a workload identity (service principal). Post-authentication behavior is assessed for anomalies based on an action and/or sequence of actions occurring for the account. Based on the scoring of anomalies identified, the offline detection may score the account as low, medium, or high risk. The risk allocation from the offline detection will be available within the Risky workload identities reporting blade. A new detection type identified as Anomalous service principal activity appears in filter options. For more information, see: [Securing workload identities](../identity-protection/concept-workload-identity-risk.md).
Azure AD Connect Cloud Sync Password writeback now provides customers the abilit
-Accidental deletion of users in any system could be disastrous. WeΓÇÖre excited to announce the general availability of the accidental deletions prevention capability as part of the Azure AD provisioning service. When the number of deletions to be processed in a single provisioning cycle spikes above a customer defined threshold, the Azure AD provisioning service will pause, provide you with visibility into the potential deletions, and allow you to accept or reject the deletions. This functionality has historically been available for Azure AD Connect, and Azure AD Connect Cloud Sync. It's now available across the various provisioning flows, including both HR-driven provisioning and application provisioning.
+Accidental deletion of users in any system could be disastrous. WeΓÇÖre excited to announce the general availability of the accidental deletions prevention capability as part of the Azure AD provisioning service. When the number of deletions to be processed in a single provisioning cycle spikes above a customer defined threshold, the Azure AD provisioning service pauses, provide you with visibility into the potential deletions, and allow you to accept or reject the deletions. This functionality has historically been available for Azure AD Connect, and Azure AD Connect Cloud Sync. It's now available across the various provisioning flows, including both HR-driven provisioning and application provisioning.
For more information, see: [Enable accidental deletions prevention in the Azure AD provisioning service](../app-provisioning/accidental-deletions.md)
For more information, see: [How to use additional context in Microsoft Authentic
-
-## October 2022
-
-### General Availability - Azure AD certificate-based authentication
-
-**Type:** New feature
-**Service category:** Other
-**Product capability:** User Authentication
-
-
-Azure AD certificate-based authentication (CBA) enables customers to allow or require users to authenticate with X.509 certificates against their Azure Active Directory (Azure AD) for applications and browser sign-in. This feature enables customers to adopt a phishing resistant authentication and authenticate with an X.509 certificate against their Enterprise Public Key Infrastructure (PKI). For more information, see: [Overview of Azure AD certificate-based authentication (Preview)](../authentication/concept-certificate-based-authentication.md).
-
--
-### General Availability - Audited BitLocker Recovery
-
-**Type:** New feature
-**Service category:** Device Access Management
-**Product capability:** Device Lifecycle Management
-
-
-BitLocker keys are sensitive security items. Audited BitLocker recovery ensures that when BitLocker keys are read, an audit log is generated so that you can trace who accesses this information for given devices. For more information, see: [View or copy BitLocker keys](../devices/device-management-azure-portal.md#view-or-copy-bitlocker-keys).
-
--
-### General Availability - More device properties supported for Dynamic Device groups
-
-**Type:** Changed feature
-**Service category:** Group Management
-**Product capability:** Directory
-
-
-You can now create or update dynamic device groups using the following properties:
--- deviceManagementAppId-- deviceTrustType-- extensionAttribute1-15-- profileType-
-For more information on how to use this feature, see: [Dynamic membership rule for device groups](../enterprise-users/groups-dynamic-membership.md#rules-for-devices)
-
-- ## Next steps <!-- Add a context sentence for the following links --> - [What's new in Azure Active Directory?](whats-new.md)
active-directory Lifecycle Workflow Templates https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/governance/lifecycle-workflow-templates.md
# Lifecycle Workflows templates (Preview)
-Lifecycle Workflows allows you to automate the lifecycle management process for your organization by creating workflows that contain both built-in tasks, and custom task extensions. These workflows, and the tasks within them, all fall into categories based on the Joiner-Mover-Leaver(JML) model of lifecycle management. To make this process even more efficient, Lifecycle Workflows also provide you templates, which you can use to accelerate the set up, creation, and configuration of common lifecycle management processes. You can create workflows based on these templates as is, or you can customize them even further to match the requirements for users within your organization. In this article you'll get the complete list of workflow templates, common template parameters, default template parameters for specific templates, and the list of compatible tasks for each template. For full task definitions, see [Lifecycle Workflow tasks and definitions](lifecycle-workflow-tasks.md).
+Lifecycle Workflows allows you to automate the lifecycle management process for your organization by creating workflows that contain both built-in tasks, and custom task extensions. These workflows, and the tasks within them, all fall into categories based on the Joiner-Mover-Leaver(JML) model of lifecycle management. To make this process even more efficient, Lifecycle Workflows also provide you with templates, which you can use to accelerate the setup, creation, and configuration of common lifecycle management processes. You can create workflows based on these templates as is, or you can customize them even further to match the requirements for users within your organization. In this article you get the complete list of workflow templates, common template parameters, default template parameters for specific templates, and the list of compatible tasks for each template. For full task definitions, see [Lifecycle Workflow tasks and definitions](lifecycle-workflow-tasks.md).
## Lifecycle Workflow Templates
The list of templates are as follows:
- [Onboard pre-hire employee](lifecycle-workflow-templates.md#onboard-pre-hire-employee) - [Onboard new hire employee](lifecycle-workflow-templates.md#onboard-new-hire-employee)
+- [Post-Onboarding of an employee](lifecycle-workflow-templates.md#post-onboarding-of-an-employee)
- [Real-time employee termination](lifecycle-workflow-templates.md#real-time-employee-termination) - [Pre-Offboarding of an employee](lifecycle-workflow-templates.md#pre-offboarding-of-an-employee) - [Offboard an employee](lifecycle-workflow-templates.md#offboard-an-employee)
The default specific parameters and properties for the **Onboard pre-hire employ
### Onboard new hire employee
-The **Onboard new-hire employee** template is designed to configure tasks that will be completed on an employee's start date.
+The **Onboard new-hire employee** template is designed to configure tasks that are completed on an employee's start date.
:::image type="content" source="media/lifecycle-workflow-templates/onboard-new-hire-template.png" alt-text="Screenshot of a Lifecycle Workflow onboard new hire template.":::
The default specific parameters for the **Onboard new hire employee** template a
|Trigger Type | Trigger and Scope Based | ❌ | |Days from event | 0 | ❌ | |Event timing | On | ❌ |
-|Event User attribute | EmployeeHireDate | ❌ |
+|Event User attribute | EmployeeHireDate, createdDateTime | ✔️ |
|Scope type | Rule based | ❌ | |Execution conditions | (department eq 'Marketing') | ✔️ | |Tasks | **Add User To Group**, **Enable User Account**, **Send Welcome Email** | ✔️ |
+### Post-Onboarding of an employee
+
+The **Post-Onboarding of an employee** template is designed to configure tasks that will be completed after an employee's start, or creation, date.
++
+The default specific parameters for the **Post-Onboarding of an employee** template are as follows:
++
+|parameter |description |Customizable |
+||||
+|Category | Joiner | ❌ |
+|Trigger Type | Trigger and Scope Based | ❌ |
+|Days from event | 7 | ✔️ |
+|Event timing | After | ❌ |
+|Event User attribute | EmployeeHireDate, createdDateTime | ✔️ |
+|Scope type | Rule based | ❌ |
+|Execution conditions | (department eq 'Marketing') | ✔️ |
+|Tasks | **Add User To Group**, **Add user to selected teams** | ✔️ |
+ ### Real-time employee termination
-The **Real-time employee termination** template is designed to configure tasks that will be completed immediately when an employee is terminated.
+The **Real-time employee termination** template is designed to configure tasks that are completed immediately when an employee is terminated.
:::image type="content" source="media/lifecycle-workflow-templates/on-demand-termination-template.png" alt-text="Screenshot of a Lifecycle Workflow real time employee termination template.":::
The default specific parameters for the **Real-time employee termination** templ
### Pre-Offboarding of an employee
-The **Pre-Offboarding of an employee** template is designed to configure tasks that will be completed before an employee's last day of work.
+The **Pre-Offboarding of an employee** template is designed to configure tasks that are completed before an employee's last day of work.
:::image type="content" source="media/lifecycle-workflow-templates/offboard-pre-employee-template.png" alt-text="Screenshot of a pre offboarding employee template.":::
The default specific parameters for the **Pre-Offboarding of an employee** templ
### Offboard an employee
-The **Offboard an employee** template is designed to configure tasks that will be completed on an employee's last day of work.
+The **Offboard an employee** template is designed to configure tasks that are completed on an employee's last day of work.
:::image type="content" source="media/lifecycle-workflow-templates/offboard-employee-template.png" alt-text="Screenshot of an offboard employee template lifecycle workflow.":::
active-directory Understanding Lifecycle Workflows https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/governance/understanding-lifecycle-workflows.md
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.|
-|Tasks|Tasks are the actions that will be taken when a workflow is executed.|
-|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).|
+|Tasks|Tasks are the actions that are taken when a workflow is executed.|
+|Execution conditions| Defines when(trigger), and for who(scope), a scheduled workflow runs. 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 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.
+Creating a workflow via the Azure portal requires the use of a template. A Lifecycle Workflow template is a framework that is used for predefined 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)
Every workflow has its own overview section, where you can either take quick act
- 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.
+In this section you learn what each section tells you, and what actions you're able to take from this 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.
+When selecting a workflow, the overview provides you with a list of basic details in the **Basic Information** section. These basic details provide you with 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:
Actions taken from the overview of a workflow allow you to quickly complete task
## Workflow basics After selecting a template, on the basics screen:
+ - Provide the information that is 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) ## Trigger details
-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 -180 and 180 days.
+The trigger of a workflow defines when a scheduled workflow runs 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 -180 and 180 days.
-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:
+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 three values can be:
-- employeeHireDate: If the template is a joiner workflow.-- employeeLeaveDateTime: If the template is a leaver workflow.
+- employeeHireDate: If the template is a joiner workflow
+- createdDateTime: if the template is a joiner workflow designed to run either on hire or post onboarding
+- employeeLeaveDateTime: If the template is a leaver workflow
-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)
+The values employeeHireDate and employeeLeaveDateTime 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)
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.
The offset determines how many days before or after the time-based attribute the
[![Screenshot showing the rule section.](media/understanding-lifecycle-workflows/workflow-5.png)](media/understanding-lifecycle-workflows/workflow-5.png#lightbox)
-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.
+The scope defines for who the scheduled workflow runs. Configuring this parameter allows you to further narrow down the users for whom the workflow is to be executed.
The scope is made up of the following two parts: - 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.
+- Rule: Where you can set expressions on user properties that define for whom the scheduled workflow runs. 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.
[![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: [C
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.
+Once scheduling is enabled, the workflow is 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)
active-directory How To Connect Fed Group Claims https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/hybrid/connect/how-to-connect-fed-group-claims.md
Azure Active Directory (Azure AD) can provide a user's group membership informat
- Groups identified by their Azure AD object identifier (OID) attribute - Groups identified by the `sAMAccountName` or `GroupSID` attribute for Active Directory-synchronized groups and users-- Groups identified by their Display Name attribute for cloud-only groups (Preview)
+- Groups identified by their Display Name attribute for cloud-only groups
> [!IMPORTANT] > The number of groups emitted in a token is limited to 150 for SAML assertions and 200 for JWT, including nested groups. In larger organizations, the number of groups where a user is a member might exceed the limit that Azure AD will add to a token. Exceeding a limit can lead to unpredictable results. For workarounds to these limits, read more in [Important caveats for this functionality](#important-caveats-for-this-functionality).
To configure group claims for a gallery or non-gallery SAML application via sing
For more information about managing group assignment to applications, see [Assign a user or group to an enterprise app](../../manage-apps/assign-user-or-group-access-portal.md).
-## Emit cloud-only group display name in token (Preview)
+## Emit cloud-only group display name in token
You can configure group claim to include the group display name for the cloud-only groups.
You can configure group claim to include the group display name for the cloud-on
![Screenshot that shows the Group Claims window, with the option for groups assigned to the application selected.](media/how-to-connect-fed-group-claims/group-claims-ui-4-1.png)
-4. To emit group display name just for cloud groups, in the **Source attribute** dropdown select the **Cloud-only group display names (Preview)**:
+4. To emit group display name just for cloud groups, in the **Source attribute** dropdown select the **Cloud-only group display names**:
![Screenshot that shows the Group Claims source attribute dropdown, with the option for configuring cloud only group names selected.](media/how-to-connect-fed-group-claims/group-claims-ui-8.png)
-5. For a hybrid setup, to emit on-premises group attribute for synced groups and display name for cloud groups, you can select the desired on-premises sources attribute and check the checkbox **Emit group name for cloud-only groups (Preview)**:
+5. For a hybrid setup, to emit on-premises group attribute for synced groups and display name for cloud groups, you can select the desired on-premises sources attribute and check the checkbox **Emit group name for cloud-only groups**:
![Screenshot that shows the configuration to emit on-premises group attribute for synced groups and display name for cloud groups.](media/how-to-connect-fed-group-claims/group-claims-ui-9.png)
active-directory How To Connect Password Hash Synchronization https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/hybrid/connect/how-to-connect-password-hash-synchronization.md
ms.assetid: 05f16c3e-9d23-45dc-afca-3d0fa9dbf501
Previously updated : 01/26/2023 Last updated : 05/18/2023 search.appverid:
The following section describes, in-depth, how password hash synchronization wor
> [!NOTE] > The original MD4 hash is not transmitted to Azure AD. Instead, the SHA256 hash of the original MD4 hash is transmitted. As a result, if the hash stored in Azure AD is obtained, it cannot be used in an on-premises pass-the-hash attack.
+> [!NOTE]
+> The password hash value is **NEVER** stored in SQL. These values are only processed in memory prior to being sent to Azure AD.
+ ### Security considerations When synchronizing passwords, the plain-text version of your password is not exposed to the password hash synchronization feature, to Azure AD, or any of the associated services.
active-directory Reference Connect Version History https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/hybrid/connect/reference-connect-version-history.md
For version history information on retired versions, see [Azure AD Connect: Vers
> [!NOTE] > Releasing a new version of Azure AD Connect requires several quality-control steps to ensure the operation functionality of the service. While we go through this process, the version number of a new release and the release status are updated to reflect the most recent state.
-Not all releases of Azure AD Connect are made available for auto-upgrade. The release status indicates whether a release is made available for auto-upgrade or for download only. If auto-upgrade was enabled on your Azure AD Connect server, that server automatically upgrades to the latest version of Azure AD Connect that's released for auto-upgrade. Not all Azure AD Connect configurations are eligible for auto-upgrade.
+Not all releases of Azure AD Connect are made available for autoupgrade. The release status indicates whether a release is made available for autoupgrade or for download only. If autoupgrade was enabled on your Azure AD Connect server, that server automatically upgrades to the latest version of Azure AD Connect that's released for autoupgrade. Not all Azure AD Connect configurations are eligible for autoupgrade.
-Auto-upgrade is meant to push all important updates and critical fixes to you. It isn't necessarily the latest version because not all versions will require or include a fix to a critical security issue. (This example is just one of many.) Critical issues are usually addressed with a new version provided via auto-upgrade. If there are no such issues, there are no updates pushed out by using auto-upgrade. In general, if you're using the latest auto-upgrade version, you should be good.
+Auto-upgrade is meant to push all important updates and critical fixes to you. It isn't necessarily the latest version because not all versions will require or include a fix to a critical security issue. (This example is just one of many.) Critical issues are usually addressed with a new version provided via autoupgrade. If there are no such issues, there are no updates pushed out by using autoupgrade. In general, if you're using the latest autoupgrade version, you should be good.
If you want all the latest features and updates, check this page and install what you need.
-To read more about auto-upgrade, see [Azure AD Connect: Automatic upgrade](how-to-connect-install-automatic-upgrade.md).
+To read more about autoupgrade, see [Azure AD Connect: Automatic upgrade](how-to-connect-install-automatic-upgrade.md).
+
+## 2.2.1.0
+
+### Release status
+5/23/2023: Released for autoupgrade only
+
+### Functional Changes
+ - We have enabled Auto Upgrade for tenants with custom synchronization rules. Note that deleted (not disabled) default rules will be re-created and enabled upon Auto Upgrade.
+ - We have added Microsoft Azure AD Connect Agent Updater service to the install.
+ - We have removed the Synchronization Service WebService Connector Config program from the install.
+
+### Bug Fixes
+ - We have made improvements to accessibility.
+ - We have made the Microsoft Privacy Statement accessible in more places.
++++ ## 2.1.20.0
To read more about auto-upgrade, see [Azure AD Connect: Automatic upgrade](how-t
## 2.1.16.0 ### Release status
-8/2/2022: Released for download and auto-upgrade.
+8/2/2022: Released for download and autoupgrade.
### Bug fixes
+ - We fixed a bug where autoupgrade fails when the service account is in "UPN" format.
## 2.1.15.0 ### Release status
-7/6/2022: Released for download, will be made available for auto-upgrade soon.
+7/6/2022: Released for download, will be made available for autoupgrade soon.
> [!IMPORTANT] > We have discovered a security vulnerability in the Azure AD Connect Admin Agent. If you have installed the Admin Agent previously it is important that you update your Azure AD Connect server(s) to this version to mitigate the vulnerability.
To read more about auto-upgrade, see [Azure AD Connect: Automatic upgrade](how-t
### Release status
-12/15/2021: Released for download only, not available for auto-upgrade
+12/15/2021: Released for download only, not available for autoupgrade
### Bug fixes
To read more about auto-upgrade, see [Azure AD Connect: Automatic upgrade](how-t
### Release status
-10/13/2021: Released for download and auto-upgrade
+10/13/2021: Released for download and autoupgrade
### Bug fixes -- We fixed a bug where the auto-upgrade process attempted to upgrade Azure AD Connect servers that are running older Windows OS version 2008 or 2008 R2 and failed. These versions of Windows Server are no longer supported. In this release, we only attempt auto-upgrade on machines that run Windows Server 2012 or newer.
+- We fixed a bug where the autoupgrade process attempted to upgrade Azure AD Connect servers that are running older Windows OS version 2008 or 2008 R2 and failed. These versions of Windows Server are no longer supported. In this release, we only attempt autoupgrade on machines that run Windows Server 2012 or newer.
- We fixed an issue where, under certain conditions, miisserver failed because of an access violation exception. ### Known issues
When you upgrade to this V1.6 build or any newer builds, the group membership li
### Release status
-9/30/2021: Released for download only, not available for auto-upgrade
+9/30/2021: Released for download only, not available for autoupgrade
### Bug fixes
When you upgrade to this V1.6 build or any newer builds, the group membership li
### Release status
-9/21/2021: Released for download and auto-upgrade
+9/21/2021: Released for download and autoupgrade
### Functional changes
When you upgrade to this V1.6 build or any newer builds, the group membership li
### Release status
-9/14/2021: Released for download only, not available for auto-upgrade
+9/14/2021: Released for download only, not available for autoupgrade
### Bug fixes
When you upgrade to this V1.6 build or any newer builds, the group membership li
- We fixed an import configuration issue with writeback enabled when you use the existing Azure AD Connector account. - We fixed an issue in Set-ADSyncExchangeHybridPermissions and other related cmdlets, which were broken from V1.6 because of an invalid inheritance type. - We fixed an issue with the cmdlet we published in a previous release to set the TLS version. The cmdlet overwrote the keys, which destroyed any values that were in them. Now a new key is created only if one doesn't already exist. We added a warning to let users know the TLS registry changes aren't exclusive to Azure AD Connect and might affect other applications on the same server.-- We added a check to enforce auto-upgrade for V2.0 to require Windows Server 2016 or newer.
+- We added a check to enforce autoupgrade for V2.0 to require Windows Server 2016 or newer.
- We added the Replicating Directory Changes permission in the Set-ADSyncBasicReadPermissions cmdlet. - We made a change to prevent UseExistingDatabase and import configuration from being used together because they could contain conflicting configuration settings. - We made a change to allow a user with the Application Admin role to change the App Proxy service configuration.
When you upgrade to this V1.6 build or any newer builds, the group membership li
### Release status
-8/19/2021: Released for download only, not available for auto-upgrade
+8/19/2021: Released for download only, not available for autoupgrade
> [!NOTE] > This is a hotfix update release of Azure AD Connect. This release requires Windows Server 2016 or newer. This hotfix addresses an issue that's present in version 2.0 and in Azure AD Connect version 1.6. If you're running Azure AD Connect on an older Windows server, install the [1.6.13.0](#16130) build instead. ### Release status
-8/19/2021: Released for download only, not available for auto-upgrade
+8/19/2021: Released for download only, not available for autoupgrade
### Known issues
We fixed a bug that occurred when a domain was renamed and Password Hash Sync fa
> [!NOTE] > This release is a hotfix update release of Azure AD Connect. It's intended to be used by customers who are running Azure AD Connect on a server with Windows Server 2012 or 2012 R2.
-8/19/2021: Released for download only, not available for auto-upgrade
+8/19/2021: Released for download only, not available for autoupgrade
### Bug fixes
There are no functional changes in this release.
### Release status
-8/17/2021: Released for download only, not available for auto-upgrade
+8/17/2021: Released for download only, not available for autoupgrade
### Bug fixes
To download the latest version of Azure AD Connect 2.0, see the [Microsoft Downl
### Release status
-8/10/2021: Released for download only, not available for auto-upgrade
+8/10/2021: Released for download only, not available for autoupgrade
### Functional changes
This release addresses a vulnerability as documented in [this CVE](https://msrc.
### Release status
-8/10/2021: Released for download only, not available for auto-upgrade
+8/10/2021: Released for download only, not available for autoupgrade
### Functional changes
There are no functional changes in this release.
### Release status
-7/20/2021: Released for download only, not available for auto-upgrade
+7/20/2021: Released for download only, not available for autoupgrade
### Functional changes
You can use these cmdlets to retrieve the TLS 1.2 enablement status or set it as
### Release status
-3/31/2021: Released for download only, not available for auto-upgrade
+3/31/2021: Released for download only, not available for autoupgrade
### Bug fixes
This release fixes a bug that occurred in version 1.6.2.4. After upgrade to that
### Release status
-3/19/2021: Released for download, not available for auto-upgrade
+3/19/2021: Released for download, not available for autoupgrade
### Functional changes
active-directory Howto Identity Protection Simulate Risk https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/identity-protection/howto-identity-protection-simulate-risk.md
The sign-in shows up on the Identity Protection dashboard within 10 - 15 minutes
## Atypical travel
-Simulating the atypical travel condition is difficult because the algorithm uses machine learning to weed out false-positives such as atypical travel from familiar devices, or sign-ins from VPNs that are used by other users in the directory. Additionally, the algorithm requires a sign-in history of 14 days and 10 logins of the user before it begins generating risk detections. Because of the complex machine learning models and above rules, there's a chance that the following steps won't lead to a risk detection. You might want to replicate these steps for multiple Azure AD accounts to simulate this detection.
+Simulating the atypical travel condition is difficult because the algorithm uses machine learning to weed out false-positives such as atypical travel from familiar devices, or sign-ins from VPNs that are used by other users in the directory. Additionally, the algorithm requires a sign-in history of 14 days or 10 logins of the user before it begins generating risk detections. Because of the complex machine learning models and above rules, there's a chance that the following steps won't lead to a risk detection. You might want to replicate these steps for multiple Azure AD accounts to simulate this detection.
**To simulate an atypical travel risk detection, perform the following steps**:
active-directory Migrate Adfs Apps To Azure https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/migrate-adfs-apps-to-azure.md
For information about Azure AD SAML token encryption and how to configure it, se
> [!NOTE] > Token encryption is an Azure Active Directory (Azure AD) premium feature. To learn more about Azure AD editions, features, and pricing, see [Azure AD pricing](https://www.microsoft.com/security/business/identity-access-management/azure-ad-pricing).
-### SAML request signature verification (preview)
+### SAML request signature verification
This functionality validates the signature of signed authentication requests. An App Admin enables and disables the enforcement of signed requests and uploads the public keys that should be used to do the validation. For more information, see [How to enfore signed SAML authentication requests](howto-enforce-signed-saml-authentication.md).
active-directory Migrate Okta Federation To Azure Active Directory https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/migrate-okta-federation-to-azure-active-directory.md
Title: Migrate Okta federation to Azure Active Directory
-description: Learn how to migrate your Okta-federated applications to managed authentication under Azure AD. See how to migrate federation in a staged manner.
+ Title: Migrate Okta federation to Azure Active Directory-managed authentication
+description: Migrate Okta-federated applications to managed authentication under Azure AD. See how to migrate federation in a staged manner.
Previously updated : 05/19/2022 Last updated : 05/23/2023
# Tutorial: Migrate Okta federation to Azure Active Directory-managed authentication
-In this tutorial, you'll learn how to federate your existing Office 365 tenants with Okta for single sign-on (SSO) capabilities.
+In this tutorial, learn to federate Office 365 tenants with Okta for single sign-on (SSO).
-You can migrate federation to Azure Active Directory (Azure AD) in a staged manner to ensure a good authentication experience for users. In a staged migration, you can also test reverse federation access back to any remaining Okta SSO applications.
+You can migrate federation to Azure Active Directory (Azure AD) in a staged manner to ensure a good authentication experience for users. In a staged migration, you can test reverse federation access to remaining Okta SSO applications.
## Prerequisites
You can migrate federation to Azure Active Directory (Azure AD) in a staged mann
## Configure Azure AD Connect for authentication
-Customers who have federated their Office 365 domains with Okta might not currently have a valid authentication method configured in Azure AD. Before you migrate to managed authentication, validate Azure AD Connect and configure it to allow user sign-in.
+Customers that federate their Office 365 domains with Okta might not have a valid authentication method in Azure AD. Before you migrate to managed authentication, validate Azure AD Connect and configure it for user sign-in.
-Set up the sign-in method that's best suited for your environment:
+Set up the sign-in method:
-- **Password hash synchronization**: [Password hash synchronization](../hybrid/whatis-phs.md) is an extension of the directory synchronization feature that's implemented by Azure AD Connect server or cloud-provisioning agents. You can use this feature to sign in to Azure AD services like Microsoft 365. You sign in to the service by using the same password you use to sign in to your on-premises Active Directory instance.-- **Pass-through authentication**: Azure AD [Pass-through authentication](../hybrid/how-to-connect-pta.md) allows users to sign in to both on-premises and cloud-based applications by using the same passwords. When users sign in through Azure AD, the pass-through authentication agent validates passwords directly against the on-premises Active Directory.-- **Seamless SSO**: [Azure AD seamless SSO](../hybrid/how-to-connect-sso.md) automatically signs in users when they're on their corporate desktops that are connected to the corporate network. Seamless SSO provides users with easy access to cloud-based applications without needing any other on-premises components.
+* **Password hash synchronization** - an extension of the directory synchronization feature implemented by Azure AD Connect server or cloud-provisioning agents
+ * Use this feature to sign in to Azure AD services like Microsoft 365
+ * Sign in to the service with the password to sign in to the on-premises Active Directory instance
+ * See, [What is password hash synchronization with Azure AD?](../hybrid/whatis-phs.md)
+* **Pass-through authentication** - sign in to on-premises and cloud applications with the same passwords
+ * When users sign in through Azure AD, the pass-through authentication agent validates passwords against the on-premises AD
+ * See, [User sign-in with Azure Active Directory Pass-through Authentication](../hybrid/how-to-connect-pta.md)
+* **Seamless SSO** - signs in users on corporate desktops connected to the corporate network
+ * Users have access to cloud applications without other on-premises components
+ * See, [Azure AD seamless SSO](../hybrid/how-to-connect-sso.md)
-Seamless SSO can be deployed to password hash synchronization or pass-through authentication to create a seamless authentication experience for users in Azure AD.
+To create a seamless authentication user experience in Azure AD, deploy seamless SSO to password hash synchronization or pass-through authentication.
-Follow the [deployment guide](../hybrid/how-to-connect-sso-quick-start.md#step-1-check-the-prerequisites) to ensure that you deploy all necessary prerequisites of seamless SSO to your users.
+For prerequisites of seamless SSO see, [Quickstart: Azure Active Directory Seamless single sign-on](../hybrid/how-to-connect-sso-quick-start.md#step-1-check-the-prerequisites).
-For this example, you configure password hash synchronization and seamless SSO.
+For this tutorial, you configure password hash synchronization and seamless SSO.
### Configure Azure AD Connect for password hash synchronization and seamless SSO
-Follow these steps to configure Azure AD Connect for password hash synchronization:
+1. On the Azure AD Connect server, open the **Azure AD Connect** app.
+2. Select **Configure**.
-1. On your Azure AD Connect server, open the **Azure AD Connect** app and then select **Configure**.
+ ![Screenshot of the Azure AD icon and the Configure button in the Azure AD Connect app.](media/migrate-okta-federation-to-azure-active-directory/configure-azure-ad.png)
- ![Screenshot that shows the Azure A D icon and the Configure button in the Azure A D Connect app.](media/migrate-okta-federation-to-azure-active-directory/configure-azure-ad.png)
+3. Select **Change user sign-in**.
+4. Select **Next**.
-1. Select **Change user sign-in**, and then select **Next**.
+ ![Screenshot of the Azure AD Connect app with the page for changing user sign-in.](media/migrate-okta-federation-to-azure-active-directory/change-user-signin.png)
- ![Screenshot of the Azure A D Connect app that shows the page for changing user sign-in.](media/migrate-okta-federation-to-azure-active-directory/change-user-signin.png)
-
-1. Enter your global administrator credentials.
+5. Enter Global Administrator credentials.
![Screenshot of the Azure A D Connect app that shows where to enter Global Administrator credentials.](media/migrate-okta-federation-to-azure-active-directory/global-admin-credentials.png)
-1. Currently, the server is configured for federation with Okta. Change the selection to **Password Hash Synchronization**. Then select **Enable single sign-on**.
-
-1. Select **Next**.
-
-Follow these steps to enable seamless SSO:
-
-1. Enter the domain administrator credentials for the local on-premises system. Then select **Next**.
+6. The server is configured for federation with Okta. Change the selection to **Password Hash Synchronization**.
+7. Select **Enable single sign-on**.
+8. Select **Next**.
+9. For the local on-premises system, enter the domain administrator credentials.
+10. Select **Next**.
- ![Screenshot of the Azure A D Connect app that shows settings for user sign-in.](media/migrate-okta-federation-to-azure-active-directory/domain-admin-credentials.png)
+ ![Screenshot of the Azure AD Connect app with settings for user sign-in.](media/migrate-okta-federation-to-azure-active-directory/domain-admin-credentials.png)
-1. On the final page, select **Configure** to update the Azure AD Connect server.
+11. On the final page, select **Configure**.
- ![Screenshot of the Ready to configure page of the Azure A D Connect app.](media/migrate-okta-federation-to-azure-active-directory/update-azure-ad-connect-server.png)
+ ![Screenshot of the Ready to configure page of the Azure AD Connect app.](media/migrate-okta-federation-to-azure-active-directory/update-azure-ad-connect-server.png)
-1. Ignore the warning for hybrid Azure AD join for now. You'll reconfigure the device options after you disable federation from Okta.
+12. Ignore the warning for hybrid Azure AD join.
- ![Screenshot of the Azure A D Connect app. A warning about the hybrid Azure A D join is visible. A link for configuring device options is also visible.](media/migrate-okta-federation-to-azure-active-directory/reconfigure-device-options.png)
+ ![Screenshot of the Azure AD Connect app. The hybrid Azure AD join warning appears.](media/migrate-okta-federation-to-azure-active-directory/reconfigure-device-options.png)
## Configure staged rollout features
-In Azure AD, you can use a [staged rollout of cloud authentication](../hybrid/how-to-connect-staged-rollout.md) to test defederating users before you test defederating an entire domain. Before you deploy, review the [prerequisites](../hybrid/how-to-connect-staged-rollout.md#prerequisites).
-
-After you enable password hash sync and seamless SSO on the Azure AD Connect server, follow these steps to configure a staged rollout:
-
-1. In the [Azure portal](https://portal.azure.com/#home), select **View** or **Manage Azure Active Directory**.
+Before you test defederating a domain, in Azure AD use a cloud authentication staged rollout to test defederating users.
- ![Screenshot that shows the Azure portal. A welcome message is visible.](media/migrate-okta-federation-to-azure-active-directory/azure-portal.png)
+Learn more: [Migrate to cloud authentication using Staged Rollout](../hybrid/how-to-connect-staged-rollout.md)
-1. On the **Azure Active Directory** menu, select **Azure AD Connect**. Then confirm that **Password Hash Sync** is enabled in the tenant.
+After you enable password hash sync and seamless SSO on the Azure AD Connect server, configure a staged rollout:
-1. Select **Enable staged rollout for managed user sign-in**.
+1. In the [Azure portal](https://portal.azure.com/#home), select **View** or **Manage Azure Active Directory**.
- ![Screenshot that shows the option to enable staged rollout.](media/migrate-okta-federation-to-azure-active-directory/enable-staged-rollout.png)
+ ![Screenshot of the Azure portal with welcome message.](media/migrate-okta-federation-to-azure-active-directory/azure-portal.png)
-1. Your **Password Hash Sync** setting might have changed to **On** after the server was configured. If the setting isn't enabled, enable it now.
+2. On the **Azure Active Directory** menu, select **Azure AD Connect**.
+3. Confirm **Password Hash Sync** is enabled in the tenant.
+4. Select **Enable staged rollout for managed user sign-in**.
- Notice that **Seamless single sign-on** is set to **Off**. If you attempt to enable it, you get an error because it's already enabled for users in the tenant.
+ ![Screenshot of the staged rollout option.](media/migrate-okta-federation-to-azure-active-directory/enable-staged-rollout.png)
-1. Select **Manage groups**.
+5. After the server configuration, **Password Hash Sync** setting can change to **On**.
+6. Enable the setting.
+7. **Seamless single sign-on** is **Off**. If you enable it, an error appears because it's enabled in the tenant.
+8. Select **Manage groups**.
- ![Screenshot of the Enable staged rollout features page in the Azure portal. A Manage groups button is visible.](media/migrate-okta-federation-to-azure-active-directory/password-hash-sync.png)
+ ![Screenshot of the Enable staged rollout features page in the Azure portal. A Manage groups button appears.](media/migrate-okta-federation-to-azure-active-directory/password-hash-sync.png)
-1. Follow the instructions to add a group to the password hash sync rollout. In the following example, the security group starts with 10 members.
+9. Add a group to the password hash sync rollout. In the following example, the security group starts with 10 members.
- ![Screenshot of the Manage groups for Password Hash Sync page in the Azure portal. A group is visible in a table.](media/migrate-okta-federation-to-azure-active-directory/example-security-group.png)
+ ![Screenshot of the Manage groups for Password Hash Sync page in the Azure portal. A group is in a table.](media/migrate-okta-federation-to-azure-active-directory/example-security-group.png)
-1. After you add the group, wait for about 30 minutes while the feature takes effect in your tenant. When the feature has taken effect, your users are no longer redirected to Okta when they attempt to access Office 365 services.
+10. Wait about 30 minutes for the feature to take effect in your tenant.
+11. When the feature takes effect, users aren't redirected to Okta when attempting to access Office 365 services.
The staged rollout feature has some unsupported scenarios: -- Legacy authentication protocols such as POP3 and SMTP aren't supported.-- If you've configured hybrid Azure AD join for use with Okta, all the hybrid Azure AD join flows go to Okta until the domain is defederated. A sign-on policy should remain in Okta to allow legacy authentication for hybrid Azure AD join Windows clients.
+* Legacy authentication protocols such as POP3 and SMTP aren't supported.
+* If you configured hybrid Azure AD join for Okta, the hybrid Azure AD join flows go to Okta until the domain is defederated.
+ * A sign-on policy remains in Okta for legacy authentication of hybrid Azure AD join Windows clients.
## Create an Okta app in Azure AD
-Users who have converted to managed authentication might still need to access applications in Okta. To allow users easy access to those applications, you can register an Azure AD application that links to the Okta home page.
+Users that converted to managed authentication might need access to applications in Okta. For user access to those applications, register an Azure AD application that links to the Okta home page.
-To configure the enterprise application registration for Okta:
+Configure the enterprise application registration for Okta.
1. In the [Azure portal](https://portal.azure.com/#home), under **Manage Azure Active Directory**, select **View**.
+2. On the left menu, under **Manage**, select **Enterprise applications**.
-1. On the left menu, under **Manage**, select **Enterprise applications**.
-
- ![Screenshot that shows the left menu of the Azure portal. Enterprise applications is visible.](media/migrate-okta-federation-to-azure-active-directory/enterprise-application.png)
+ ![Screenshot of the left menu of the Azure portal.](media/migrate-okta-federation-to-azure-active-directory/enterprise-application.png)
-1. On the **All applications** menu, select **New application**.
+3. On the **All applications** menu, select **New application**.
![Screenshot that shows the All applications page in the Azure portal. A new application is visible.](media/migrate-okta-federation-to-azure-active-directory/new-application.png)
-1. Select **Create your own application**. On the menu that opens, name the Okta app and select **Register an application you're working on to integrate with Azure AD**. Then select **Create**.
-
- :::image type="content" source="media/migrate-okta-federation-to-azure-active-directory/register-application.png" alt-text="Screenshot that shows the Create your own application menu. The app name is visible. The option to integrate with Azure A D is turned on." lightbox="media/migrate-okta-federation-to-azure-active-directory/register-application.png":::
+4. Select **Create your own application**.
+5. On the menu, name the Okta app.
+6. Select **Register an application you're working on to integrate with Azure AD**.
+7. Select **Create**.
+8. Select **Accounts in any organizational directory (Any Azure AD Directory - Multitenant)**.
+9. Select **Register**.
-1. Select **Accounts in any organizational directory (Any Azure AD Directory - Multitenant)**, and then select **Register**.
+ ![Screenshot of Register an application.](media/migrate-okta-federation-to-azure-active-directory/register-change-application.png)
- ![Screenshot that shows how to register an application and change the application account.](media/migrate-okta-federation-to-azure-active-directory/register-change-application.png)
+10. On the Azure AD menu, select **App registrations**.
+11. Open the created registration.
-1. On the Azure AD menu, select **App registrations**. Then open the newly created registration.
+ ![Screenshot of the App registrations page in the Azure portal. The new app registration appears.](media/migrate-okta-federation-to-azure-active-directory/app-registration.png)
- ![Screenshot that shows the App registrations page in the Azure portal. The new app registration is visible.](media/migrate-okta-federation-to-azure-active-directory/app-registration.png)
-
-1. Record your tenant ID and application ID.
+12. Record the Tenant ID and Application ID.
>[!Note]
- >You'll need the tenant ID and application ID to configure the identity provider in Okta.
-
- ![Screenshot that shows the Okta Application Access page in the Azure portal. The tenant I D and application I D are called out.](media/migrate-okta-federation-to-azure-active-directory/record-ids.png)
+ >You need the Tenant ID and Application ID to configure the identity provider in Okta.
-1. On the left menu, select **Certificates & secrets**. Then select **New client secret**. Give the secret a generic name and set its expiration date.
+ ![Screenshot of the Okta Application Access page in the Azure portal. The Tenant ID and Application ID appear.](media/migrate-okta-federation-to-azure-active-directory/record-ids.png)
-1. Record the value and ID of the secret.
+13. On the left menu, select **Certificates & secrets**.
+14. Select **New client secret**.
+15. Enter a secret name.
+16. Enter its expiration date.
+17. Record the secret value and ID.
>[!NOTE]
- >The value and ID aren't shown later. If you fail to record this information now, you'll have to regenerate a secret.
-
- ![Screenshot of the Certificates and secrets page. The value and I D of the secret are visible.](media/migrate-okta-federation-to-azure-active-directory/record-secrets.png)
+ >The value and ID don't appear later. If you don't record the information, you must regenerate a secret.
-1. On the left menu, select **API permissions**. Grant the application access to the OpenID Connect (OIDC) stack.
+ ![Screenshot of the Certificates and secrets page. The value and I D of the secret appear.](media/migrate-okta-federation-to-azure-active-directory/record-secrets.png)
-1. Select **Add a permission** > **Microsoft Graph** > **Delegated permissions**.
+18. On the left menu, select **API permissions**.
+19. Grant the application access to the OpenID Connect (OIDC) stack.
+20. Select **Add a permission**.
+21. Select **Microsoft Graph**
+22. Select **Delegated permissions**.
+23. In the OpenID permissions section, add **email**, **openid**, and **profile**.
+24. Select **Add permissions**.
+25. Select **Grant admin consent for \<tenant domain name>**.
+26. Wait for the **Granted** status to appear.
- :::image type="content" source="media/migrate-okta-federation-to-azure-active-directory/delegated-permissions.png" alt-text="Screenshot that shows the A P I permissions page of the Azure portal. A delegated permission for reading is visible." lightbox="media/migrate-okta-federation-to-azure-active-directory/delegated-permissions.png":::
+ ![Screenshot of the API permissions page with a message for granted consent.](media/migrate-okta-federation-to-azure-active-directory/grant-consent.png)
-1. In the OpenID permissions section, add **email**, **openid**, and **profile**. Then select **Add permissions**.
+27. On the left menu, select **Branding**.
+28. For **Home page URL**, add your user application home page.
- :::image type="content" source="media/migrate-okta-federation-to-azure-active-directory/add-permissions.png" alt-text="Screenshot that shows the A P I permissions page of the Azure portal. Permissions for email, openid, profile, and reading are visible." lightbox="media/migrate-okta-federation-to-azure-active-directory/add-permissions.png":::
+ ![Screenshot of the Branding page in the Azure portal.](media/migrate-okta-federation-to-azure-active-directory/add-branding.png)
-1. Select **Grant admin consent for \<tenant domain name>** and wait until the **Granted** status appears.
+29. In the Okta administration portal, to add a new identity provider, select **Security** then **Identity Providers**.
+30. Select **Add Microsoft**.
- ![Screenshot of the A P I permissions page that shows a message about granted consent.](media/migrate-okta-federation-to-azure-active-directory/grant-consent.png)
+ ![Screenshot of the Okta administration portal. Add Microsoft appears in the Add Identity Provider list.](media/migrate-okta-federation-to-azure-active-directory/configure-idp.png)
-1. On the left menu, select **Branding**. For **Home page URL**, add your user's application home page.
-
- ![Screenshot of the Branding page in the Azure portal. Several input boxes are visible, including one for the home page U R L.](media/migrate-okta-federation-to-azure-active-directory/add-branding.png)
-
-1. In the Okta administration portal, select **Security** > **Identity Providers** to add a new identity provider. Select **Add Microsoft**.
-
- ![Screenshot of the Okta administration portal. Add Microsoft is visible in the Add Identity Provider list.](media/migrate-okta-federation-to-azure-active-directory/configure-idp.png)
-
-1. On the **Identity Provider** page, copy your application ID to the **Client ID** field. Copy the client secret to the **Client Secret** field.
-
-1. Select **Show Advanced Settings**. By default, this configuration ties the user principal name (UPN) in Okta to the UPN in Azure AD for reverse-federation access.
+31. On the **Identity Provider** page, enter the Application ID in the **Client ID** field.
+32. Enter the client secret in the **Client Secret** field.
+33. Select **Show Advanced Settings**. By default, this configuration ties the user principal name (UPN) in Okta to the UPN in Azure AD for reverse-federation access.
>[!IMPORTANT]
- >If your UPNs in Okta and Azure AD don't match, select an attribute that's common between users.
-
-1. Finish your selections for autoprovisioning. By default, if no match is found for an Okta user, the system attempts to provision the user in Azure AD. If you've migrated provisioning away from Okta, select **Redirect to Okta sign-in page**.
+ >If UPNs in Okta and Azure AD don't match, select an attribute that's common between users.
- ![Screenshot of the General Settings page in the Okta admin portal. The option for redirecting to the Okta sign-in page is visible.](media/migrate-okta-federation-to-azure-active-directory/redirect-okta.png)
+34. Complete autoprovisioning selections.
+35. By default, if no match appears for an Okta user, the system attempts to provision the user in Azure AD. If you migrated provisioning away from Okta, select **Redirect to Okta sign-in page**.
- Now that you've created the identity provider (IDP), you need to send users to the correct IDP.
+ ![Screenshot of the General Settings page in the Okta admin portal. The option for redirecting to the Okta sign-in page appears.](media/migrate-okta-federation-to-azure-active-directory/redirect-okta.png)
-1. On the **Identity Providers** menu, select **Routing Rules** > **Add Routing Rule**. Use one of the available attributes in the Okta profile.
+You created the identity provider (IDP). Send users to the correct IDP.
-1. To direct sign-ins from all devices and IPs to Azure AD, set up the policy as the following image shows.
+1. On the **Identity Providers** menu, select **Routing Rules** then **Add Routing Rule**.
+2. Use one of the available attributes in the Okta profile.
+3. To direct sign-ins from devices and IPs to Azure AD, set up the policy seen in following image. In this example, the **Division** attribute is unused on all Okta profiles. It's a good choice for IDP routing.
- In this example, the **Division** attribute is unused on all Okta profiles, so it's a good choice for IDP routing.
+ ![Screenshot of the Edit Rule page in the Okta admin portal. A rule definition that involves the division attribute appears.](media/migrate-okta-federation-to-azure-active-directory/division-idp-routing.png)
- ![Screenshot of the Edit Rule page in the Okta admin portal. A rule definition that involves the division attribute is visible.](media/migrate-okta-federation-to-azure-active-directory/division-idp-routing.png)
+4. Record the redirect URI to add it to the application registration.
-1. Now that you've added the routing rule, record the redirect URI so you can add it to the application registration.
+ ![Screenshot of the redirect URI location.](media/migrate-okta-federation-to-azure-active-directory/application-registration.png)
- ![Screenshot that shows the location of the redirect U R I.](media/migrate-okta-federation-to-azure-active-directory/application-registration.png)
+5. On the application registration, on the left menu, select **Authentication**.
+6. Select **Add a platform**
+7. Select **Web**.
+8. Add the redirect URI you recorded in the IDP in Okta.
+9. Select **Access tokens** and **ID tokens**.
-1. On your application registration, on the left menu, select **Authentication**. Then select **Add a platform** > **Web**.
+ ![Screenshot of the Configure Web page in the Azure portal. A redirect URI appears. The access and I D tokens are selected.](media/migrate-okta-federation-to-azure-active-directory/access-id-tokens.png)
- :::image type="content" source="media/migrate-okta-federation-to-azure-active-directory/add-platform.png" alt-text="Screenshot of the Authentication page in the Azure portal. Add a platform and a Configure platforms menu are visible." lightbox="media/migrate-okta-federation-to-azure-active-directory/add-platform.png":::
+10. In the admin console, select **Directory**.
+11. Select **People**.
+12. Select a test user to edit the profile.
+13. In the profile, add **ToAzureAD**. See the following image.
+14. Select **Save**.
-1. Add the redirect URI that you recorded in the IDP in Okta. Then select **Access tokens** and **ID tokens**.
+ ![Screenshot of the Okta admin portal. Profile settings appear, and the Division box has ToAzureAD.](media/migrate-okta-federation-to-azure-active-directory/profile-editing.png)
- ![Screenshot of the Configure Web page in the Azure portal. A redirect U R I is visible. The access and I D tokens are selected.](media/migrate-okta-federation-to-azure-active-directory/access-id-tokens.png)
-
-1. In the admin console, select **Directory** > **People**. Select your first test user to edit the profile.
-
-1. In the profile, add **ToAzureAD** as in the following image. Then select **Save**.
-
- ![Screenshot of the Okta admin portal. Profile settings are visible, and the Division box contains ToAzureAD.](media/migrate-okta-federation-to-azure-active-directory/profile-editing.png)
-
-1. Try to sign in to the [Microsoft 356 portal](https://portal.office.com) as the modified user. If your user isn't part of the managed authentication pilot, your action enters a loop. To exit the loop, add the user to the managed authentication experience.
+15. Sign in to the [Microsoft 356 portal](https://portal.office.com) as the modified user. If your user isn't in the managed authentication pilot, your action enters a loop. To exit the loop, add the user to the managed authentication experience.
## Test Okta app access on pilot members
-After you configure the Okta app in Azure AD and you configure the IDP in the Okta portal, assign the application to users.
-
-1. In the Azure portal, select **Azure Active Directory** > **Enterprise applications**.
+After you configure the Okta app in Azure AD and configure the IDP in the Okta portal, assign the application to users.
-1. Select the app registration you created earlier and go to **Users and groups**. Add the group that correlates with the managed authentication pilot.
+1. In the Azure portal, select **Azure Active Directory** then **Enterprise applications**.
+2. Select the app registration you created.
+3. Go to **Users and groups**.
+4. Add the group that correlates with the managed authentication pilot.
>[!NOTE]
- >You can add users and groups only from the **Enterprise applications** page. You can't add users from the **App registrations** menu.
+ >You can add users and groups from the **Enterprise applications** page. You can't add users from the **App registrations** menu.
- ![Screenshot of the Users and groups page of the Azure portal. A group called Managed Authentication Staging Group is visible.](media/migrate-okta-federation-to-azure-active-directory/add-group.png)
+ ![Screenshot of the Users and groups page of the Azure portal. A group called Managed Authentication Staging Group appears.](media/migrate-okta-federation-to-azure-active-directory/add-group.png)
-1. After about 15 minutes, sign in as one of the managed authentication pilot users and go to [My Apps](https://myapplications.microsoft.com).
+5. Wait about 15 minutes.
+6. Sign in as a managed authentication pilot user.
+7. Go to [My Apps](https://myapplications.microsoft.com).
- ![Screenshot that shows the My Apps gallery. An icon for Okta Application Access is visible.](media/migrate-okta-federation-to-azure-active-directory/my-applications.png)
+ ![Screenshot of the My Apps gallery. An icon for Okta Application Access appears.](media/migrate-okta-federation-to-azure-active-directory/my-applications.png)
-1. Select the **Okta Application Access** tile to return the user to the Okta home page.
+8. To return to the Okta home page, select the **Okta Application Access** tile.
## Test managed authentication on pilot members
-After you configure the Okta reverse-federation app, have your users conduct full testing on the managed authentication experience. We recommend that you set up company branding to help your users recognize the tenant they're signing in to. For more information, see [Add branding to your organization's Azure AD sign-in page](../fundamentals/customize-branding.md).
+After you configure the Okta reverse-federation app, ask users to conduct testing on the managed authentication experience. We recommend you configure company branding to help users recognize the tenant.
+
+Learn more: [Configure your company branding](../fundamentals/customize-branding.md).
->[!IMPORTANT]
->Identify any additional Conditional Access policies you might need before you completely defederate the domains from Okta. To secure your environment before the full cut-off, see [Okta sign-on policies to Azure AD Conditional Access migration](migrate-okta-sign-on-policies-to-azure-active-directory-conditional-access.md).
+ >[!IMPORTANT]
+ >Before you defederate the domains from Okta, identify needed Conditional Access policies. You can secure your environment before cut-off. See, [Tutorial: Migrate Okta sign-on policies to Azure AD Conditional Access](migrate-okta-sign-on-policies-to-azure-active-directory-conditional-access.md).
## Defederate Office 365 domains
-When your organization is comfortable with the managed authentication experience, you can defederate your domain from Okta. To begin, use the following commands to connect to MSOnline PowerShell. If you don't already have the MSOnline PowerShell module, download it by entering `install-module MSOnline`.
+When your organization is comfortable with the managed authentication experience, you can defederate your domain from Okta. To begin, use the following commands to connect to Microsoft Graph PowerShell. If you don't have the Microsoft Graph PowerShell module, download it by entering `install-module MSOnline`.
```PowerShell import-module MSOnline
-Connect-Msolservice
-Set-msoldomainauthentication
+Connect-MgGraph
+New-MgDomainFederationConfiguration
-domainname yourdomain.com -authentication managed ```
-After you set the domain to managed authentication, you've successfully defederated your Office 365 tenant from Okta while maintaining user access to the Okta home page.
+After you set the domain to managed authentication, you've defederated your Office 365 tenant from Okta while maintaining user access to the Okta home page.
## Next steps -- [Migrate Okta sync provisioning to Azure AD Connect-based synchronization](migrate-okta-sync-provisioning-to-azure-active-directory.md)-- [Migrate Okta sign-on policies to Azure AD Conditional Access](migrate-okta-sign-on-policies-to-azure-active-directory-conditional-access.md)-- [Migrate applications from Okta to Azure AD](migrate-applications-from-okta-to-azure-active-directory.md)
+- [Tutorial: Migrate Okta sync provisioning to Azure AD Connect-based synchronization](migrate-okta-sync-provisioning-to-azure-active-directory.md)
+- [Tutorial: Migrate Okta sign-on policies to Azure AD Conditional Access](migrate-okta-sign-on-policies-to-azure-active-directory-conditional-access.md)
+- [Tutorial: Migrate your applications from Okta to Azure AD](migrate-applications-from-okta-to-azure-active-directory.md)
active-directory Migrate Okta Sync Provisioning To Azure Active Directory https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/migrate-okta-sync-provisioning-to-azure-active-directory.md
Title: Migrate Okta sync provisioning to Azure AD Connect
-description: Learn how to migrate user provisioning from Okta to Azure Active Directory (Azure AD). See how to use Azure AD Connect server or Azure AD cloud provisioning.
+ Title: Tutorial to migrate Okta sync provisioning to Azure AD Connect-based synchronization
+description: Migrate user provisioning from Okta to Azure Active Directory (Azure AD). See how to use Azure AD Connect server or Azure AD cloud provisioning.
Previously updated : 05/19/2022 Last updated : 05/23/2023
-# Tutorial: Migrate Okta sync provisioning to Azure AD Connect-based synchronization
+# Tutorial: Migrate Okta sync provisioning to Azure AD Connect synchronization
-In this tutorial, you'll learn how your organization can migrate user provisioning from Okta to Azure Active Directory (Azure AD) and migrate either User Sync or Universal Sync to Azure AD Connect. This capability enables further provisioning into Azure AD and Office 365.
+In this tutorial, learn to migrate user provisioning from Okta to Azure Active Directory (Azure AD) and migrate User Sync or Universal Sync to Azure AD Connect. This capability enables provisioning into Azure AD and Office 365.
-Migrating synchronization platforms isn't a small change. Each step of the process mentioned in this article should be validated against your own environment before you remove Azure AD Connect from staging mode or enable the Azure AD cloud provisioning agent.
+ > [!NOTE]
+ > When migrating synchronization platforms, validate steps in this article against your environment before you remove Azure AD Connect from staging mode or enable the Azure AD cloud provisioning agent.
## Prerequisites
-When you switch from Okta provisioning to Azure AD, you have two choices. You can use either an Azure AD Connect server or Azure AD cloud provisioning. To understand the differences between the two, read the [comparison article from Microsoft](../cloud-sync/what-is-cloud-sync.md#comparison-between-azure-ad-connect-and-cloud-sync).
+When you switch from Okta provisioning to Azure AD, there are two choices. Use an Azure AD Connect server or Azure AD cloud provisioning.
-Azure AD cloud provisioning is the most familiar migration path for Okta customers who use Universal Sync or User Sync. The cloud provisioning agents are lightweight. You can install them on or near domain controllers like the Okta directory sync agents. Don't install them on the same server.
+Learn more: [Comparison between Azure AD Connect and cloud sync](../cloud-sync/what-is-cloud-sync.md#comparison-between-azure-ad-connect-and-cloud-sync).
-Use an Azure AD Connect server if your organization needs to take advantage of any of the following technologies when you synchronize users:
+Azure AD cloud provisioning is the most familiar migration path for Okta customers who use Universal Sync or User Sync. The cloud provisioning agents are lightweight. You can install them on, or near, domain controllers like the Okta directory sync agents. Don't install them on the same server.
+
+When you synchronize users, use an Azure AD Connect server if your organization needs any of the following technologies:
- Device synchronization: Hybrid Azure AD join or Hello for Business - Pass-through authentication - Support for more than 150,000 objects - Support for writeback
->[!NOTE]
->Take all prerequisites into consideration when you install Azure AD Connect or Azure AD cloud provisioning. To learn more before you continue with installation, see [Prerequisites for Azure AD Connect](../hybrid/how-to-connect-install-prerequisites.md).
+ >[!NOTE]
+ >Take all prerequisites into consideration when you install Azure AD Connect or Azure AD cloud provisioning. Before you continue with installation, see [Prerequisites for Azure AD Connect](../hybrid/how-to-connect-install-prerequisites.md).
## Confirm ImmutableID attribute synchronized by Okta
-ImmutableID is the core attribute used to tie synchronized objects to their on-premises counterparts. Okta takes the Active Directory objectGUID of an on-premises object and converts it to a Base64-encoded string. By default, it then stamps that string to the ImmutableID field in Azure AD.
+The ImmutableID attribute ties synchronized objects to their on-premises counterparts. Okta takes the Active Directory objectGUID of an on-premises object and converts it to a Base64-encoded string. By default, it then stamps that string to the ImmutableID field in Azure AD.
-You can connect to Azure AD PowerShell and examine the current ImmutableID value. If you've never used the Azure AD PowerShell module, run
-`Install-Module AzureAD` in an administrative PowerShell session before you run the following commands:
+You can connect to Microsoft Graph PowerShell and examine the current ImmutableID value. If you've never used the Microsoft Graph PowerShell module, run
+`Install-Module AzureAD` in an administrative session before you run the following commands:
```Powershell Import-module AzureAD
-Connect-AzureAD
+Connect-MgGraph
```
-If you already have the module, you might receive a warning to update to the latest version if it's out of date.
+If you have the module, a warning might appear to update to the latest version.
-After the module is installed, import it and follow these steps to connect to the Azure AD service:
+1. Import the module after it's installed.
+2. In the authentication window, enter Global Administrator credentials.
-1. Enter your global administrator credentials in the authentication window.
+ ![Screenshot of the Microsoft Graph PowerShell window. The install-module, import-module, and connect commands are visible with their output.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/import-module.png)
- ![Screenshot of the Azure A D PowerShell window. The install-module, import-module, and connect commands are visible with their output.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/import-module.png)
+3. Connect to the tenant.
+4. Verify ImmutableID value settings. The following example is the default of converting the objectGUID into the ImmutableID.
-1. After you connect to the tenant, verify the settings for your ImmutableID values. The following example uses the Okta default approach of converting the objectGUID into the ImmutableID.
+ ![Screenshot of the Microsoft Graph PowerShell window. The Get-AzureADUser command is visible. Its output includes the UserPrincipalName and the ImmutableId.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/okta-default-objectid.png)
- ![Screenshot of the Azure A D PowerShell window. The Get-AzureADUser command is visible. Its output includes the UserPrincipalName and the ImmutableId.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/okta-default-objectid.png)
-1. There are several ways to manually confirm the conversion from objectGUID to Base64 on-premises. To test an individual value, use these commands:
+5. Manually confirm the conversion from objectGUID to Base64 on-premises. To test an individual value, use these commands:
```PowerShell
- Get-ADUser onpremupn | fl objectguid
+ Get-MgUser onpremupn | fl objectguid
$objectguid = 'your-guid-here-1010' [system.convert]::ToBase64String(([GUID]$objectGUID).ToByteArray()) ```
- ![Screenshot of the Azure A D PowerShell window. The commands that convert an objectGUID to an ImmutableID are visible with their output.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/manual-objectguid.png)
+ ![Screenshot of the Azure AD PowerShell window. The commands converting an objectGUID to an ImmutableID appear with output.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/manual-objectguid.png)
+
+## ObjectGUID mass-validation methods
-## Mass validation methods for objectGUID
+Before you move to Azure AD Connect, it's critical to validate that the ImmutableID values in Azure AD match their on-premises values.
-Before you move to Azure AD Connect, it's critical to validate that the ImmutableID values in Azure AD exactly match their on-premises values.
+The following command gets on-premises Azure AD users and exports a list of their objectGUID values and ImmutableID values already calculated to a CSV file.
-The following command gets *all* on-premises Azure AD users and exports a list of their objectGUID values and ImmutableID values already calculated to a CSV file.
+1. Run this command in Microsoft Graph PowerShell on an on-premises domain controller:
-1. Run this command in PowerShell on an on-premises domain controller:
```PowerShell
- Get-ADUser -Filter * -Properties objectGUID | Select-Object
+ Get-MgUser -Filter * -Properties objectGUID | Select-Object
UserPrincipalName, Name, objectGUID, @{Name = 'ImmutableID'; Expression = { [system.convert]::ToBase64String((GUID).tobytearray()) } } | export-csv C:\Temp\OnPremIDs.csv ```
- ![Screenshot of a .csv file that lists sample output data. Columns include UserPrincipalName, Name, objectGUID, and ImmutableID.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/domain-controller.png)
+ ![Screenshot of a .csv file with sample output data. Columns include UserPrincipalName, Name, objectGUID, and ImmutableID.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/domain-controller.png)
+
+1. Run this command in a Microsoft Graph PowerShell session to list the synchronized values:
-1. Run this command in an Azure AD PowerShell session to list the already synchronized values:
```powershell
- Get-AzureADUser -all $true | Where-Object {$_.dirsyncenabled -like
+ Get-MgUser -all $true | Where-Object {$_.dirsyncenabled -like
"true"} | Select-Object UserPrincipalName, @{Name = 'objectGUID'; Expression = { [GUID][System.Convert]::FromBase64String($_.ImmutableID) } }, ImmutableID | export-csv C:\\temp\\AzureADSyncedIDS.csv ```
- ![Screenshot of a .csv file that lists sample output data. Columns include UserPrincipalName, objectGUID, and ImmutableID.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/azure-ad-powershell.png)
+ ![Screenshot of a .csv file with sample output data. Columns include UserPrincipalName, objectGUID, and ImmutableID.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/azure-ad-powershell.png)
- After you have both exports, confirm that each user's ImmutableID values match.
+3. After both exports, confirm user ImmutableID values match.
>[!IMPORTANT]
- >If your ImmutableID values in the cloud don't match objectGUID values, you've modified the defaults for Okta sync. You've likely chosen another attribute to determine ImmutableID values. Before you move on to the next section, it's critical to identify which source attribute is populating ImmutableID values. Ensure that you update the attribute Okta is syncing before you disable Okta sync.
+ >If your ImmutableID values in the cloud don't match objectGUID values, you've modified the defaults for Okta sync. You've likely chosen another attribute to determine ImmutableID values. Before going the next section, identify which source attribute populates ImmutableID values. Before you disable Okta sync, update the attribute Okta is syncing.
## Install Azure AD Connect in staging mode
-After you've prepared your list of source and destination targets, it's time to install an Azure AD Connect server. If you've opted to use Azure AD Connect cloud provisioning, skip this section.
-
-1. Download and install Azure AD Connect on your chosen server by following the instructions in [Custom installation of Azure Active Directory Connect](../hybrid/how-to-connect-install-custom.md).
-
-1. In the left panel, select **Identifying users**.
+After you prepare your list of source and destination targets, install an Azure AD Connect server. If you use Azure AD Connect cloud provisioning, skip this section.
-1. On the **Uniquely identifying your users** page, under **Select how users should be identified with Azure AD**, select **Choose a specific attribute**. Then select **mS-DS-ConsistencyGUID** if you haven't modified the Okta defaults.
+1. Download and install Azure AD Connect on a server. See, [Custom installation of Azure Active Directory Connect](../hybrid/how-to-connect-install-custom.md).
+2. In the left panel, select **Identifying users**.
+3. On the **Uniquely identifying your users** page, under **Select how users should be identified with Azure AD**, select **Choose a specific attribute**.
+4. If you haven't modified the Okta default, select **mS-DS-ConsistencyGUID**.
>[!WARNING]
- >This step is critical. Ensure that the attribute that you select for a source anchor is what *currently* populates your existing Azure AD users. If you select the wrong attribute, you need to uninstall and reinstall Azure AD Connect to reselect this option.
+ >This step is critical. Ensure the attribute you select for a source anchor currently populates your Azure AD users. If you select the wrong attribute, uninstall and reinstall Azure AD Connect to reselect this option.
- ![Screenshot of the Azure A D Connect window. The page is titled Uniquely identifying your users, and the mS-DS-ConsistencyGuid attribute is selected.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/consistency-guid.png)
-
-1. Select **Next**.
-
-1. In the left panel, select **Configure**.
-
-1. On the **Ready to configure** page, select **Enable staging mode**. Then select **Install**.
-
- ![Screenshot of the Azure A D Connect window. The page is titled Ready to configure, and the Enable staging mode checkbox is selected.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/enable-staging-mode.png)
+ ![Screenshot of the Azure AD Connect window. The page is titled Uniquely identifying your users, and the mS-DS-ConsistencyGuid attribute is selected.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/consistency-guid.png)
-1. After the configuration is complete, select **Exit**.
+5. Select **Next**.
+6. In the left panel, select **Configure**.
+7. On the **Ready to configure** page, select **Enable staging mode**.
+8. Select **Install**.
- Before you exit the staging mode, verify that the ImmutableID values match properly.
+ ![Screenshot of the Azure AD Connect window. The page is titled Ready to configure, and the Enable staging mode checkbox is selected.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/enable-staging-mode.png)
-1. Open **Synchronization Service** as an administrator.
+9. Verify the ImmutableID values match.
+10. When the configuration is complete, select **Exit**.
+11. Open **Synchronization Service** as an administrator.
- ![Screenshot that shows the Synchronization Service shortcut menus, with More and Run as administrator selected.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/open-sync-service.png)
+ ![Screenshot of the Synchronization Service shortcut menus, with More and Run as administrator selected.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/open-sync-service.png)
-1. Find the **Full Synchronization** to the domain.onmicrosoft.com connector space. Check that there are users under the **Connectors with Flow Updates** tab.
+12. Find the **Full Synchronization** to the domain.onmicrosoft.com connector space.
+13. Confirm there are users under the **Connectors with Flow Updates** tab.
![Screenshot of the Synchronization Service window. The Connectors with Flow Updates tab is selected.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/connector-flow-update.png)
-1. Verify there are no deletions pending in the export. Select the **Connectors** tab, and then highlight the domain.onmicrosoft.com connector space. Then select **Search Connector Space**.
+14. Verify no pending deletions in the export.
+15. Select the **Connectors** tab.
+16. Highlight the domain.onmicrosoft.com connector space.
+17. Select **Search Connector Space**.
![Screenshot of the Synchronization Service window. The Search Connector Space action is selected.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/search-connector-space.png)
-1. In the **Search Connector Space** dialog, under **Scope**, select **Pending Export**.
+18. In the **Search Connector Space** dialog, under **Scope**, select **Pending Export**.
![Screenshot of the Search Connector Space dialog. In the Scope list, Pending Export is selected.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/pending-export.png)
-1. Select **Delete** and then select **Search**. If all objects have matched properly, there should be zero matching records for **Deletes**. Record any objects pending deletion and their on-premises values.
+19. Select **Delete**.
+20. Select **Search**. If all objects match, no matching records appear for **Deletes**.
+21. Record objects pending deletion and their on-premises values.
- ![Screenshot of the Search Connector Space dialog. In the search results, Text is highlighted that indicates that there were zero matching records.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/delete-matching-records.png)
+ ![Screenshot of the Search Connector Space dialog. In the search results, Text is highlighted indicating no matching records.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/delete-matching-records.png)
-1. Clear **Delete**, and select **Add** and **Modify**. Then select **Search**. You should see update functions for all users currently being synchronized to Azure AD via Okta. Add any new objects that Okta isn't currently syncing, but that exist in the organizational unit (OU) structure that was selected during the Azure AD Connect installation.
+22. Clear **Delete**.
+23. Select **Add**.
+24. Select **Modify**.
+25. Select **Search**.
+26. Update functions appear for users being synchronized to Azure AD via Okta. Add new objects Okta isn't syncing, which are in the organizational unit (OU) structure selected during Azure AD Connect installation.
- ![Screenshot of the Search Connector Space dialog. In the search results, seven records are visible.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/add-new-object.png)
+ ![Screenshot of the Search Connector Space dialog. In the search results, seven records appear.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/add-new-object.png)
-1. To see what Azure AD Connect will communicate with Azure AD, double-click an update.
+27. To see what Azure AD Connect communicates with Azure AD, double-click an update.
-1. If there are any **add** functions for a user who already exists in Azure AD, their on-premises account doesn't match their cloud account. AD Connect has determined it will create a new object and record any new adds that are unexpected. Make sure to correct the ImmutableID value in Azure AD before you exit the staging mode.
+ > [!NOTE]
+ > If there are **add** functions for a user in Azure AD, their on-premises account doesn't match the cloud account. AD Connect creates a new object and records new and unexpected adds.
- In this example, Okta stamped the **mail** attribute to the user's account, even though the on-premises value wasn't properly filled in. When Azure AD Connect takes over John Smith's account, the **mail** attribute is deleted from his object.
+28. Before you exit the staging mode, correct the ImmutableID value in Azure AD.
- Verify that your updates still include all attributes expected in Azure AD. If multiple attributes are being deleted, you might need to manually populate these on-premises AD values before you remove the staging mode.
+In this example, Okta stamped the **mail** attribute to the user's account, although the on-premises value wasn't accurate. When Azure AD Connect takes over the account, the **mail** attribute is deleted from the object.
- ![Screenshot of the Connector Space Object Properties window. The attributes for user John Smith are visible.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/on-premises-ad-values.png)
+29. Verify updates include attributes expected in Azure AD. If multiple attributes are being deleted, you can populate on-premises AD values before you remove the staging mode.
+
+ ![Screenshot of the Connector Space Object Properties window. User attributes appear.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/on-premises-ad-values.png)
>[!NOTE]
- >Before you continue to the next step, ensure all user attributes are syncing properly and appear on the **Pending Export** tab as expected. If they're deleted, make sure their ImmutableID values match and the user is in one of the selected OUs for synchronization.
+ >Before you continue, ensure user attributes are syncing and appear on the **Pending Export** tab. If they're deleted, ensure the ImmutableID values match and the user is in a selected OU for synchronization.
## Install Azure AD cloud sync agents
-After you've prepared your list of source and destination targets, install and configure Azure AD cloud sync agents by following the instructions in [Tutorial: Integrate a single forest with a single Azure AD tenant](../cloud-sync/tutorial-single-forest.md). If you've opted to use an Azure AD Connect server, skip this section.
+After you prepare your list of source and destination targets, install and configure Azure AD cloud sync agents. See, [Tutorial: Integrate a single forest with a single Azure AD tenant](../cloud-sync/tutorial-single-forest.md).
+
+ > [!NOTE]
+ > If you use an Azure AD Connect server, skip this section.
## Disable Okta provisioning to Azure AD
-After you've verified the Azure AD Connect installation and your pending exports are in order, it's time to disable Okta provisioning to Azure AD.
+After you verify the Azure AD Connect installation, disable Okta provisioning to Azure AD.
-1. Go to your Okta portal, select **Applications**, and then select your Okta app used to provision users to Azure AD. Open the **Provisioning** tab and select the **Integration** section.
+1. Go to the Okta portal
+2. Select **Applications**.
+3. Select the Okta app that provisions users to Azure AD.
+4. Select the **Provisioning** tab.
+5. Select the **Integration** section.
- ![Screenshot that shows the Integration section in the Okta portal.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/integration-section.png)
+ ![Screenshot of the Integration section in the Okta portal.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/integration-section.png)
-1. Select **Edit**, clear the **Enable API integration** option, and select **Save**.
+6. Select **Edit**.
+7. Clear the **Enable API integration** option.
+8. Select **Save**.
- ![Screenshot that shows the Integration section in the Okta portal. A message on the page says provisioning is not enabled.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/edit-api-integration.png)
+ ![Screenshot of the Integration section in the Okta portal. A message states provisioning is not enabled.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/edit-api-integration.png)
>[!NOTE]
- >If you have multiple Office 365 apps that handle provisioning to Azure AD, ensure they're all switched off.
+ >If you have multiple Office 365 apps that handle provisioning to Azure AD, ensure they switched off.
## Disable staging mode in Azure AD Connect
-After you disable Okta provisioning, the Azure AD Connect server is ready to begin synchronizing objects. If you've chosen to go with Azure AD cloud sync agents, skip this section.
+After you disable Okta provisioning, the Azure AD Connect server can synchronize objects.
-1. Run the installation wizard from the desktop again and select **Configure**.
+ >[!NOTE]
+ >If you use Azure AD cloud sync agents, skip this section.
- ![Screenshot of the Azure A D Connect window. The welcome page is visible with a Configure button at the bottom.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/azure-ad-connect-server.png)
+1. From the desktop, run the installation wizard from the desktop.
+2. Select **Configure**.
-1. Select **Configure staging mode** and then select **Next**. Enter your global administrator credentials.
+ ![Screenshot of the Azure A D Connect window. The welcome page appears with a Configure button.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/azure-ad-connect-server.png)
- ![Screenshot of the Azure A D Connect window. On the left, Tasks is selected. On the Additional tasks page, Configure staging mode is selected.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/configure-staging-mode.png)
+3. Select **Configure staging mode**
+4. Select **Next**.
+5. Enter Global Administrator credentials.
-1. Clear **Enable staging mode** and select **Next**.
+ ![Screenshot of the Azure AD Connect window. Tasks is selected. On the Additional tasks page, Configure staging mode is selected.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/configure-staging-mode.png)
+
+6. Clear **Enable staging mode**.
+7. Select **Next**.
![Screenshot of the Azure A D Connect window. On the left, Staging Mode is selected. On the Configure staging mode page, nothing is selected.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/uncheck-enable-staging-mode.png)
-1. Select **Configure** to continue.
+8. Select **Configure**.
![Screenshot of the Ready to configure page in Azure A D Connect. On the left, Configure is selected. A Configure button is also visible.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/ready-to-configure.png)
-1. After the configuration finishes, open the **Synchronization Service** as an administrator. View the **Export** on the domain.onmicrosoft.com connector. Verify that all additions, updates, and deletions are done as expected.
+9. After configuration, open the **Synchronization Service** as an administrator.
+10. On the domain.onmicrosoft.com connector, view the **Export**.
+11. Verify additions, updates, and deletions.
- ![Screenshot of the Synchronization Service window. An export line is selected, and export statistics like the number of adds, updates, and deletes are visible.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/verify-sync-service.png)
+ ![Screenshot of the Synchronization Service window. An export line is selected, and export statistics appear.](./media/migrate-okta-sync-provisioning-to-azure-active-directory-connect-based-synchronization/verify-sync-service.png)
-You've now successfully migrated to Azure AD Connect server-based provisioning. You can update and expand the feature set of Azure AD Connect by rerunning the installation wizard.
+12. Migration is complete. Rerun the installation wizard to update and expand Azure AD Connect features.
## Enable cloud sync agents
-After you disable Okta provisioning, the Azure AD cloud sync agent is ready to begin synchronizing objects.
+After you disable Okta provisioning, the Azure AD cloud sync agent can synchronize objects.
1. Go to the [Azure portal](https://portal.azure.com/).-
-1. Browse to **Azure Active Directory** > **Azure AD Connect** > **Cloud Sync** > **Configuration** profile, select **Enable**.
-
-1. Return to the provisioning menu and select **Logs**.
-
-1. Check that the provisioning connector has properly updated in-place objects. The cloud sync agents are nondestructive. Their updates fail if a match isn't found.
-
-1. If a user is mismatched, make the necessary updates to bind the ImmutableID values. Then restart the cloud provisioning sync.
+2. Browse to **Azure Active Directory**.
+3. Select **Azure AD Connect**.
+4. Select **Cloud Sync**.
+5. Select **Configuration** profile
+6. Select **Enable**.
+7. Return to the provisioning menu and select **Logs**.
+8. Confirm the provisioning connector updated in-place objects. The cloud sync agents are nondestructive. Updates fail if a match isn't found.
+9. If a user is mismatched, make updates to bind the ImmutableID values.
+10. Restart the cloud provisioning sync.
## Next steps
-For more information about migrating from Okta to Azure AD, see these resources:
--- [Migrate applications from Okta to Azure AD](migrate-applications-from-okta-to-azure-active-directory.md)-- [Migrate Okta federation to Azure AD managed authentication](migrate-okta-federation-to-azure-active-directory.md)-- [Migrate Okta sign-on policies to Azure AD Conditional Access](migrate-okta-sign-on-policies-to-azure-active-directory-conditional-access.md)
+- [Tutorial: Migrate your applications from Okta to Azure AD](migrate-applications-from-okta-to-azure-active-directory.md)
+- [Tutorial: Migrate Okta federation to Azure AD-managed authentication](migrate-okta-federation-to-azure-active-directory.md)
+- [Tutorial: Migrate Okta sign-on policies to Azure AD Conditional Access](migrate-okta-sign-on-policies-to-azure-active-directory-conditional-access.md)
active-directory Secure Hybrid Access https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/secure-hybrid-access.md
The following partners offer solutions to support [Conditional Access policies p
||| |Akamai Technologies|[Tutorial: Azure AD SSO integration with Akamai](../saas-apps/akamai-tutorial.md)| |Citrix Systems, Inc.|[Tutorial: Azure AD SSO integration with Citrix ADC SAML Connector for Azure AD (Kerberos-based authentication)](../saas-apps/citrix-netscaler-tutorial.md)|
+|Cloudflare, Inc.|[Tutorial: Configure Cloudflare with Azure AD for secure hybrid access](cloudflare-azure-ad-integration.md)|
|Datawiza|[Tutorial: Configure Secure Hybrid Access with Azure AD and Datawiza](datawiza-with-azure-ad.md)| |F5, Inc.|[Integrate F5 BIG-IP with Azure AD](f5-aad-integration.md)</br>[Tutorial: Configure F5 BIG-IP SSL-VPN for Azure AD SSO](f5-aad-password-less-vpn.md)| |Progress Software Corporation, Progress Kemp|[Tutorial: Azure AD SSO integration with Kemp LoadMaster Azure AD integration](../saas-apps/kemp-tutorial.md)|
The following partners offer solutions to support [Conditional Access policies p
|Amazon Web Service, Inc.|[Tutorial: Azure AD SSO integration with AWS ClientVPN](../saas-apps/aws-clientvpn-tutorial.md)| |Check Point Software Technologies Ltd.|[Tutorial: Azure AD single SSO integration with Check Point Remote Secure Access VPN](../saas-apps/check-point-remote-access-vpn-tutorial.md)| |Cisco Systems, Inc.|[Tutorial: Azure AD SSO integration with Cisco AnyConnect](../saas-apps/cisco-anyconnect.md)|
-|Cloudflare, Inc.|[Tutorial: Configure Cloudflare with Azure AD for secure hybrid access](cloudflare-azure-ad-integration.md)|
|Fortinet, Inc.|[Tutorial: Azure AD SSO integration with FortiGate SSL VPN](../saas-apps/fortigate-ssl-vpn-tutorial.md)| |Palo Alto Networks|[Tutorial: Azure AD SSO integration with Palo Alto Networks Admin UI](../saas-apps/paloaltoadmin-tutorial.md)| |Pulse Secure|[Tutorial: Azure AD SSO integration with Pulse Connect Secure (PCS)](../saas-apps/pulse-secure-pcs-tutorial.md)</br>[Tutorial: Azure AD SSO integration with Pulse Secure Virtual Traffic Manager](../saas-apps/pulse-secure-virtual-traffic-manager-tutorial.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
Previously updated : 10/31/2022 Last updated : 05/22/2023
For full details on SLA coverage and instructions on requesting a service credit
## No planned downtime
-You rely on Azure AD to provide identity and access management for your vital systems. To ensure Azure AD is available when business operations require it, Microsoft does not plan downtime for Azure AD system maintenance. Instead, maintenance is performed as the service runs, without customer impact.
+You rely on Azure AD to provide identity and access management for your vital systems. To ensure Azure AD is available when business operations require it, Microsoft doesn't plan downtime for Azure AD system maintenance. Instead, maintenance is performed as the service runs, without customer impact.
## Recent worldwide SLA performance To help you plan for moving workloads to Azure AD, we publish past SLA performance. These numbers show the level at which Azure AD met the requirements in the [SLA for Azure Active Directory (Azure AD)](https://azure.microsoft.com/support/legal/sla/active-directory/v1_1/), for all tenants.
-The SLA attainment is truncated at three places after the decimal. Numbers are not rounded up, so actual SLA attainment is higher than indicated.
+The SLA attainment is truncated at three places after the decimal. Numbers aren't rounded up, so actual SLA attainment is higher than indicated.
| Month | 2021 | 2022 | 2023 | | | | | |
The SLA attainment is truncated at three places after the decimal. Numbers are n
### How is Azure AD SLA measured?
-The Azure AD SLA is measured in a way that reflects customer authentication experience, rather than simply reporting on whether the system is available to outside connections. This means that the calculation is based on whether:
+The Azure AD SLA is measured in a way that reflects customer authentication experience, rather than simply reporting on whether the system is available to outside connections. This distinction means that the calculation is based on if:
- Users can authenticate - Azure AD successfully issues tokens for target apps after authentication
-The numbers above are a global total of Azure AD authentications across all customers and geographies.
+The numbers in the table are a global total of Azure AD authentications across all customers and geographies.
## Incident history
-All incidents that seriously impact Azure AD performance are documented in the [Azure status history](https://azure.status.microsoft/status/history/). Not all events documented in Azure status history are serious enough to cause Azure AD to go below its SLA. You can view information about the impact of incidents, as well as a root cause analysis of what caused the incident and what steps Microsoft took to prevent future incidents.
+All incidents that seriously impact Azure AD performance are documented in the [Azure status history](https://azure.status.microsoft/status/history/). Not all events documented in Azure status history are serious enough to cause Azure AD to go below its SLA. You can view information about the impact of incidents, and a root cause analysis of what caused the incident and what steps Microsoft took to prevent future incidents.
+
+## Tenant-level SLA (preview)
+
+In addition to providing global SLA performance, Azure AD now provides tenant-level SLA performance. This feature is currently in preview.
+
+To access your tenant-level SLA performance:
+
+1. Navigate to the [Microsoft Entra admin center](https://entra.microsoft.com) using the Reports Reader role (or higher).
+1. Go to **Azure AD** and select **Scenario Health** from the side menu.
+1. Select the **SLA Monitoring** tab.
+1. Hover over the graph to see the SLA performance for that month.
+
+![Screenshot of the tenant-level SLA results.](media/reference-azure-ad-sla-performance/tenent-level-sla.png)
## Next steps
active-directory Avionte Bold Saml Federated Sso Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/avionte-bold-saml-federated-sso-tutorial.md
+
+ Title: Azure Active Directory SSO integration with Avionte Bold SAML Federated SSO
+description: Learn how to configure single sign-on between Azure Active Directory and Avionte Bold SAML Federated SSO.
++++++++ Last updated : 05/16/2023++++
+# Azure Active Directory SSO integration with Avionte Bold SAML Federated SSO
+
+In this article, you learn how to integrate Avionte Bold SAML Federated SSO with Azure Active Directory (Azure AD). Avionte provides staffing and recruiting software solutions for the staffing industry. When you integrate Avionte Bold SAML Federated SSO with Azure AD, you can:
+
+* Control in Azure AD who has access to Avionte Bold SAML Federated SSO.
+* Enable your users to be automatically signed-in to Avionte Bold SAML Federated SSO with their Azure AD accounts.
+* Manage your accounts in one central location - the Azure portal.
+
+You configure and test Azure AD single sign-on for Avionte Bold SAML Federated SSO in a test environment. Avionte Bold SAML Federated SSO supports **SP** initiated single sign-on.
+
+## Prerequisites
+
+To integrate Azure Active Directory with Avionte Bold SAML Federated SSO, you need:
+
+* An Azure AD user account. If you don't already have one, you can [Create an account for free](https://azure.microsoft.com/free/?WT.mc_id=A261C142F).
+* One of the following roles: Global Administrator, Cloud Application Administrator, Application Administrator, or owner of the service principal.
+* An Azure AD subscription. If you don't have a subscription, you can get a [free account](https://azure.microsoft.com/free/).
+* Avionte Bold SAML Federated SSO single sign-on (SSO) enabled subscription.
+
+## Add application and assign a test user
+
+Before you begin the process of configuring single sign-on, you need to add the Avionte Bold SAML Federated SSO application from the Azure AD gallery. You need a test user account to assign to the application and test the single sign-on configuration.
+
+### Add Avionte Bold SAML Federated SSO from the Azure AD gallery
+
+Add Avionte Bold SAML Federated SSO from the Azure AD application gallery to configure single sign-on with Avionte Bold SAML Federated SSO. For more information on how to add application from the gallery, see the [Quickstart: Add application from the gallery](../manage-apps/add-application-portal.md).
+
+### Create and assign Azure AD test user
+
+Follow the guidelines in the [create and assign a user account](../manage-apps/add-application-portal-assign-users.md) article to create a test user account in the Azure portal called B.Simon.
+
+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, and assign roles. The wizard also provides a link to the single sign-on configuration pane in the Azure portal. [Learn more about Microsoft 365 wizards.](/microsoft-365/admin/misc/azure-ad-setup-guides).
+
+## Configure Azure AD SSO
+
+Complete the following steps to enable Azure AD single sign-on in the Azure portal.
+
+1. In the Azure portal, on the **Avionte Bold SAML Federated SSO** application integration page, find the **Manage** section and select **single sign-on**.
+1. On the **Select a single sign-on method** page, select **SAML**.
+1. On the **Set up single sign-on with SAML** page, select the pencil icon for **Basic SAML Configuration** to edit the settings.
+
+ ![Screenshot shows how to edit Basic SAML Configuration.](common/edit-urls.png "Basic Configuration")
+
+1. On the **Basic SAML Configuration** section, perform the following steps:
+
+ a. In the **Identifier** textbox, type a value using the following pattern:
+ `urn:auth0:avionte:<CustomerEnvironment>-federated-saml-sso`
+
+ b. In the **Reply URL** textbox, type a URL using the following pattern:
+ `https://login.myavionte.com/login/callback?connection=<CustomerEnvironment>-federated-saml-sso`
+
+ c. In the **Sign on URL** textbox, type a URL using the following pattern:
+ `https://login.myavionte.com/login/callback?connection=<CustomerEnvironment>-federated-saml-sso`
+
+ > [!Note]
+ > These values are not real. Update these values with the actual Identifier, Reply URL and Sign on URL. Contact [Avionte Bold SAML Federated SSO support team](mailto:Support@avionte.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 **Certificate (Base64)** and select **Download** to download the certificate and save it on your computer.
+
+ ![Screenshot shows the Certificate download link.](common/certificatebase64.png "Certificate")
+
+1. On the **Set up Avionte Bold SAML Federated SSO** section, copy the appropriate URL(s) based on your requirement.
+
+ ![Screenshot shows to copy configuration appropriate URL.](common/copy-configuration-urls.png "Metadata")
+
+## Configure Avionte Bold SAML Federated SSO
+
+To configure single sign-on on **Avionte Bold SAML Federated SSO** side, you need to send the downloaded **Certificate (Base64)** and appropriate copied URLs from Azure portal to [Avionte Bold SAML Federated SSO support team](mailto:Support@avionte.com). They set this setting to have the SAML SSO connection set properly on both sides.
+
+### Create Avionte Bold SAML Federated SSO test user
+
+In this section, you create a user called Britta Simon at Avionte Bold SAML Federated SSO. Work with [Avionte Bold SAML Federated SSO support team](mailto:Support@avionte.com) to add the users in the Avionte Bold SAML Federated SSO platform. 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.
+
+* Click on **Test this application** in Azure portal. This will redirect to Avionte Bold SAML Federated SSO Sign-on URL where you can initiate the login flow.
+
+* Go to Avionte Bold SAML Federated SSO Sign-on URL directly and initiate the login flow from there.
+
+* You can use Microsoft My Apps. When you click the Avionte Bold SAML Federated SSO tile in the My Apps, this will redirect to Avionte Bold SAML Federated SSO 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).
+
+## Next steps
+
+Once you configure Avionte Bold SAML Federated SSO you can enforce session control, which protects exfiltration and infiltration of your organizationΓÇÖs sensitive data in real time. Session control extends from Conditional Access. [Learn how to enforce session control with Microsoft Cloud App Security](/cloud-app-security/proxy-deployment-aad).
active-directory Bugsnag Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/bugsnag-tutorial.md
Previously updated : 11/21/2022 Last updated : 05/23/2023 # Tutorial: Azure Active Directory integration with Bugsnag
-In this tutorial, you'll learn how to integrate Bugsnag with Azure Active Directory (Azure AD). When you integrate Bugsnag with Azure AD, you can:
+In this tutorial, you learn how to integrate Bugsnag with Azure Active Directory (Azure AD). When you integrate Bugsnag with Azure AD, you can:
* Control in Azure AD who has access to Bugsnag. * Enable your users to be automatically signed-in to Bugsnag with their Azure AD accounts.
To configure the integration of Bugsnag into Azure AD, you need to add Bugsnag f
1. In the **Add from the gallery** section, type **Bugsnag** in the search box. 1. Select **Bugsnag** 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, and walk through the SSO configuration as well. [Learn more about Microsoft 365 wizards.](/microsoft-365/admin/misc/azure-ad-setup-guides)
## Configure and test Azure AD SSO for Bugsnag
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 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.
In this section, you'll create a test user in the Azure portal called B.Simon.
### Assign the Azure AD test user
-In this section, you'll enable B.Simon to use Azure single sign-on by granting access to Bugsnag.
+In this section, you enable B.Simon to use Azure single sign-on by granting access to Bugsnag.
1. In the Azure portal, select **Enterprise Applications**, and then select **All applications**. 1. In the applications list, select **Bugsnag**. 1. In the app's overview page, find the **Manage** section and select **Users and groups**. 1. Select **Add user**, then select **Users and groups** in the **Add Assignment** dialog. 1. In the **Users and groups** dialog, select **B.Simon** from the Users list, then click the **Select** button at the bottom of the screen.
-1. If you are expecting a role to be assigned to the users, you can select it from the **Select a role** dropdown. If no role has been set up for this app, you see "Default Access" role selected.
+1. If you're expecting a role to be assigned to the users, you can select it from the **Select a role** dropdown. If no role has been set up for this app, you see "Default Access" role selected.
1. In the **Add Assignment** dialog, click the **Assign** button. ## Configure Bugsnag SSO
-To configure single sign-on on **Bugsnag** side, you need to send the **App Federation Metadata Url** to [Bugsnag support team](mailto:support@bugsnag.com). They set this setting to have the SAML SSO connection set properly on both sides.
+1. Sign into the Bugsnag website as an administrator.
+
+1. In BugSnag settings, select **Organization settings -> Single sign-on**.
+
+ ![Screenshot of Authentication page.](./media/bugsnag-tutorial/authentication.png)
+
+1. Perform the following steps in the **Enable single sign-on** page:
+
+ ![Screenshot of SSO settings page.](./media/bugsnag-tutorial/enable-sso.png)
+
+ a. In the **SAML/IdP Metadata** field, enter the **App Federation Metadata Url** value, which you copied from Azure portal.
+
+ b. Copy the **SAML Endpoint URL** value and paste this value into the **Reply URL** text box in the **Basic SAML Configuration** section in the Azure portal.
+
+ c. Click **ENABLE SSO**.
+
+> [!NOTE]
+> For more information on the Bugsnag SSO configuration, please follow [this](https://docs.bugsnag.com/product/single-sign-on/other/#setup-saml) guide.
### Create Bugsnag test user
-In this section, a user called Britta Simon is created in Bugsnag. Bugsnag supports just-in-time user provisioning, which is enabled by default. There is no action item for you in this section. If a user doesn't already exist in Bugsnag, a new one is created after authentication.
+In this section, a user called Britta Simon is created in Bugsnag. Bugsnag supports just-in-time user provisioning, which is enabled by default. There's no action item for you in this section. If a user doesn't already exist in Bugsnag, a new one is created after authentication.
## Test SSO
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 Bugsnag 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 Bugsnag 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 Bugsnag 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 Bugsnag 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 Bugsnag 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 Careership Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/careership-tutorial.md
+
+ Title: Azure Active Directory SSO integration with CAREERSHIP
+description: Learn how to configure single sign-on between Azure Active Directory and CAREERSHIP.
++++++++ Last updated : 05/16/2023++++
+# Azure Active Directory SSO integration with CAREERSHIP
+
+In this article, you learn how to integrate CAREERSHIP with Azure Active Directory (Azure AD). CAREERSHIP is the NO.1 LMS (LEARNING MANAGEMENT SYSTEM) for Enterprises. It is an LMS that has continued to evolve while responding to the demands of Japan companies, and while it is high performance and multi-functional, it is also easy to use at the same time. When you integrate CAREERSHIP with Azure AD, you can:
+
+* Control in Azure AD who has access to CAREERSHIP.
+* Enable your users to be automatically signed-in to CAREERSHIP with their Azure AD accounts.
+* Manage your accounts in one central location - the Azure portal.
+
+You configure and test Azure AD single sign-on for CAREERSHIP in a test environment. CAREERSHIP supports **SP** initiated single sign-on.
+
+## Prerequisites
+
+To integrate Azure Active Directory with CAREERSHIP, you need:
+
+* An Azure AD user account. If you don't already have one, you can [Create an account for free](https://azure.microsoft.com/free/?WT.mc_id=A261C142F).
+* One of the following roles: Global Administrator, Cloud Application Administrator, Application Administrator, or owner of the service principal.
+* An Azure AD subscription. If you don't have a subscription, you can get a [free account](https://azure.microsoft.com/free/).
+* CAREERSHIP single sign-on (SSO) enabled subscription.
+
+## Add application and assign a test user
+
+Before you begin the process of configuring single sign-on, you need to add the CAREERSHIP application from the Azure AD gallery. You need a test user account to assign to the application and test the single sign-on configuration.
+
+### Add CAREERSHIP from the Azure AD gallery
+
+Add CAREERSHIP from the Azure AD application gallery to configure single sign-on with CAREERSHIP. For more information on how to add application from the gallery, see the [Quickstart: Add application from the gallery](../manage-apps/add-application-portal.md).
+
+### Create and assign Azure AD test user
+
+Follow the guidelines in the [create and assign a user account](../manage-apps/add-application-portal-assign-users.md) article to create a test user account in the Azure portal called B.Simon.
+
+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, and assign roles. The wizard also provides a link to the single sign-on configuration pane in the Azure portal. [Learn more about Microsoft 365 wizards.](/microsoft-365/admin/misc/azure-ad-setup-guides).
+
+## Configure Azure AD SSO
+
+Complete the following steps to enable Azure AD single sign-on in the Azure portal.
+
+1. In the Azure portal, on the **CAREERSHIP** application integration page, find the **Manage** section and select **single sign-on**.
+1. On the **Select a single sign-on method** page, select **SAML**.
+1. On the **Set up single sign-on with SAML** page, select the pencil icon for **Basic SAML Configuration** to edit the settings.
+
+ ![Screenshot shows how to edit Basic SAML Configuration.](common/edit-urls.png "Basic Configuration")
+
+1. On the **Basic SAML Configuration** section, perform the following steps:
+
+ a. In the **Identifier** textbox, type a value using the following pattern:
+ `https://<tenant_name>.learningpark.jp/e/`
+
+ b. In the **Reply URL** textbox, type a URL using the following pattern:
+ `https://<tenant_name>.learningpark.jp/e/SamlListener`
+
+ c. In the **Sign on URL** textbox, type a URL using the following pattern:
+ `https://<tenant_name>.learningpark.jp/e/Saml?corp_code=<corporate_code>`
+
+ > [!Note]
+ > These values are not real. Update these values with the actual Identifier, Reply URL and Sign on URL. Contact [CAREERSHIP support team](mailto:asp-support@lightworks.co.jp) 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.
+
+ ![Screenshot shows the Certificate download link.](common/metadataxml.png "Certificate")
+
+1. On the **Set up CAREERSHIP** section, copy the appropriate URL(s) based on your requirement.
+
+ ![Screenshot shows to copy configuration appropriate URL.](common/copy-configuration-urls.png "Metadata")
+
+## Configure CAREERSHIP SSO
+
+To configure single sign-on on **CAREERSHIP** side, you need to send the downloaded **Federation Metadata XML** and appropriate copied URLs from Azure portal to [CAREERSHIP support team](mailto:asp-support@lightworks.co.jp). They set this setting to have the SAML SSO connection set properly on both sides.
+
+### Create CAREERSHIP test user
+
+In this section, you create a user called Britta Simon at CAREERSHIP. Work with [CAREERSHIP support team](mailto:asp-support@lightworks.co.jp) to add the users in the CAREERSHIP platform. 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.
+
+* Click on **Test this application** in Azure portal. This will redirect to CAREERSHIP Sign-on URL where you can initiate the login flow.
+
+* Go to CAREERSHIP Sign-on URL directly and initiate the login flow from there.
+
+* You can use Microsoft My Apps. When you click the CAREERSHIP tile in the My Apps, this will redirect to CAREERSHIP 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
+
+* [What is single sign-on with Azure Active Directory?](../manage-apps/what-is-single-sign-on.md)
+* [Plan a single sign-on deployment](../manage-apps/plan-sso-deployment.md).
+
+## Next steps
+
+Once you configure CAREERSHIP you can enforce session control, which protects exfiltration and infiltration of your organizationΓÇÖs sensitive data in real time. Session control extends from Conditional Access. [Learn how to enforce session control with Microsoft Cloud App Security](/cloud-app-security/proxy-deployment-aad).
active-directory Cisco Expressway Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/cisco-expressway-tutorial.md
+
+ Title: Azure Active Directory SSO integration with Cisco Expressway
+description: Learn how to configure single sign-on between Azure Active Directory and Cisco Expressway.
++++++++ Last updated : 05/22/2023++++
+# Azure Active Directory SSO integration with Cisco Expressway
+
+In this article, you learn how to integrate Cisco Expressway with Azure Active Directory (Azure AD). Cisco Expressway is a suite of applications that provide call control and related functions for IP Telephony systems, also provides tools for media quality analysis in the presence of media flows. When you integrate Cisco Expressway with Azure AD, you can:
+
+* Control in Azure AD who has access to Cisco Expressway.
+* Enable your users to be automatically signed-in to Cisco Expressway with their Azure AD accounts.
+* Manage your accounts in one central location - the Azure portal.
+
+You configure and test Azure AD single sign-on for Cisco Expressway in a test environment. Cisco Expressway supports **SP** initiated single sign-on.
+
+## Prerequisites
+
+To integrate Azure Active Directory with Cisco Expressway, you need:
+
+* An Azure AD user account. If you don't already have one, you can [Create an account for free](https://azure.microsoft.com/free/?WT.mc_id=A261C142F).
+* One of the following roles: Global Administrator, Cloud Application Administrator, Application Administrator, or owner of the service principal.
+* An Azure AD subscription. If you don't have a subscription, you can get a [free account](https://azure.microsoft.com/free/).
+* Cisco Expressway single sign-on (SSO) enabled subscription.
+
+## Add application and assign a test user
+
+Before you begin the process of configuring single sign-on, you need to add the Cisco Expressway application from the Azure AD gallery. You need a test user account to assign to the application and test the single sign-on configuration.
+
+### Add Cisco Expressway from the Azure AD gallery
+
+Add Cisco Expressway from the Azure AD application gallery to configure single sign-on with Cisco Expressway. For more information on how to add application from the gallery, see the [Quickstart: Add application from the gallery](../manage-apps/add-application-portal.md).
+
+### Create and assign Azure AD test user
+
+Follow the guidelines in the [create and assign a user account](../manage-apps/add-application-portal-assign-users.md) article to create a test user account in the Azure portal called B.Simon.
+
+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, and assign roles. The wizard also provides a link to the single sign-on configuration pane in the Azure portal. [Learn more about Microsoft 365 wizards.](/microsoft-365/admin/misc/azure-ad-setup-guides).
+
+## Configure Azure AD SSO
+
+Complete the following steps to enable Azure AD single sign-on in the Azure portal.
+
+1. In the Azure portal, on the **Cisco Expressway** application integration page, find the **Manage** section and select **single sign-on**.
+1. On the **Select a single sign-on method** page, select **SAML**.
+1. On the **Set up single sign-on with SAML** page, select the pencil icon for **Basic SAML Configuration** to edit the settings.
+
+ ![Screenshot shows how to edit Basic SAML Configuration.](common/edit-urls.png "Basic Configuration")
+
+1. On the **Basic SAML Configuration** section, if you have **Service Provider metadata file** then perform the following steps:
+
+ a. Click **Upload metadata file**.
+
+ ![Screenshot shows how to upload metadata file.](common/upload-metadata.png "File")
+
+ b. Click on **folder logo** to select the metadata file and click **Upload**.
+
+ ![Screenshot shows how to choose and browse metadata file.](common/browse-upload-metadata.png "Folder")
+
+ c. After the metadata file is successfully uploaded, the **Identifier** and **Reply URL** values get auto populated in Basic SAML Configuration section.
+
+ > [!Note]
+ > You will get the **Service Provider metadata file** from the [Cisco Expressway support team](mailto:Tp-global@cisco.com). If the **Identifier** and **Reply URL** values do not get auto populated, then fill the values manually according to your requirement.
+
+1. Cisco Expressway 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.
+
+ ![Screenshot shows the image of attributes configuration.](common/default-attributes.png "Image")
+
+1. In addition to above, Cisco Expressway application expects few more attributes to be passed back in SAML response, which are shown below. These attributes are also pre populated but you can review them as per your requirements.
+
+ | Name | Source Attribute|
+ | | |
+ | uid | user.onpremisessamaccountname |
+
+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.
+
+ ![Screenshot shows the Certificate download link.](common/metadataxml.png "Certificate")
+
+1. On the **Set up Cisco Expressway** section, copy the appropriate URL(s) based on your requirement.
+
+ ![Screenshot shows how to copy configuration appropriate URL.](common/copy-configuration-urls.png "Metadata")
+
+## Configure Cisco Expressway SSO
+
+To configure single sign-on on **Cisco Expressway** side, you need to send the downloaded **Federation Metadata XML** and appropriate copied URLs from Azure portal to [Cisco Expressway support team](mailto:Tp-global@cisco.com). They set this setting to have the SAML SSO connection set properly on both sides.
+
+### Create Cisco Expressway test user
+
+In this section, you create a user called Britta Simon in Cisco Expressway. Work with [Cisco Expressway support team](mailto:Tp-global@cisco.com) to add the users in the Cisco Expressway platform. 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.
+
+* Click on **Test this application** in Azure portal. This will redirect to Cisco Expressway Sign-on URL where you can initiate the login flow.
+
+* Go to Cisco Expressway Sign on URL directly and initiate the login flow from there.
+
+* You can use Microsoft My Apps. When you click the Cisco Expressway tile in the My Apps, this will redirect to Cisco Expressway 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
+
+* [What is single sign-on with Azure Active Directory?](../manage-apps/what-is-single-sign-on.md)
+* [Plan a single sign-on deployment](../manage-apps/plan-sso-deployment.md).
+
+## Next steps
+
+Once you configure Cisco Expressway you can enforce session control, which protects exfiltration and infiltration of your organizationΓÇÖs sensitive data in real time. Session control extends from Conditional Access. [Learn how to enforce session control with Microsoft Cloud App Security](/cloud-app-security/proxy-deployment-aad).
active-directory Cosgrid Networks Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/cosgrid-networks-tutorial.md
+
+ Title: Azure Active Directory SSO integration with Cosgrid Networks
+description: Learn how to configure single sign-on between Azure Active Directory and Cosgrid Networks.
++++++++ Last updated : 05/24/2023++++
+# Azure Active Directory SSO integration with Cosgrid Networks
+
+In this article, you learn how to integrate Cosgrid Networks with Azure Active Directory (Azure AD). Cosgrid Networks offers secure and efficient enterprise connections through SD-WAN and SASE solutions. Our flexible architecture transforms your network infrastructure for seamless operations. When you integrate Cosgrid Networks with Azure AD, you can:
+
+* Control in Azure AD who has access to Cosgrid Networks.
+* Enable your users to be automatically signed-in to Cosgrid Networks with their Azure AD accounts.
+* Manage your accounts in one central location - the Azure portal.
+
+You configure and test Azure AD single sign-on for Cosgrid Networks in a test environment. Cosgrid Networks supports **SP** initiated single sign-on.
+
+> [!NOTE]
+> Identifier of this application is a fixed string value so only one instance can be configured in one tenant.
+
+## Prerequisites
+
+To integrate Azure Active Directory with Cosgrid Networks, you need:
+
+* An Azure AD user account. If you don't already have one, you can [Create an account for free](https://azure.microsoft.com/free/?WT.mc_id=A261C142F).
+* One of the following roles: Global Administrator, Cloud Application Administrator, Application Administrator, or owner of the service principal.
+* An Azure AD subscription. If you don't have a subscription, you can get a [free account](https://azure.microsoft.com/free/).
+* Cosgrid Networks single sign-on (SSO) enabled subscription.
+
+## Add application and assign a test user
+
+Before you begin the process of configuring single sign-on, you need to add the Cosgrid Networks application from the Azure AD gallery. You need a test user account to assign to the application and test the single sign-on configuration.
+
+### Add Cosgrid Networks from the Azure AD gallery
+
+Add Cosgrid Networks from the Azure AD application gallery to configure single sign-on with Cosgrid Networks. For more information on how to add application from the gallery, see the [Quickstart: Add application from the gallery](../manage-apps/add-application-portal.md).
+
+### Create and assign Azure AD test user
+
+Follow the guidelines in the [create and assign a user account](../manage-apps/add-application-portal-assign-users.md) article to create a test user account in the Azure portal called B.Simon.
+
+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, and assign roles. The wizard also provides a link to the single sign-on configuration pane in the Azure portal. [Learn more about Microsoft 365 wizards.](/microsoft-365/admin/misc/azure-ad-setup-guides).
+
+## Configure Azure AD SSO
+
+Complete the following steps to enable Azure AD single sign-on in the Azure portal.
+
+1. In the Azure portal, on the **Cosgrid Networks** application integration page, find the **Manage** section and select **single sign-on**.
+1. On the **Select a single sign-on method** page, select **SAML**.
+1. On the **Set up single sign-on with SAML** page, select the pencil icon for **Basic SAML Configuration** to edit the settings.
+
+ ![Screenshot shows how to edit Basic SAML Configuration.](common/edit-urls.png "Basic Configuration")
+
+1. On the **Basic SAML Configuration** section, perform the following steps:
+
+ a. In the **Identifier** textbox, type the URL:
+ `https://cosgridnetworks.in/api/v1/auth/acs/`
+
+ b. In the **Reply URL** textbox, type the URL:
+ `https://cosgridnetworks.in/api/v1/auth/acs/`
+
+ c. In the **Sign on URL** textbox, type the URL:
+ `https://www.cosgrid.net/auth/login`
+
+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.
+
+ ![Screenshot shows the Certificate download link.](common/copy-metadataurl.png "Certificate")
+
+## Configure Cosgrid Networks SSO
+
+To configure single sign-on on **Cosgrid Networks** side, you need to send the **App Federation Metadata Url** to [Cosgrid Networks support team](mailto:contact@cosgrid.com). They set this setting to have the SAML SSO connection set properly on both sides.
+
+### Create Cosgrid Networks test user
+
+In this section, you create a user called Britta Simon at Cosgrid Networks. Work with [Cosgrid Networks support team](mailto:contact@cosgrid.com) to add the users in the Cosgrid Networks platform. 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.
+
+* Click on **Test this application** in Azure portal. This will redirect to Cosgrid Networks Sign-on URL where you can initiate the login flow.
+
+* Go to Cosgrid Networks Sign-on URL directly and initiate the login flow from there.
+
+* You can use Microsoft My Apps. When you click the Cosgrid Networks tile in the My Apps, this will redirect to Cosgrid Networks 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
+
+* [What is single sign-on with Azure Active Directory?](../manage-apps/what-is-single-sign-on.md)
+* [Plan a single sign-on deployment](../manage-apps/plan-sso-deployment.md).
+
+## Next steps
+
+Once you configure Cosgrid Networks you can enforce session control, which protects exfiltration and infiltration of your organizationΓÇÖs sensitive data in real time. Session control extends from Conditional Access. [Learn how to enforce session control with Microsoft Cloud App Security](/cloud-app-security/proxy-deployment-aad).
active-directory Delivery Solutions Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/delivery-solutions-tutorial.md
+
+ Title: Azure Active Directory SSO integration with Delivery Solutions
+description: Learn how to configure single sign-on between Azure Active Directory and Delivery Solutions.
++++++++ Last updated : 05/24/2023++++
+# Azure Active Directory SSO integration with Delivery Solutions
+
+In this article, you'll learn how to integrate Delivery Solutions with Azure Active Directory (Azure AD). Delivery Solutions is an OXM platform that enables your omni channel strategy via same-day delivery, curbside, in-store pickup, shipping & post-purchase channels. When you integrate Delivery Solutions with Azure AD, you can:
+
+* Control in Azure AD who has access to Delivery Solutions.
+* Enable your users to be automatically signed-in to Delivery Solutions with their Azure AD accounts.
+* Manage your accounts in one central location - the Azure portal.
+
+You'll configure and test Azure AD single sign-on for Delivery Solutions in a test environment. Delivery Solutions supports both **SP** and **IDP** initiated single sign-on and **Just In Time** user provisioning.
+
+## Prerequisites
+
+To integrate Azure Active Directory with Delivery Solutions, you need:
+
+* An Azure AD user account. If you don't already have one, you can [Create an account for free](https://azure.microsoft.com/free/?WT.mc_id=A261C142F).
+* One of the following roles: Global Administrator, Cloud Application Administrator, Application Administrator, or owner of the service principal.
+* An Azure AD subscription. If you don't have a subscription, you can get a [free account](https://azure.microsoft.com/free/).
+* Delivery Solutions single sign-on (SSO) enabled subscription.
+
+## Add application and assign a test user
+
+Before you begin the process of configuring single sign-on, you need to add the Delivery Solutions application from the Azure AD gallery. You need a test user account to assign to the application and test the single sign-on configuration.
+
+### Add Delivery Solutions from the Azure AD gallery
+
+Add Delivery Solutions from the Azure AD application gallery to configure single sign-on with Delivery Solutions. For more information on how to add application from the gallery, see the [Quickstart: Add application from the gallery](../manage-apps/add-application-portal.md).
+
+### Create and assign Azure AD test user
+
+Follow the guidelines in the [create and assign a user account](../manage-apps/add-application-portal-assign-users.md) article to create a test user account in the Azure portal called B.Simon.
+
+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, and assign roles. The wizard also provides a link to the single sign-on configuration pane in the Azure portal. [Learn more about Microsoft 365 wizards.](/microsoft-365/admin/misc/azure-ad-setup-guides).
+
+## Configure Azure AD SSO
+
+Complete the following steps to enable Azure AD single sign-on in the Azure portal.
+
+1. In the Azure portal, on the **Delivery Solutions** application integration page, find the **Manage** section and select **single sign-on**.
+1. On the **Select a single sign-on method** page, select **SAML**.
+1. On the **Set up single sign-on with SAML** page, select the pencil icon for **Basic SAML Configuration** to edit the settings.
+
+ ![Screenshot shows how to edit Basic SAML Configuration.](common/edit-urls.png "Basic Configuration")
+
+1. On the **Basic SAML Configuration** section, perform the following steps:
+
+ a. In the **Identifier** textbox, type a value using the following pattern:
+ `<ENVIRONMENT>.portal.deliverysolutions.co`
+
+ b. In the **Reply URL** textbox, type a URL using the following pattern:
+ `https://<ENVIRONMENT>.api.deliverysolutions.co/authentications/saml/response/<Base64_Tenant_ID>`
+
+1. If you wish to configure the application in **SP** initiated mode, then perform the following step:
+
+ In the **Sign on URL** textbox, type a URL using the following pattern:
+ `https://<ENVIRONMENT>.portal.deliverysolutions.co/#/login/saml/<Tenant_ID>`
+
+ > [!NOTE]
+ > These values are not real. Update these values with the actual Identifier, Reply URL and Sign on URL. Contact [Delivery Solutions support team](mailto:support@deliverysolutions.co) to get these values. You can also refer to the patterns shown in the **Basic SAML Configuration** section in the Azure portal.
+
+1. Delivery Solutions 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.
+
+ ![Screenshot shows the image of attributes configuration.](common/default-attributes.png "Image")
+
+1. In addition to above, Delivery Solutions application expects few more attributes to be passed back in SAML response, which are shown below. These attributes are also pre populated but you can review them as per your requirements.
+
+ | Name | Source Attribute|
+ | | |
+ | brandIds | user.jobtitle |
+ | storeIds | user.department |
+ | role | user.assignedroles |
+
+ > [!NOTE]
+ > Please click [here](../develop/howto-add-app-roles-in-azure-ad-apps.md#app-roles-ui) to know how to configure Role in Azure AD.
+
+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.
+
+ ![Screenshot shows the Certificate download link.](common/certificatebase64.png "Certificate")
+
+1. On the **Set up Delivery Solutions** section, copy the appropriate URL(s) based on your requirement.
+
+ ![Screenshot shows to copy configuration appropriate URL.](common/copy-configuration-urls.png "Metadata")
+
+## Configure Delivery Solutions SSO
+
+1. Log in to your Delivery Solutions company site as an administrator.
+
+1. Go to **Business** > **Settings** > **Authentication** and enable **Configure** button.
+
+ ![Screenshot that shows the Settings and Business page.](./media/delivery-solutions-tutorial/settings.png "Business")
+
+1. In the **SSO Configuration** page, perform the following steps:
+
+ ![Screenshot that shows the Configuration Settings.](./media/delivery-solutions-tutorial/configure.png "Configuration")
+
+ 1. Select **SAML** type of SSO from the dropdown.
+
+ 1. Open the downloaded **Certificate (Base64)** from the Azure portal into Notepad and paste the content into the **Idp Certificate** textbox.
+
+ 1. In the **Entity ID/Issuer Url** textbox, paste the **Azure AD Identifier** value, which you have copied from the Azure portal.
+
+ 1. In the **Login URL/SSO Endpoint** textbox, paste the **Login URL**, which you have copied from the Azure portal.
+
+ 1. In the **Logout URL/SSO Endpoint** textbox, paste the **Logout URL**, which you have copied from the Azure portal.
+
+ 1. Select **User Role** from the dropdown and save the configuration.
+
+### Create Delivery Solutions test user
+
+In this section, a user called B.Simon is created in Delivery Solutions. Delivery Solutions supports just-in-time user provisioning, which is enabled by default. There's no action item for you in this section. If a user doesn't already exist in Delivery Solutions, a new one is commonly created after authentication.
+
+## Test SSO
+
+In this section, you test your Azure AD single sign-on configuration with following options.
+
+#### SP initiated:
+
+* Click on **Test this application** in Azure portal. This will redirect to Delivery Solutions Sign-on URL where you can initiate the login flow.
+
+* Go to Delivery Solutions 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 Delivery Solutions 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 Delivery Solutions 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 Delivery Solutions for which you set up the SSO. For more information about the My Apps, see [Introduction to the My Apps](../user-help/my-apps-portal-end-user-access.md).
+
+## Additional resources
+
+* [What is single sign-on with Azure Active Directory?](../manage-apps/what-is-single-sign-on.md)
+* [Plan a single sign-on deployment](../manage-apps/plan-sso-deployment.md).
+
+## Next steps
+
+Once you configure Delivery Solutions you can enforce session control, which protects exfiltration and infiltration of your organizationΓÇÖs sensitive data in real time. Session control extends from Conditional Access. [Learn how to enforce session control with Microsoft Cloud App Security](/cloud-app-security/proxy-deployment-aad).
active-directory Ibm Tririga On Cloud Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/ibm-tririga-on-cloud-tutorial.md
+
+ Title: Azure Active Directory SSO integration with IBM TRIRIGA on Cloud
+description: Learn how to configure single sign-on between Azure Active Directory and IBM TRIRIGA on Cloud.
++++++++ Last updated : 05/16/2023++++
+# Azure Active Directory SSO integration with IBM TRIRIGA on Cloud
+
+In this article, you learn how to integrate IBM TRIRIGA on Cloud with Azure Active Directory (Azure AD). IWMS that integrates functionalities across real estate, capital projects, facilities, workplace operations, portfolio data, and environmental and energy management within a single technology platform. When you integrate IBM TRIRIGA on Cloud with Azure AD, you can:
+
+* Control in Azure AD who has access to IBM TRIRIGA on Cloud.
+* Enable your users to be automatically signed-in to IBM TRIRIGA on Cloud with their Azure AD accounts.
+* Manage your accounts in one central location - the Azure portal.
+
+You configure and test Azure AD single sign-on for IBM TRIRIGA on Cloud in a test environment. IBM TRIRIGA on Cloud supports **IDP** initiated single sign-on.
+
+## Prerequisites
+
+To integrate Azure Active Directory with IBM TRIRIGA on Cloud, you need:
+
+* An Azure AD user account. If you don't already have one, you can [Create an account for free](https://azure.microsoft.com/free/?WT.mc_id=A261C142F).
+* One of the following roles: Global Administrator, Cloud Application Administrator, Application Administrator, or owner of the service principal.
+* An Azure AD subscription. If you don't have a subscription, you can get a [free account](https://azure.microsoft.com/free/).
+* IBM TRIRIGA on Cloud single sign-on (SSO) enabled subscription.
+
+## Add application and assign a test user
+
+Before you begin the process of configuring single sign-on, you need to add the IBM TRIRIGA on Cloud application from the Azure AD gallery. You need a test user account to assign to the application and test the single sign-on configuration.
+
+### Add IBM TRIRIGA on Cloud from the Azure AD gallery
+
+Add IBM TRIRIGA on Cloud from the Azure AD application gallery to configure single sign-on with IBM TRIRIGA on Cloud. For more information on how to add application from the gallery, see the [Quickstart: Add application from the gallery](../manage-apps/add-application-portal.md).
+
+### Create and assign Azure AD test user
+
+Follow the guidelines in the [create and assign a user account](../manage-apps/add-application-portal-assign-users.md) article to create a test user account in the Azure portal called B.Simon.
+
+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, and assign roles. The wizard also provides a link to the single sign-on configuration pane in the Azure portal. [Learn more about Microsoft 365 wizards.](/microsoft-365/admin/misc/azure-ad-setup-guides).
+
+## Configure Azure AD SSO
+
+Complete the following steps to enable Azure AD single sign-on in the Azure portal.
+
+1. In the Azure portal, on the **IBM TRIRIGA on Cloud** application integration page, find the **Manage** section and select **single sign-on**.
+1. On the **Select a single sign-on method** page, select **SAML**.
+1. On the **Set up single sign-on with SAML** page, select the pencil icon for **Basic SAML Configuration** to edit the settings.
+
+ ![Screenshot shows how to edit Basic SAML Configuration.](common/edit-urls.png "Basic Configuration")
+
+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://<CustomerName>.tririga.com` |
+ | `https://<CustomerName-Environment>.tririga.com` |
+
+ b. In the **Reply URL** textbox, type a URL using one of the following patterns:
+
+ | **Reply URL** |
+ |-|
+ | `https://<CustomerName>.tririga.com/samlsps` |
+ | `https://<CustomerName-Environment>.tririga.com/samlsps` |
+
+ > [!Note]
+ > These values are not real. Update these values with the actual Identifier and Reply URL. Contact [IBM TRIRIGA on Cloud support team](https://www.ibm.com/mysupport) 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.
+
+ ![Screenshot shows the Certificate download link.](common/metadataxml.png "Certificate")
+
+1. On the **Set up IBM TRIRIGA on Cloud** section, copy the appropriate URL(s) based on your requirement.
+
+ ![Screenshot shows to copy configuration appropriate URL.](common/copy-configuration-urls.png "Metadata")
+
+## Configure IBM TRIRIGA on Cloud SSO
+
+To configure single sign-on on **IBM TRIRIGA on Cloud** side, you need to send the downloaded **Federation Metadata XML** and appropriate copied URLs from Azure portal to [IBM TRIRIGA on Cloud support team](https://www.ibm.com/mysupport). They set this setting to have the SAML SSO connection set properly on both sides
+
+### Create IBM TRIRIGA on Cloud test user
+
+In this section, you create a user called Britta Simon in IBM TRIRIGA on Cloud. Work with [IBM TRIRIGA on Cloud support team](https://www.ibm.com/mysupport) to add the users in the IBM TRIRIGA on Cloud platform. 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.
+
+* Click on Test this application in Azure portal and you should be automatically signed in to the IBM TRIRIGA on Cloud for which you set up the SSO.
+
+* You can use Microsoft My Apps. When you click the IBM TRIRIGA on Cloud tile in the My Apps, you should be automatically signed in to the IBM TRIRIGA on Cloud for which you set up the SSO. For more information about the My Apps, see [Introduction to the My Apps](../user-help/my-apps-portal-end-user-access.md).
+
+## Additional resources
+
+* [What is single sign-on with Azure Active Directory?](../manage-apps/what-is-single-sign-on.md)
+* [Plan a single sign-on deployment](../manage-apps/plan-sso-deployment.md).
+
+## Next steps
+
+Once you configure IBM TRIRIGA on Cloud you can enforce session control, which protects exfiltration and infiltration of your organizationΓÇÖs sensitive data in real time. Session control extends from Conditional Access. [Learn how to enforce session control with Microsoft Cloud App Security](/cloud-app-security/proxy-deployment-aad).
active-directory Oneflow Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/oneflow-tutorial.md
+
+ Title: Azure Active Directory SSO integration with Oneflow
+description: Learn how to configure single sign-on between Azure Active Directory and Oneflow.
++++++++ Last updated : 05/24/2023++++
+# Azure Active Directory SSO integration with Oneflow
+
+In this article, you learn how to integrate Oneflow with Azure Active Directory (Azure AD). Oneflow Connector supports both user provisioning and SSO. When you integrate Oneflow with Azure AD, you can:
+
+* Control in Azure AD who has access to Oneflow.
+* Enable your users to be automatically signed-in to Oneflow with their Azure AD accounts.
+* Manage your accounts in one central location - the Azure portal.
+
+You configure and test Azure AD single sign-on for Oneflow in a test environment. Oneflow supports **SP** and **IDP** initiated single sign-on.
+
+> [!NOTE]
+> Identifier of this application is a fixed string value so only one instance can be configured in one tenant.
+
+## Prerequisites
+
+To integrate Azure Active Directory with Oneflow, you need:
+
+* An Azure AD user account. If you don't already have one, you can [Create an account for free](https://azure.microsoft.com/free/?WT.mc_id=A261C142F).
+* One of the following roles: Global Administrator, Cloud Application Administrator, Application Administrator, or owner of the service principal.
+* An Azure AD subscription. If you don't have a subscription, you can get a [free account](https://azure.microsoft.com/free/).
+* Oneflow single sign-on (SSO) enabled subscription.
+
+## Add application and assign a test user
+
+Before you begin the process of configuring single sign-on, you need to add the Oneflow application from the Azure AD gallery. You need a test user account to assign to the application and test the single sign-on configuration.
+
+### Add Oneflow from the Azure AD gallery
+
+Add Oneflow from the Azure AD application gallery to configure single sign-on with Oneflow. For more information on how to add application from the gallery, see the [Quickstart: Add application from the gallery](../manage-apps/add-application-portal.md).
+
+### Create and assign Azure AD test user
+
+Follow the guidelines in the [create and assign a user account](../manage-apps/add-application-portal-assign-users.md) article to create a test user account in the Azure portal called B.Simon.
+
+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, and assign roles. The wizard also provides a link to the single sign-on configuration pane in the Azure portal. [Learn more about Microsoft 365 wizards.](/microsoft-365/admin/misc/azure-ad-setup-guides).
+
+## Configure Azure AD SSO
+
+Complete the following steps to enable Azure AD single sign-on in the Azure portal.
+
+1. In the Azure portal, on the **Oneflow** application integration page, find the **Manage** section and select **single sign-on**.
+1. On the **Select a single sign-on method** page, select **SAML**.
+1. On the **Set up single sign-on with SAML** page, select the pencil icon for **Basic SAML Configuration** to edit the settings.
+
+ ![Screenshot shows how to edit Basic SAML Configuration.](common/edit-urls.png "Basic Configuration")
+
+1. On the **Basic SAML Configuration** section, perform the following steps:
+
+ a. In the **Identifier** textbox, type the URL:
+ `https://app.oneflow.com/api/ext/ssosaml/metadata`
+
+ b. In the **Reply URL** textbox, type a URL using the following pattern:
+ `https://app.oneflow.com/api/ext/ssosaml/acs/<INSTANCE>`
+
+1. If you wish to configure the application in **SP** initiated mode, then perform the following step:
+
+ In the **Sign on URL** textbox, type the URL:
+ `https://app.oneflow.com/login`
+
+ > [!NOTE]
+ > The Reply URL is not real. Update this value with the actual Reply URL. Contact [Oneflow support team](mailto:support@oneflow.com) to get the value. You can also refer to the patterns shown in the **Basic SAML Configuration** section in the Azure portal.
+
+1. Oneflow 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.
+
+ ![Screenshot shows the image of attributes configuration.](common/default-attributes.png "Image")
+
+1. In addition to above, Oneflow application expects few more attributes to be passed back in SAML response, which are shown below. These attributes are also pre populated but you can review them as per your requirements.
+
+ | Name | Source Attribute|
+ | | |
+ | Group | user.groups |
+
+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.
+
+ ![Screenshot shows the Certificate download link.](common/metadataxml.png "Certificate")
+
+1. On the **Set up Oneflow** section, copy the appropriate URL(s) based on your requirement.
+
+ ![Screenshot shows to copy configuration appropriate URL.](common/copy-configuration-urls.png "Metadata")
+
+## Configure Oneflow SSO
+
+To configure single sign-on on **Oneflow** side, you need to send the downloaded **Federation Metadata XML** and appropriate copied URLs from Azure portal to [Oneflow support team](mailto:support@oneflow.com). They set this setting to have the SAML SSO connection set properly on both sides.
+
+### Create Oneflow test user
+
+In this section, you create a user called Britta Simon at Oneflow. Work with [Oneflow support team](mailto:support@oneflow.com) to add the users in the Oneflow platform. 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.
+
+#### SP initiated:
+
+* Click on **Test this application** in Azure portal. This will redirect to Oneflow Sign-on URL where you can initiate the login flow.
+
+* Go to Oneflow 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 Oneflow 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 Oneflow 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 Oneflow for which you set up the SSO. For more information about the My Apps, see [Introduction to the My Apps](../user-help/my-apps-portal-end-user-access.md).
+
+## Additional resources
+
+* [What is single sign-on with Azure Active Directory?](../manage-apps/what-is-single-sign-on.md)
+* [Plan a single sign-on deployment](../manage-apps/plan-sso-deployment.md).
+
+## Next steps
+
+Once you configure Oneflow you can enforce session control, which protects exfiltration and infiltration of your organizationΓÇÖs sensitive data in real time. Session control extends from Conditional Access. [Learn how to enforce session control with Microsoft Cloud App Security](/cloud-app-security/proxy-deployment-aad).
active-directory Radiant Iot Portal Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/radiant-iot-portal-tutorial.md
+
+ Title: Azure Active Directory SSO integration with Radiant IOT Portal
+description: Learn how to configure single sign-on between Azure Active Directory and Radiant IOT Portal.
++++++++ Last updated : 05/23/2023++++
+# Azure Active Directory SSO integration with Radiant IOT Portal
+
+In this article, you'll learn how to integrate Radiant IOT Portal with Azure Active Directory (Azure AD). Radiant's IOT Portal is used by federal and commercial customers for asset tracking and accountability solutions based on IOT tracking technologies. When you integrate Radiant IOT Portal with Azure AD, you can:
+
+* Control in Azure AD who has access to Radiant IOT Portal.
+* Enable your users to be automatically signed-in to Radiant IOT Portal with their Azure AD accounts.
+* Manage your accounts in one central location - the Azure portal.
+
+You'll configure and test Azure AD single sign-on for Radiant IOT Portal in a test environment. Radiant IOT Portal supports **SP** initiated single sign-on and **Just In Time** user provisioning.
+
+## Prerequisites
+
+To integrate Azure Active Directory with Radiant IOT Portal, you need:
+
+* An Azure AD user account. If you don't already have one, you can [Create an account for free](https://azure.microsoft.com/free/?WT.mc_id=A261C142F).
+* One of the following roles: Global Administrator, Cloud Application Administrator, Application Administrator, or owner of the service principal.
+* An Azure AD subscription. If you don't have a subscription, you can get a [free account](https://azure.microsoft.com/free/).
+* Radiant IOT Portal single sign-on (SSO) enabled subscription.
+
+## Add application and assign a test user
+
+Before you begin the process of configuring single sign-on, you need to add the Radiant IOT Portal application from the Azure AD gallery. You need a test user account to assign to the application and test the single sign-on configuration.
+
+### Add Radiant IOT Portal from the Azure AD gallery
+
+Add Radiant IOT Portal from the Azure AD application gallery to configure single sign-on with Radiant IOT Portal. For more information on how to add application from the gallery, see the [Quickstart: Add application from the gallery](../manage-apps/add-application-portal.md).
+
+### Create and assign Azure AD test user
+
+Follow the guidelines in the [create and assign a user account](../manage-apps/add-application-portal-assign-users.md) article to create a test user account in the Azure portal called B.Simon.
+
+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, and assign roles. The wizard also provides a link to the single sign-on configuration pane in the Azure portal. [Learn more about Microsoft 365 wizards.](/microsoft-365/admin/misc/azure-ad-setup-guides).
+
+## Configure Azure AD SSO
+
+Complete the following steps to enable Azure AD single sign-on in the Azure portal.
+
+1. In the Azure portal, on the **Radiant IOT Portal** application integration page, find the **Manage** section and select **single sign-on**.
+1. On the **Select a single sign-on method** page, select **SAML**.
+1. On the **Set up single sign-on with SAML** page, select the pencil icon for **Basic SAML Configuration** to edit the settings.
+
+ ![Screenshot shows how to edit Basic SAML Configuration.](common/edit-urls.png "Basic Configuration")
+
+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://<SUBDOMAIN>.radiantrfid.com/VATServer/` |
+ | `https://<SUBDOMAIN>.radiantrfid.com/VATPortal/` |
+
+ b. In the **Reply URL** textbox, type a URL using one of the following patterns:
+
+ | **Reply URL** |
+ ||
+ | `https://<SUBDOMAIN>.radiantrfid.com/VATPortal/Saml2AuthenticationModule/acs` |
+ | `https://<SUBDOMAIN>.radiantrfid.com/VATServer/Saml2AuthenticationModule/acs` |
+
+ c. In the **Sign on URL** textbox, type a URL using the following pattern:
+ `https://<SUBDOMAIN>.radiantrfid.com/VATPortal/?cn=<CustomerName>&id=<ID>`
+
+ > [!Note]
+ > These values are not real. Update these values with the actual Identifier, Reply URL and Sign on URL. Contact [Radiant IOT Portal support team](mailto:support@radiantrfid.com) to get these values. You can also refer to the patterns shown in the Basic SAML Configuration section in the Azure portal.
+
+1. Radiant IOT Portal 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.
+
+ ![Screenshot shows the image of attributes configuration.](common/default-attributes.png "Image")
+
+1. In addition to above, Radiant IOT Portal application expects few more attributes to be passed back in SAML response, which are shown below. These attributes are also pre populated but you can review them as per your requirements.
+
+ | Name | Source Attribute|
+ | | |
+ | Email | user.mail |
+ | User ID | user.userprincipalname |
+ | Group | user.groups |
+
+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.
+
+ ![Screenshot shows the Certificate download link.](common/metadataxml.png "Certificate")
+
+1. On the **Set up Radiant IOT Portal** section, copy the appropriate URL(s) based on your requirement.
+
+ ![Screenshot shows to copy configuration appropriate URL.](common/copy-configuration-urls.png "Metadata")
+
+## Configure Radiant IOT Portal SSO
+
+To configure single sign-on on **Radiant IOT Portal** side, you need to send the downloaded **Federation Metadata XML** and appropriate copied URLs from Azure portal to [Radiant IOT Portal support team](mailto:support@radiantrfid.com). They set this setting to have the SAML SSO connection set properly on both sides.
+
+### Create Radiant IOT Portal test user
+
+In this section, a user called B.Simon is created in Radiant IOT Portal. Radiant IOT Portal supports just-in-time user provisioning, which is enabled by default. There's no action item for you in this section. If a user doesn't already exist in Radiant IOT Portal, a new one is commonly created after authentication.
+
+## Test SSO
+
+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 Radiant IOT Portal Sign-on URL where you can initiate the login flow.
+
+* Go to Radiant IOT Portal Sign-on URL directly and initiate the login flow from there.
+
+* You can use Microsoft My Apps. When you click the Radiant IOT Portal tile in the My Apps, this will redirect to Radiant IOT Portal 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
+
+* [What is single sign-on with Azure Active Directory?](../manage-apps/what-is-single-sign-on.md)
+* [Plan a single sign-on deployment](../manage-apps/plan-sso-deployment.md).
+
+## Next steps
+
+Once you configure Radiant IOT Portal you can enforce session control, which protects exfiltration and infiltration of your organizationΓÇÖs sensitive data in real time. Session control extends from Conditional Access. [Learn how to enforce session control with Microsoft Cloud App Security](/cloud-app-security/proxy-deployment-aad).
active-directory Redocly Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/redocly-tutorial.md
+
+ Title: Azure Active Directory SSO integration with Redocly
+description: Learn how to configure single sign-on between Azure Active Directory and Redocly.
++++++++ Last updated : 05/23/2023++++
+# Azure Active Directory SSO integration with Redocly
+
+In this article, you'll learn how to integrate Redocly with Azure Active Directory (Azure AD). Redocly is the first developer documentation tool that allows us to keep the docs in GitHub, keeping developer docs close to the developers. When you integrate Redocly with Azure AD, you can:
+
+* Control in Azure AD who has access to Redocly.
+* Enable your users to be automatically signed-in to Redocly with their Azure AD accounts.
+* Manage your accounts in one central location - the Azure portal.
+
+You'll configure and test Azure AD single sign-on for Redocly in a test environment. Redocly supports **SP** initiated single sign-on and **Just In Time** user provisioning.
+
+## Prerequisites
+
+To integrate Azure Active Directory with Redocly, you need:
+
+* An Azure AD user account. If you don't already have one, you can [Create an account for free](https://azure.microsoft.com/free/?WT.mc_id=A261C142F).
+* One of the following roles: Global Administrator, Cloud Application Administrator, Application Administrator, or owner of the service principal.
+* An Azure AD subscription. If you don't have a subscription, you can get a [free account](https://azure.microsoft.com/free/).
+* Redocly single sign-on (SSO) enabled subscription.
+
+## Add application and assign a test user
+
+Before you begin the process of configuring single sign-on, you need to add the Redocly application from the Azure AD gallery. You need a test user account to assign to the application and test the single sign-on configuration.
+
+### Add Redocly from the Azure AD gallery
+
+Add Redocly from the Azure AD application gallery to configure single sign-on with Redocly. For more information on how to add application from the gallery, see the [Quickstart: Add application from the gallery](../manage-apps/add-application-portal.md).
+
+### Create and assign Azure AD test user
+
+Follow the guidelines in the [create and assign a user account](../manage-apps/add-application-portal-assign-users.md) article to create a test user account in the Azure portal called B.Simon.
+
+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, and assign roles. The wizard also provides a link to the single sign-on configuration pane in the Azure portal. [Learn more about Microsoft 365 wizards.](/microsoft-365/admin/misc/azure-ad-setup-guides).
+
+## Configure Azure AD SSO
+
+Complete the following steps to enable Azure AD single sign-on in the Azure portal.
+
+1. In the Azure portal, on the **Redocly** application integration page, find the **Manage** section and select **single sign-on**.
+1. On the **Select a single sign-on method** page, select **SAML**.
+1. On the **Set up single sign-on with SAML** page, select the pencil icon for **Basic SAML Configuration** to edit the settings.
+
+ ![Screenshot shows how to edit Basic SAML Configuration.](common/edit-urls.png "Basic Configuration")
+
+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://api.redocly.com/auth/sso?idpId=<CustomerId>` |
+ | `https://api.<Region>.redocly.com/auth/sso?idpId=<CustomerId>` |
+
+ b. In the **Reply URL** textbox, type a URL using one of the following patterns:
+
+ | **Reply URL** |
+ ||
+ | `https://api.redocly.com/auth/sso` |
+ | `https://api.<Region>.redocly.com/auth/sso` |
+ | `https://<SiteName>.redoc.dev/_auth/saml2` |
+ | `https://<SiteName>.<REGION>.redoc.dev/_auth/saml2` |
+
+ c. In the **Sign on URL** textbox, type a URL using one of the following patterns:
+
+ | **Sign on URL** |
+ ||
+ | `https://app.redocly.com/login-sso` |
+ | `https://app.<Region>.redocly.com/login-sso` |
+ | `https://<SiteName>.redoc.dev/_auth/idp-login` |
+ | `https://<SiteName>.<REGION>.redoc.dev/_auth/idp-login` |
+
+ > [!Note]
+ > These values are not real. Update these values with the actual Identifier, Reply URL and Sign on URL. Contact [Redocly support team](mailto:team@redocly.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 **Certificate (PEM)** and select **Download** to download the certificate and save it on your computer.
+
+ ![Screenshot shows the Certificate download link.](common/certificate-base64-download.png "Certificate")
+
+1. On the **Set up Redocly** section, copy the appropriate URL(s) based on your requirement.
+
+ ![Screenshot shows to copy configuration appropriate URL.](common/copy-configuration-urls.png "Metadata")
+
+## Configure Redocly SSO
+
+To configure single sign-on on **Redocly** side, you need to send the downloaded **Certificate (PEM)** and appropriate copied URLs from Azure portal to [Redocly support team](mailto:team@redocly.com). They set this setting to have the SAML SSO connection set properly on both sides.
+
+### Create Redocly test user
+
+In this section, a user called B.Simon is created in Redocly. Redocly supports just-in-time user provisioning, which is enabled by default. There's no action item for you in this section. If a user doesn't already exist in Redocly, a new one is commonly created after authentication.
+
+## Test SSO
+
+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 Redocly Sign-on URL where you can initiate the login flow.
+
+* Go to Redocly Sign-on URL directly and initiate the login flow from there.
+
+* You can use Microsoft My Apps. When you click the Redocly tile in the My Apps, this will redirect to Redocly 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
+
+* [What is single sign-on with Azure Active Directory?](../manage-apps/what-is-single-sign-on.md)
+* [Plan a single sign-on deployment](../manage-apps/plan-sso-deployment.md).
+
+## Next steps
+
+Once you configure Redocly you can enforce session control, which protects exfiltration and infiltration of your organizationΓÇÖs sensitive data in real time. Session control extends from Conditional Access. [Learn how to enforce session control with Microsoft Cloud App Security](/cloud-app-security/proxy-deployment-aad).
active-directory Sap Cloud Platform Identity Authentication Provisioning Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/sap-cloud-platform-identity-authentication-provisioning-tutorial.md
Title: 'Tutorial: Configure SAP Cloud Platform Identity Authentication for automatic user provisioning with Azure Active Directory'
-description: Learn how to configure Azure Active Directory to automatically provision and de-provision user accounts to SAP Cloud Platform Identity Authentication.
+ Title: 'Tutorial: Configure SAP Business Technology Platform Identity Authentication for automatic user provisioning with Azure Active Directory'
+description: Learn how to configure Azure Active Directory to automatically provision and de-provision user accounts to SAP Business Technology Platform Identity Authentication.
writer: twimmers
Previously updated : 11/21/2022 Last updated : 05/23/2023
-# Tutorial: Configure SAP Cloud Platform Identity Authentication for automatic user provisioning
+# Tutorial: Configure SAP Business Technology Platform Identity Authentication for automatic user provisioning
-The objective of this tutorial is to demonstrate the steps to be performed in SAP Cloud Platform Identity Authentication and Azure Active Directory (Azure AD) to configure Azure AD to automatically provision and de-provision users to SAP Cloud Platform Identity Authentication.
+The objective of this tutorial is to demonstrate the steps to be performed in SAP Business Technology Platform Identity Authentication and Azure Active Directory (Azure AD) to configure Azure AD to automatically provision and de-provision users to SAP Business Technology Platform Identity Authentication.
> [!NOTE] > This tutorial describes a connector built on top of the Azure AD User 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).
The objective of this tutorial is to demonstrate the steps to be performed in SA
The scenario outlined in this tutorial assumes that you already have the following prerequisites: * An Azure AD tenant
-* [A SAP Cloud Platform Identity Authentication tenant](https://www.sap.com/products/cloud-platform.html)
-* A user account in SAP Cloud Platform Identity Authentication with Admin permissions.
+* [A SAP Business Technology Platform Identity Authentication tenant](https://www.sap.com/products/cloud-platform.html)
+* A user account in SAP Business Technology Platform Identity Authentication with Admin permissions.
> [!NOTE] > This integration is also available to use from Azure AD US Government Cloud environment. You can find this application in the Azure AD US Government Cloud Application Gallery and configure it in the same way as you do from public cloud.
-## Assigning users to SAP Cloud Platform Identity Authentication
+## Assigning users to SAP Business Technology Platform Identity Authentication
Azure Active Directory uses a concept called *assignments* to determine which users should receive access to selected apps. In the context of automatic user provisioning, only the users that have been assigned to an application in Azure AD are synchronized.
-Before configuring and enabling automatic user provisioning, you should decide which users in Azure AD need access to SAP Cloud Platform Identity Authentication. Once decided, you can assign these users to SAP Cloud Platform Identity Authentication by following the instructions here:
+Before configuring and enabling automatic user provisioning, you should decide which users in Azure AD need access to SAP Business Technology Platform Identity Authentication. Once decided, you can assign these users to SAP Business Technology Platform Identity Authentication by following the instructions here:
* [Assign a user to an enterprise app](../manage-apps/assign-user-or-group-access-portal.md)
-## Important tips for assigning users to SAP Cloud Platform Identity Authentication
+## Important tips for assigning users to SAP Business Technology Platform Identity Authentication
-* It is recommended that a single Azure AD user is assigned to SAP Cloud Platform Identity Authentication to test the automatic user provisioning configuration. Additional users may be assigned later.
+* It is recommended that a single Azure AD user is assigned to SAP Business Technology Platform Identity Authentication to test the automatic user provisioning configuration. Additional users may be assigned later.
-* When assigning a user to SAP Cloud Platform Identity Authentication, you must select any valid application-specific role (if available) in the assignment dialog. Users with the **Default Access** role are excluded from provisioning.
+* When assigning a user to SAP Business Technology Platform Identity Authentication, you must select any valid application-specific role (if available) in the assignment dialog. Users with the **Default Access** role are excluded from provisioning.
-## Setup SAP Cloud Platform Identity Authentication for provisioning
+## Setup SAP Business Technology Platform Identity Authentication for provisioning
-1. Sign in to your [SAP Cloud Platform Identity Authentication Admin Console](https://sapmsftintegration.accounts.ondemand.com/admin). Navigate to **Users & Authorizations > Administrators**.
+1. Sign in to your [SAP Business Technology Platform Identity Authentication Admin Console](https://sapmsftintegration.accounts.ondemand.com/admin). Navigate to **Users & Authorizations > Administrators**.
- ![SAP Cloud Platform Identity Authentication Admin Console](media/sap-cloud-platform-identity-authentication-provisioning-tutorial/adminconsole.png)
+ ![SAP Business Technology Platform Identity Authentication Admin Console](media/sap-cloud-platform-identity-authentication-provisioning-tutorial/adminconsole.png)
2. Press the **+Add** button on the left hand panel in order to add a new administrator to the list. Choose **Add System** and enter the name of the system. > [!NOTE]
-> The administrator user in SAP Cloud Platform Identity Authentication must be of type **System**. Creating a normal administrator user can lead to *unauthorized* errors while provisioning.
+> The administrator user in SAP Business Technology Platform Identity Authentication must be of type **System**. Creating a normal administrator user can lead to *unauthorized* errors while provisioning.
3. Under Configure Authorizations, switch on the toggle button against **Manage Users**.
- ![SAP Cloud Platform Identity Authentication Add SCIM](media/sap-cloud-platform-identity-authentication-provisioning-tutorial/configurationauth.png)
+ ![SAP Business Technology Platform Identity Authentication Add SCIM](media/sap-cloud-platform-identity-authentication-provisioning-tutorial/configurationauth.png)
-4. You will receive an email to activate your account and set a password for **SAP Cloud Platform Identity Authentication Service**.
+4. You will receive an email to activate your account and set a password for **SAP Business Technology Platform Identity Authentication Service**.
-4. Copy the **User ID** and **Password**. These values will be entered in the Admin Username and Admin Password fields respectively in the Provisioning tab of your SAP Cloud Platform Identity Authentication application in the Azure portal.
+4. Copy the **User ID** and **Password**. These values will be entered in the Admin Username and Admin Password fields respectively in the Provisioning tab of your SAP Business Technology Platform Identity Authentication application in the Azure portal.
-## Add SAP Cloud Platform Identity Authentication from the gallery
+## Add SAP Business Technology Platform Identity Authentication from the gallery
-Before configuring SAP Cloud Platform Identity Authentication for automatic user provisioning with Azure AD, you need to add SAP Cloud Platform Identity Authentication from the Azure AD application gallery to your list of managed SaaS applications.
+Before configuring SAP Business Technology Platform Identity Authentication for automatic user provisioning with Azure AD, you need to add SAP Business Technology Platform Identity Authentication from the Azure AD application gallery to your list of managed SaaS applications.
-**To add SAP Cloud Platform Identity Authentication from the Azure AD application gallery, perform the following steps:**
+**To add SAP Business Technology Platform Identity Authentication from the Azure AD application gallery, perform the following steps:**
1. In the **[Azure portal](https://portal.azure.com)**, in the left navigation panel, select **Azure Active Directory**.
Before configuring SAP Cloud Platform Identity Authentication for automatic user
![The New application button](common/add-new-app.png)
-4. In the search box, enter **SAP Cloud Platform Identity Authentication**, select **SAP Cloud Platform Identity Authentication** in the results panel, and then click the **Add** button to add the application.
+4. In the search box, enter **SAP Business Technology Platform Identity Authentication**, select **SAP Business Technology Platform Identity Authentication** in the results panel, and then click the **Add** button to add the application.
- ![SAP Cloud Platform Identity Authentication in the results list](common/search-new-app.png)
+ ![SAP Business Technology Platform Identity Authentication in the results list](common/search-new-app.png)
-## Configuring automatic user provisioning to SAP Cloud Platform Identity Authentication
+## Configuring automatic user provisioning to SAP Business Technology Platform Identity Authentication
-This section guides you through the steps to configure the Azure AD provisioning service to create, update, and disable users in SAP Cloud Platform Identity Authentication based on users assignments in Azure AD.
+This section guides you through the steps to configure the Azure AD provisioning service to create, update, and disable users in SAP Business Technology Platform Identity Authentication based on users assignments in Azure AD.
> [!TIP]
-> You may also choose to enable SAML-based single sign-on for SAP Cloud Platform Identity Authentication, following the instructions provided in the [SAP Cloud Platform Identity Authentication Single sign-on tutorial](./sap-hana-cloud-platform-identity-authentication-tutorial.md). Single sign-on can be configured independently of automatic user provisioning, though these two features compliment each other
+> You may also choose to enable SAML-based single sign-on for SAP Business Technology Platform Identity Authentication, following the instructions provided in the [SAP Business Technology Platform Identity Authentication Single sign-on tutorial](./sap-hana-cloud-platform-identity-authentication-tutorial.md). Single sign-on can be configured independently of automatic user provisioning, though these two features compliment each other
-### To configure automatic user provisioning for SAP Cloud Platform Identity Authentication in Azure AD:
+### To configure automatic user provisioning for SAP Business Technology Platform Identity Authentication in Azure AD:
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 **SAP Cloud Platform Identity Authentication**.
+2. In the applications list, select **SAP Business Technology Platform Identity Authentication**.
- ![The SAP Cloud Platform Identity Authentication link in the Applications list](common/all-applications.png)
+ ![The SAP Business Technology Platform Identity Authentication link in the Applications list](common/all-applications.png)
3. Select the **Provisioning** tab.
This section guides you through the steps to configure the Azure AD provisioning
![Screenshot of the Provisioning Mode dropdown list with the Automatic option called out.](common/provisioning-automatic.png)
-5. Under the **Admin Credentials** section, input `https://<tenantID>.accounts.ondemand.com/service/scim ` in **Tenant URL**. Input the **User ID** and **Password** values retrieved earlier in **Admin Username** and **Admin Password** respectively. Click **Test Connection** to ensure Azure AD can connect to SAP Cloud Platform Identity Authentication. If the connection fails, ensure your SAP Cloud Platform Identity Authentication account has Admin permissions and try again.
+5. Under the **Admin Credentials** section, input `https://<tenantID>.accounts.ondemand.com/service/scim ` in **Tenant URL**. Input the **User ID** and **Password** values retrieved earlier in **Admin Username** and **Admin Password** respectively. Click **Test Connection** to ensure Azure AD can connect to SAP Business Technology Platform Identity Authentication. If the connection fails, ensure your SAP Business Technology Platform Identity Authentication account has Admin permissions and try again.
![Tenant URL + Token](media/sap-cloud-platform-identity-authentication-provisioning-tutorial/testconnection.png)
This section guides you through the steps to configure the Azure AD provisioning
7. Click **Save**.
-8. Under the **Mappings** section, select **Synchronize Azure Active Directory Users to SAP Cloud Platform Identity Authentication**.
+8. Under the **Mappings** section, select **Synchronize Azure Active Directory Users to SAP Business Technology Platform Identity Authentication**.
- ![SAP Cloud Platform Identity Authentication User Mappings](media/sap-cloud-platform-identity-authentication-provisioning-tutorial/mapping.png)
+ ![SAP Business Technology Platform Identity Authentication User Mappings](media/sap-cloud-platform-identity-authentication-provisioning-tutorial/mapping.png)
-9. Review the user attributes that are synchronized from Azure AD to SAP Cloud Platform Identity Authentication in the **Attribute Mapping** section. The attributes selected as **Matching** properties are used to match the user accounts in SAP Cloud Platform Identity Authentication for update operations. Select the **Save** button to commit any changes.
+9. Review the user attributes that are synchronized from Azure AD to SAP Business Technology Platform Identity Authentication in the **Attribute Mapping** section. The attributes selected as **Matching** properties are used to match the user accounts in SAP Business Technology Platform Identity Authentication for update operations. Select the **Save** button to commit any changes.
- ![SAP Cloud Platform Identity Authentication User Attributes](media/sap-cloud-platform-identity-authentication-provisioning-tutorial/userattributes.png)
+ ![SAP Business Technology Platform Identity Authentication User Attributes](media/sap-cloud-platform-identity-authentication-provisioning-tutorial/userattributes.png)
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).
-11. To enable the Azure AD provisioning service for SAP Cloud Platform Identity Authentication, change the **Provisioning Status** to **On** in the **Settings** section.
+11. To enable the Azure AD provisioning service for SAP Business Technology Platform Identity Authentication, change the **Provisioning Status** to **On** in the **Settings** section.
![Provisioning Status Toggled On](common/provisioning-toggle-on.png)
-12. Define the users that you would like to provision to SAP Cloud Platform Identity Authentication by choosing the desired values in **Scope** in the **Settings** section.
+12. Define the users that you would like to provision to SAP Business Technology Platform Identity Authentication by choosing the desired values in **Scope** in the **Settings** section.
![Provisioning Scope](common/provisioning-scope.png)
This section guides you through the steps to configure the Azure AD provisioning
![Saving Provisioning Configuration](common/provisioning-configuration-save.png)
-This operation starts the initial synchronization of all users defined in **Scope** in the **Settings** section. The initial sync takes longer to perform than subsequent syncs, which occur approximately every 40 minutes as long as the Azure AD provisioning service is running. You can use the **Synchronization Details** section to monitor progress and follow links to provisioning activity report, which describes all actions performed by the Azure AD provisioning service on SAP Cloud Platform Identity Authentication.
+This operation starts the initial synchronization of all users defined in **Scope** in the **Settings** section. The initial sync takes longer to perform than subsequent syncs, which occur approximately every 40 minutes as long as the Azure AD provisioning service is running. You can use the **Synchronization Details** section to monitor progress and follow links to provisioning activity report, which describes all actions performed by the Azure AD provisioning service on SAP Business Technology Platform Identity Authentication.
For more information on how to read the Azure AD provisioning logs, see [Reporting on automatic user account provisioning](../app-provisioning/check-status-user-account-provisioning.md). ## Connector limitations
-* SAP Cloud Platform Identity Authentication's SCIM endpoint requires certain attributes to be of specific format. You can know more about these attributes and their specific format [here](https://help.sap.com/viewer/6d6d63354d1242d185ab4830fc04feb1/Cloud/en-US/b10fc6a9a37c488a82ce7489b1fab64c.html#).
+* SAP Business Technology Platform Identity Authentication's SCIM endpoint requires certain attributes to be of specific format. You can know more about these attributes and their specific format [here](https://help.sap.com/viewer/6d6d63354d1242d185ab4830fc04feb1/Cloud/en-US/b10fc6a9a37c488a82ce7489b1fab64c.html#).
## Additional resources
active-directory Sap Hana Cloud Platform Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/sap-hana-cloud-platform-tutorial.md
Title: 'Tutorial: Azure AD SSO integration with SAP Cloud Platform'
-description: Learn how to configure single sign-on between Azure Active Directory and SAP Cloud Platform.
+ Title: 'Tutorial: Azure AD SSO integration with SAP Business Technology Platform'
+description: Learn how to configure single sign-on between Azure Active Directory and SAP Business Technology Platform.
Previously updated : 11/21/2022 Last updated : 05/23/2023
-# Tutorial: Azure AD SSO integration with SAP Cloud Platform
+# Tutorial: Azure AD SSO integration with SAP Business Technology Platform
-In this tutorial, you'll learn how to integrate SAP Cloud Platform with Azure Active Directory (Azure AD). When you integrate SAP Cloud Platform with Azure AD, you can:
+In this tutorial, you'll learn how to integrate SAP Business Technology Platform with Azure Active Directory (Azure AD). When you integrate SAP Business Technology Platform with Azure AD, you can:
-* Control in Azure AD who has access to SAP Cloud Platform.
-* Enable your users to be automatically signed-in to SAP Cloud Platform with their Azure AD accounts.
+* Control in Azure AD who has access to SAP Business Technology Platform.
+* Enable your users to be automatically signed-in to SAP Business Technology Platform with their Azure AD accounts.
* Manage your accounts in one central location - the Azure portal. ## Prerequisites
In this tutorial, you'll learn how to integrate SAP Cloud Platform with Azure Ac
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/).
-* SAP Cloud Platform single sign-on (SSO) enabled subscription.
+* SAP Business Technology Platform single sign-on (SSO) enabled subscription.
>[!IMPORTANT]
->You need to deploy your own application or subscribe to an application on your SAP Cloud Platform account to test single sign on. In this tutorial, an application is deployed in the account.
+>You need to deploy your own application or subscribe to an application on your SAP Business Technology Platform account to test single sign on. In this tutorial, an application is deployed in the account.
> ## Scenario description In this tutorial, you configure and test Azure AD single sign-on in a test environment.
-* SAP Cloud Platform supports **SP** initiated SSO.
+* SAP Business Technology Platform supports **SP** initiated SSO.
-## Add SAP Cloud Platform from the gallery
+## Add SAP Business Technology Platform from the gallery
-To configure the integration of SAP Cloud Platform into Azure AD, you need to add SAP Cloud Platform from the gallery to your list of managed SaaS apps.
+To configure the integration of SAP Business Technology Platform into Azure AD, you need to add SAP Business Technology Platform from the gallery to your list of managed SaaS apps.
1. Sign in to the Azure portal using either a work or school account, or a personal Microsoft account. 1. On the left navigation pane, select the **Azure Active Directory** service. 1. Navigate to **Enterprise Applications** and then select **All Applications**. 1. To add new application, select **New application**.
-1. In the **Add from the gallery** section, type **SAP Cloud Platform** in the search box.
-1. Select **SAP Cloud Platform** from results panel and then add the app. Wait a few seconds while the app is added to your tenant.
+1. In the **Add from the gallery** section, type **SAP Business Technology Platform** in the search box.
+1. Select **SAP Business Technology Platform** 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)
-## Configure and test Azure AD SSO for SAP Cloud Platform
+## Configure and test Azure AD SSO for SAP Business Technology Platform
-Configure and test Azure AD SSO with SAP Cloud Platform using a test user called **B.Simon**. For SSO to work, you need to establish a link relationship between an Azure AD user and the related user in SAP Cloud Platform.
+Configure and test Azure AD SSO with SAP Business Technology Platform using a test user called **B.Simon**. For SSO to work, you need to establish a link relationship between an Azure AD user and the related user in SAP Business Technology Platform.
-To configure and test Azure AD SSO with SAP Cloud Platform, perform the following steps:
+To configure and test Azure AD SSO with SAP Business Technology Platform, perform the following steps:
1. **[Configure Azure AD SSO](#configure-azure-ad-sso)** - to enable your users to use this feature. 1. **[Create an Azure AD test user](#create-an-azure-ad-test-user)** - to test Azure AD single sign-on with Britta Simon. 1. **[Assign the Azure AD test user](#assign-the-azure-ad-test-user)** - to enable Britta Simon to use Azure AD single sign-on.
-2. **[Configure SAP Cloud Platform SSO](#configure-sap-cloud-platform-sso)** - to configure the Single Sign-On settings on application side.
- 1. **[Create SAP Cloud Platform test user](#create-sap-cloud-platform-test-user)** - to have a counterpart of Britta Simon in SAP Cloud Platform that is linked to the Azure AD representation of user.
+2. **[Configure SAP Business Technology Platform SSO](#configure-sap-business-technology-platform-sso)** - to configure the Single Sign-On settings on application side.
+ 1. **[Create SAP Business Technology Platform test user](#create-sap-business-technology-platform-test-user)** - to have a counterpart of Britta Simon in SAP Business Technology Platform that is linked to the Azure AD representation of user.
1. **[Test SSO](#test-sso)** - to verify whether the configuration works. ## Configure Azure AD SSO Follow these steps to enable Azure AD SSO in the Azure portal.
-1. In the Azure portal, on the **SAP Cloud Platform** application integration page, find the **Manage** section and select **single sign-on**.
+1. In the Azure portal, on the **SAP Business Technology Platform** application integration page, find the **Manage** section and select **single sign-on**.
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.
Follow these steps to enable Azure AD SSO in the Azure portal.
1. On the **Basic SAML Configuration** section, enter the values for the following fields:
- a. In the **Identifier** textbox you will provide your SAP Cloud Platform's type a URL using one of the following patterns:
+ a. In the **Identifier** textbox you will provide your SAP Business Technology Platform's type a URL using one of the following patterns:
| **Identifier** | |--|
Follow these steps to enable Azure AD SSO in the Azure portal.
| `https://<subdomain>.dispatcher.ap1.hana.ondemand.com/<instancename>` | | `https://<subdomain>.dispatcher.hana.ondemand.com/<instancename>` |
- c. In the **Sign On URL** textbox, type the URL used by your users to sign into your **SAP Cloud Platform** application. This is the account-specific URL of a protected resource in your SAP Cloud Platform application. The URL is based on the following pattern: `https://<applicationName><accountName>.<landscape host>.ondemand.com/<path_to_protected_resource>`
+ c. In the **Sign On URL** textbox, type the URL used by your users to sign into your **SAP Business Technology Platform** application. This is the account-specific URL of a protected resource in your SAP Business Technology Platform application. The URL is based on the following pattern: `https://<applicationName><accountName>.<landscape host>.ondemand.com/<path_to_protected_resource>`
>[!NOTE]
- >This is the URL in your SAP Cloud Platform application that requires the user to authenticate.
+ >This is the URL in your SAP Business Technology Platform application that requires the user to authenticate.
> | **Sign On URL** |
Follow these steps to enable Azure AD SSO in the Azure portal.
| `https://<subdomain>.hana.ondemand.com/<instancename>` | > [!NOTE]
- > These values are not real. Update these values with the actual Identifier,Reply URL and Sign on URL. Contact [SAP Cloud Platform Client support team](https://help.sap.com/viewer/65de2977205c403bbc107264b8eccf4b/Cloud/5dd739823b824b539eee47b7860a00be.html) to get Sign-On URL and Identifier. Reply URL you can get from trust management section which is explained later in the tutorial.
+ > These values are not real. Update these values with the actual Identifier,Reply URL and Sign on URL. Contact [SAP Business Technology Platform Client support team](https://help.sap.com/viewer/65de2977205c403bbc107264b8eccf4b/Cloud/5dd739823b824b539eee47b7860a00be.html) to get Sign-On URL and Identifier. Reply URL you can get from trust management section which is explained later in the tutorial.
> 4. On the **Set up Single Sign-On with SAML** page, in the **SAML Signing Certificate** section, click **Download** to download the **Federation Metadata XML** from the given options as per your requirement and save it on your computer.
In this section, you'll create a test user in the Azure portal called B.Simon.
### Assign the Azure AD test user
-In this section, you'll enable B.Simon to use Azure single sign-on by granting access to SAP Cloud Platform.
+In this section, you'll enable B.Simon to use Azure single sign-on by granting access to SAP Business Technology Platform.
1. In the Azure portal, select **Enterprise Applications**, and then select **All applications**.
-1. In the applications list, select **SAP Cloud Platform**.
+1. In the applications list, select **SAP Business Technology Platform**.
1. In the app's overview page, find the **Manage** section and select **Users and groups**. 1. Select **Add user**, then select **Users and groups** in the **Add Assignment** dialog. 1. In the **Users and groups** dialog, select **B.Simon** from the Users list, then click the **Select** button at the bottom of the screen. 1. If you are expecting a role to be assigned to the users, you can select it from the **Select a role** dropdown. If no role has been set up for this app, you see "Default Access" role selected. 1. In the **Add Assignment** dialog, click the **Assign** button.
-## Configure SAP Cloud Platform SSO
+## Configure SAP Business Technology Platform SSO
-1. In a different web browser window, sign on to the SAP Cloud Platform Cockpit at `https://account.<landscape host>.ondemand.com/cockpit`(for example: https://account.hanatrial.ondemand.com/cockpit).
+1. In a different web browser window, sign on to the SAP Business Technology Platform Cockpit at `https://account.<landscape host>.ondemand.com/cockpit`(for example: https://account.hanatrial.ondemand.com/cockpit).
2. Click the **Trust** tab.
In this section, you'll enable B.Simon to use Azure single sign-on by granting a
b. As **Configuration Type**, select **Custom**.
- c. As **Local Provider Name**, leave the default value. Copy this value and paste it into the **Identifier** field in the Azure AD configuration for SAP Cloud Platform.
+ c. As **Local Provider Name**, leave the default value. Copy this value and paste it into the **Identifier** field in the Azure AD configuration for SAP Business Technology Platform.
d. To generate a **Signing Key** and a **Signing Certificate** key pair, click **Generate Key Pair**.
In this section, you'll enable B.Simon to use Azure single sign-on by granting a
![Get Metadata](./media/sap-hana-cloud-platform-tutorial/certificate.png "Get Metadata")
- a. Download the SAP Cloud Platform metadata file by clicking **Get Metadata**.
+ a. Download the SAP Business Technology Platform metadata file by clicking **Get Metadata**.
- b. Open the downloaded SAP Cloud Platform metadata XML file, and then locate the **ns3:AssertionConsumerService** tag.
+ b. Open the downloaded SAP Business Technology Platform metadata XML file, and then locate the **ns3:AssertionConsumerService** tag.
- c. Copy the value of the **Location** attribute, and then paste it into the **Reply URL** field in the Azure AD configuration for SAP Cloud Platform.
+ c. Copy the value of the **Location** attribute, and then paste it into the **Reply URL** field in the Azure AD configuration for SAP Business Technology Platform.
5. Click the **Trusted Identity Provider** tab, and then click **Add Trusted Identity Provider**.
In this section, you'll enable B.Simon to use Azure single sign-on by granting a
As an optional step, you can configure assertion-based groups for your Azure Active Directory Identity Provider.
-Using groups on SAP Cloud Platform allows you to dynamically assign one or more users to one or more roles in your SAP Cloud Platform applications, determined by values of attributes in the SAML 2.0 assertion.
+Using groups on SAP Business Technology Platform allows you to dynamically assign one or more users to one or more roles in your SAP Business Technology Platform applications, determined by values of attributes in the SAML 2.0 assertion.
-For example, if the assertion contains the attribute "*contract=temporary*", you may want all affected users to be added to the group "*TEMPORARY*". The group "*TEMPORARY*" may contain one or more roles from one or more applications deployed in your SAP Cloud Platform account.
+For example, if the assertion contains the attribute "*contract=temporary*", you may want all affected users to be added to the group "*TEMPORARY*". The group "*TEMPORARY*" may contain one or more roles from one or more applications deployed in your SAP Business Technology Platform account.
-Use assertion-based groups when you want to simultaneously assign many users to one or more roles of applications in your SAP Cloud Platform account. If you want to assign only a single or small number of users to specific roles, we recommend assigning them directly in the ΓÇ£**Authorizations**ΓÇ¥ tab of the SAP Cloud Platform cockpit.
+Use assertion-based groups when you want to simultaneously assign many users to one or more roles of applications in your SAP Business Technology Platform account. If you want to assign only a single or small number of users to specific roles, we recommend assigning them directly in the ΓÇ£**Authorizations**ΓÇ¥ tab of the SAP Business Technology Platform cockpit.
-### Create SAP Cloud Platform test user
+### Create SAP Business Technology Platform test user
-In order to enable Azure AD users to log in to SAP Cloud Platform, you must assign roles in the SAP Cloud Platform to them.
+In order to enable Azure AD users to log in to SAP Business Technology Platform, you must assign roles in the SAP Business Technology Platform to them.
**To assign a role to a user, perform the following steps:**
-1. Log in to your **SAP Cloud Platform** cockpit.
+1. Log in to your **SAP Business Technology Platform** cockpit.
2. Perform the following:
In order to enable Azure AD users to log in to SAP Cloud Platform, you must assi
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 SAP Cloud Platform Sign-on URL where you can initiate the login flow.
+* Click on **Test this application** in Azure portal. This will redirect to SAP Business Technology Platform Sign-on URL where you can initiate the login flow.
-* Go to SAP Cloud Platform Sign-on URL directly and initiate the login flow from there.
+* Go to SAP Business Technology Platform Sign-on URL directly and initiate the login flow from there.
-* You can use Microsoft My Apps. When you click the SAP Cloud Platform tile in the My Apps, you should be automatically signed in to the SAP Cloud Platform 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 use Microsoft My Apps. When you click the SAP Business Technology Platform tile in the My Apps, you should be automatically signed in to the SAP Business Technology Platform 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
-Once you configure SAP Cloud Platform you can enforce session control, which protects exfiltration and infiltration of your organizationΓÇÖs sensitive data in real time. Session control extends from Conditional Access. [Learn how to enforce session control with Microsoft Defender for Cloud Apps](/cloud-app-security/proxy-deployment-any-app).
+Once you configure SAP Business Technology Platform you can enforce session control, which protects exfiltration and infiltration of your organizationΓÇÖs sensitive data in real time. Session control extends from Conditional Access. [Learn how to enforce session control with Microsoft Defender for Cloud Apps](/cloud-app-security/proxy-deployment-any-app).
active-directory Servusconnect Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/servusconnect-tutorial.md
+
+ Title: Azure Active Directory SSO integration with ServusConnect
+description: Learn how to configure single sign-on between Azure Active Directory and ServusConnect.
++++++++ Last updated : 05/23/2023++++
+# Azure Active Directory SSO integration with ServusConnect
+
+In this article, you'll learn how to integrate ServusConnect with Azure Active Directory (Azure AD). ServusConnect use Azure AD to manage user access and enable single sign-on with the ServusConnect maintenance operations platform and also requires an existing ServusConnect subscription. When you integrate ServusConnect with Azure AD, you can:
+
+* Control in Azure AD who has access to ServusConnect.
+* Enable your users to be automatically signed-in to ServusConnect with their Azure AD accounts.
+* Manage your accounts in one central location - the Azure portal.
+
+You'll configure and test Azure AD single sign-on for ServusConnect in a test environment. ServusConnect supports **SP** initiated single sign-on and **Just In Time** user provisioning.
+
+## Prerequisites
+
+To integrate Azure Active Directory with ServusConnect, you need:
+
+* An Azure AD user account. If you don't already have one, you can [Create an account for free](https://azure.microsoft.com/free/?WT.mc_id=A261C142F).
+* One of the following roles: Global Administrator, Cloud Application Administrator, Application Administrator, or owner of the service principal.
+* An Azure AD subscription. If you don't have a subscription, you can get a [free account](https://azure.microsoft.com/free/).
+* ServusConnect single sign-on (SSO) enabled subscription.
+
+## Add application and assign a test user
+
+Before you begin the process of configuring single sign-on, you need to add the ServusConnect application from the Azure AD gallery. You need a test user account to assign to the application and test the single sign-on configuration.
+
+### Add ServusConnect from the Azure AD gallery
+
+Add ServusConnect from the Azure AD application gallery to configure single sign-on with ServusConnect. For more information on how to add application from the gallery, see the [Quickstart: Add application from the gallery](../manage-apps/add-application-portal.md).
+
+### Create and assign Azure AD test user
+
+Follow the guidelines in the [create and assign a user account](../manage-apps/add-application-portal-assign-users.md) article to create a test user account in the Azure portal called B.Simon.
+
+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, and assign roles. The wizard also provides a link to the single sign-on configuration pane in the Azure portal. [Learn more about Microsoft 365 wizards.](/microsoft-365/admin/misc/azure-ad-setup-guides).
+
+## Configure Azure AD SSO
+
+Complete the following steps to enable Azure AD single sign-on in the Azure portal.
+
+1. In the Azure portal, on the **ServusConnect** application integration page, find the **Manage** section and select **single sign-on**.
+1. On the **Select a single sign-on method** page, select **SAML**.
+1. On the **Set up single sign-on with SAML** page, select the pencil icon for **Basic SAML Configuration** to edit the settings.
+
+ ![Screenshot shows how to edit Basic SAML Configuration.](common/edit-urls.png "Basic Configuration")
+
+1. On the **Basic SAML Configuration** section, perform the following steps:
+
+ a. In the **Identifier** textbox, type a value using the following pattern:
+ `urn:amazon:cognito:sp:us-east-<ID>`
+
+ b. In the **Reply URL** textbox, type the URL:
+ `https://login.servusconnect.com/saml2/idpresponse`
+
+ c. In the **Sign on URL** textbox, type the URL:
+ `https://app.servusconnect.com`
+
+ > [!Note]
+ > The Identifier value is not real. Update the value with the actual Identifier. Contact [ServusConnect support team](mailto:support@servusconnect.com) to get the value. 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.
+
+ ![Screenshot shows the Certificate download link.](common/metadataxml.png "Certificate")
+
+1. On the **Set up ServusConnect** section, copy the appropriate URL(s) based on your requirement.
+
+ ![Screenshot shows to copy configuration appropriate URL.](common/copy-configuration-urls.png "Metadata")
+
+## Configure ServusConnect SSO
+
+To configure single sign-on on **ServusConnect** side, you need to send the downloaded **Federation Metadata XML** and appropriate copied URLs from Azure portal to [ServusConnect support team](mailto:support@servusconnect.com). They set this setting to have the SAML SSO connection set properly on both sides.
+
+### Create ServusConnect test user
+
+In this section, a user called B.Simon is created in ServusConnect. ServusConnect supports just-in-time user provisioning, which is enabled by default. There's no action item for you in this section. If a user doesn't already exist in ServusConnect, a new one is commonly created after authentication.
+
+## Test SSO
+
+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 ServusConnect Sign-on URL where you can initiate the login flow.
+
+* Go to ServusConnect Sign-on URL directly and initiate the login flow from there.
+
+* You can use Microsoft My Apps. When you click the ServusConnect tile in the My Apps, this will redirect to ServusConnect 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
+
+* [What is single sign-on with Azure Active Directory?](../manage-apps/what-is-single-sign-on.md)
+* [Plan a single sign-on deployment](../manage-apps/plan-sso-deployment.md).
+
+## Next steps
+
+Once you configure ServusConnect you can enforce session control, which protects exfiltration and infiltration of your organizationΓÇÖs sensitive data in real time. Session control extends from Conditional Access. [Learn how to enforce session control with Microsoft Cloud App Security](/cloud-app-security/proxy-deployment-aad).
active-directory Veracode Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/veracode-tutorial.md
Previously updated : 01/05/2023 Last updated : 05/23/2023
To configure and test Azure AD SSO with Veracode, perform the following steps:
Follow these steps to enable Azure AD SSO in the Azure portal.
-1. In the Azure portal, on the **Veracode** application integration page, find the **Manage** section. Select **single sign-on**.
-1. On the **Select a single sign-on method** page, select **SAML**.
+1. In the Azure AD navigate to the **Veracode** application page under **Enterprise Applications**, scroll down to the **Manage** section, and click on **single sign-on**.
+1. Again under the **Manage** tab, click on **Single sign-on**, then select **SAML**.
1. On the **Set up single sign-on with SAML** page, select the pencil icon for **Basic SAML Configuration** to edit the settings. ![Edit Basic SAML Configuration](common/edit-urls.png)
-1. On the **Basic SAML Configuration** section, the application is pre-configured and the necessary URLs are already pre-populated with Azure. Select **Save**.
+1. The Relay state field should be autopopulated with `https://web.analysiscenter.veracode.com/login/#/saml`. The rest of these fields will populate after setting up SAML within the Veracode Platform.
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.
Follow these steps to enable Azure AD SSO in the Azure portal.
| lastname |User.surname | | email |User.mail |
-1. On the **Set up Veracode** section, copy the appropriate URL(s) based on your requirement.
+1. On the **Set up Veracode** section, copy and save the provided URLs to use later in your Veracode Platform SAML setup.
![Screenshot of Set up Veracode section, with configuration URLs highlighted.](common/copy-configuration-urls.png)
Notes:
![Screenshot of Veracode Administration, with Settings icon and Admin highlighted.](./media/veracode-tutorial/admin.png "Administration")
-1. Select the **SAML** tab.
+1. Select the **SAML Certificate** tab.
1. In the **SAML Certificate** section, perform the following steps: ![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 **IdP Server URL**, paste the value of the **Logout URL** 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 **Assertion Signing Certificate**, select **Choose File** to upload your downloaded certificate from the Azure portal.
- c. Note the values of the three URLs (**SAML Assertion URL**, **SAML Audience URL**, **Relay state URL**).
+ d. Note the values of the three URLs (**SAML Assertion URL**, **SAML Audience URL**, **Relay state URL**).
- d. Click **Save**.
+ e. 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. 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 (follow the table below for proper conversions) NOTE: **Relay State** is NOT optional.
+
+ | Veracode URL | Azure AD Field|
+ | | |
+ | SAML Audience URL |Identifier (Entity ID) |
+ | SAML Assertion URL |Reply URL (Assertion Consumer Service URL) |
+ | Relay State URL |Relay State |
1. Select the **JIT Provisioning** tab.
Notes:
1. In the **Organization Settings** section, toggle the **Configure Default Settings for Just-in-Time user provisioning** setting to **On**.
-1. In the **Basic Settings** section, for **User Data Updates**, select **Prefer Veracode User Data**.
+1. In the **Basic Settings** section, for **User Data Updates**, select **Prefer Veracode User Data**. This will cause conflicts between data passed in the SAML assertion from Azure AD and user data in the Veracode platform to be resolved using the Veracode user data.
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):
In this section, you test your Azure AD single sign-on configuration with follow
## Next steps
-Once you configure Veracode you can enforce session control, which protects exfiltration and infiltration of your organizationΓÇÖs sensitive data in real time. Session control extends from Conditional Access. [Learn how to enforce session control with Microsoft Defender for Cloud Apps](/cloud-app-security/proxy-deployment-any-app).
+Once you configure Veracode you can enforce session control, which protects exfiltration and infiltration of your organizationΓÇÖs sensitive data in real time. Session control extends from Conditional Access. [Learn how to enforce session control with Microsoft Defender for Cloud Apps](/cloud-app-security/proxy-deployment-any-app).
active-directory Zoom Provisioning Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/zoom-provisioning-tutorial.md
This section guides you through the steps to configure the Azure AD provisioning
### To configure automatic user provisioning for Zoom in Azure AD:
-1. Sign in to the [Azure portal](https://portal.azure.com). Select **Enterprise Applications**, then select **All applications**.
+1. Sign in to the [Azure portal](https://portal.azure.com/?feature.userProvisioningV2Authentication=true), ensure you are using the link (https://portal.azure.com/?feature.userProvisioningV2Authentication=true) then Select **Enterprise Applications**, then select **All applications**.
![Enterprise applications blade](common/enterprise-applications.png)
Once you've configured provisioning, use the following resources to monitor your
## 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 Fedramp Access Controls https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/standards/fedramp-access-controls.md
Previously updated : 09/13/2022 Last updated : 05/23/2023
Each row in the following table provides prescriptive guidance to help you devel
| - | - | | **AC-2 ACCOUNT MANAGEMENT**<p><p>**The Organization**<br>**(a.)** Identifies and selects the following types of information system accounts to support organizational missions/business functions: [*Assignment: organization-defined information system account types*];<p><p>**(b.)** Assigns account managers for information system accounts;<p><p>**(c.)** Establishes conditions for group and role membership;<p><p>**(d.)** Specifies authorized users of the information system, group and role membership, and access authorizations (i.e., privileges) and other attributes (as required) for each account;<p><p>**(e.)** Requires approvals by [*Assignment: organization-defined personnel or roles*] for requests to create information system accounts;<p><p>**(f.)** Creates, enables, modifies, disables, and removes information system accounts in accordance with [*Assignment: organization-defined procedures or conditions*];<p><p>**(g.)** Monitors the use of information system accounts;<p><p>**(h.)** Notifies account managers:<br>(1.) When accounts are no longer required;<br>(2.) When users are terminated or transferred; and<br>(3.) When individual information system usage or need-to-know changes;<p><p>**(i.)** Authorizes access to the information system based on:<br>(1.) A valid access authorization;<br>(2.) Intended system usage; and<br>(3.) Other attributes as required by the organization or associated missions/business functions;<p><p>**(j.)** Reviews accounts for compliance with account management requirements [*FedRAMP Assignment: monthly for privileged accessed, every six (6) months for non-privileged access*]; and<p><p>**(k.)** Establishes a process for reissuing shared/group account credentials (if deployed) when individuals are removed from the group. | **Implement account lifecycle management for customer-controlled accounts. Monitor the use of accounts and notify account managers of account lifecycle events. Review accounts for compliance with account management requirements every month for privileged access and every six months for nonprivileged access.**<p>Use Azure AD to provision accounts from external HR systems, on-premises Active Directory, or directly in the cloud. All account lifecycle operations are audited within the Azure AD audit logs. 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.<p>Provision accounts<br><li>[Plan cloud HR application to Azure Active Directory user provisioning](../app-provisioning/plan-cloud-hr-provision.md)<br><li>[Azure AD Connect sync: Understand and customize synchronization](../hybrid/how-to-connect-sync-whatis.md)<br><li>[Add or delete users using Azure Active Directory](../fundamentals/add-users-azure-active-directory.md)<p>Monitor accounts<br><li>[Audit activity reports in the Azure Active Directory portal](../reports-monitoring/concept-audit-logs.md)<br><li>[Connect Azure Active Directory data to Microsoft Sentinel](../../sentinel/connect-azure-active-directory.md) <br><li>[Tutorial: Stream logs to an Azure event hub](../reports-monitoring/tutorial-azure-monitor-stream-logs-to-event-hub.md)<p>Review accounts<br><li>[What is Azure AD entitlement management?](../governance/entitlement-management-overview.md)<br><li>[Create an access review of an access package in Azure AD entitlement management](../governance/entitlement-management-access-reviews-create.md)<br><li>[Review access of an access package in Azure AD entitlement management](../governance/entitlement-management-access-reviews-review-access.md)<p>Resources<br><li>[Administrator role permissions in Azure Active Directory](../roles/permissions-reference.md)<br><li>[Dynamic Groups in Azure AD](../enterprise-users/groups-create-rule.md)<p>&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;<p> | | **AC-2(1)**<br>The organization employs automated mechanisms to support the management of information system accounts.| **Employ automated mechanisms to support management of customer-controlled accounts.**<p>Configure automated provisioning of customer-controlled accounts from external HR systems or on-premises Active Directory. For applications that support application provisioning, configure Azure AD to automatically create user identities and roles in cloud software as a solution (SaaS) applications that users need access to. In addition to creating user identities, automatic provisioning includes the maintenance and removal of user identities as status or roles change. To ease monitoring of account usage, you can stream Azure AD Identity Protection logs, which show risky users, risky sign-ins, and risk detections, and audit logs directly into Microsoft Sentinel or Event Hubs.<p>Provision<br><li>[Plan cloud HR application to Azure Active Directory user provisioning](../app-provisioning/plan-cloud-hr-provision.md)<br><li>[Azure AD Connect sync: Understand and customize synchronization](../hybrid/how-to-connect-sync-whatis.md)<br><li>[What is automated SaaS app user provisioning in Azure AD?](../app-provisioning/user-provisioning.md)<br><li>[SaaS app integration tutorials for use with Azure AD](../saas-apps/tutorial-list.md)<p>Monitor and audit<br><li>[Investigate risk](../identity-protection/howto-identity-protection-investigate-risk.md)<br><li>[Audit activity reports in the Azure Active Directory portal](../reports-monitoring/concept-audit-logs.md)<br><li>[What is Microsoft Sentinel?](../../sentinel/overview.md)<br><li>[Microsoft Sentinel: Connect data from Azure Active Directory](../../sentinel/connect-azure-active-directory.md)<br><li>[Tutorial: Stream Azure Active Directory logs to an Azure event hub](../reports-monitoring/tutorial-azure-monitor-stream-logs-to-event-hub.md)|
-| **AC-2(2)**<br>The information system automatically [*FedRAMP Selection: disables*] temporary and emergency accounts after [*FedRAMP Assignment: 24 hours from last use*].<p><p>**AC-02(3)**<br>The information system automatically disables inactive accounts after [*FedRAMP Assignment: thirty-five (35) days for user accounts*].<p><p>**AC-2 (3) Additional FedRAMP Requirements and Guidance:**<br>**Requirement:** The service provider defines the time period for non-user accounts (e.g., accounts associated with devices). The time periods are approved and accepted by the JAB/AO. Where user management is a function of the service, reports of activity of consumer users shall be made available. | **Employ automated mechanisms to support automatically removing or disabling temporary and emergency accounts after 24 hours from last use and all customer-controlled accounts after 35 days of inactivity.**<p>Implement account management automation with Microsoft Graph and Azure AD PowerShell. Use Microsoft Graph to monitor sign-in activity and Azure AD PowerShell to take action on accounts within the required time frame. <p>Determine inactivity<br><li>[Manage inactive user accounts in Azure AD](../reports-monitoring/howto-manage-inactive-user-accounts.md)<br><li>[Manage stale devices in Azure AD](../devices/manage-stale-devices.md)<p>Remove or disable accounts<br><li>[Working with users in Microsoft Graph](/graph/api/resources/users)<br><li>[Get a user](/graph/api/user-get?tabs=http)<br><li>[Update user](/graph/api/user-update?tabs=http)<br><li>[Delete a user](/graph/api/user-delete?tabs=http)<p>Work with devices in Microsoft Graph<br><li>[Get device](/graph/api/device-get?tabs=http)<br><li>[Update device](/graph/api/device-update?tabs=http)<br><li>[Delete device](/graph/api/device-delete?tabs=http)<p>Use [Azure AD PowerShell](/powershell/module/azuread/)<br><li>[Get-AzureADUser](/powershell/module/azuread/get-azureaduser)<br><li>[Set-AzureADUser](/powershell/module/azuread/set-azureaduser)<br><li>[Get-AzureADDevice](/powershell/module/azuread/get-azureaddevice)<br><li>[Set-AzureADDevice](/powershell/module/azuread/set-azureaddevice) |
+| **AC-2(2)**<br>The information system automatically [*FedRAMP Selection: disables*] temporary and emergency accounts after [*FedRAMP Assignment: 24 hours from last use*].<p><p>**AC-02(3)**<br>The information system automatically disables inactive accounts after [*FedRAMP Assignment: thirty-five (35) days for user accounts*].<p><p>**AC-2 (3) Additional FedRAMP Requirements and Guidance:**<br>**Requirement:** The service provider defines the time period for non-user accounts (e.g., accounts associated with devices). The time periods are approved and accepted by the JAB/AO. Where user management is a function of the service, reports of activity of consumer users shall be made available. | **Employ automated mechanisms to support automatically removing or disabling temporary and emergency accounts after 24 hours from last use and all customer-controlled accounts after 35 days of inactivity.**<p>Implement account management automation with Microsoft Graph and Microsoft Graph PowerShell. Use Microsoft Graph to monitor sign-in activity and Microsoft Graph PowerShell to take action on accounts in the required time frame. <p>Determine inactivity<br><li>[Manage inactive user accounts in Azure AD](../reports-monitoring/howto-manage-inactive-user-accounts.md)<br><li>[Manage stale devices in Azure AD](../devices/manage-stale-devices.md)<p>Remove or disable accounts<br><li>[Working with users in Microsoft Graph](/graph/api/resources/users)<br><li>[Get a user](/graph/api/user-get?tabs=http)<br><li>[Update user](/graph/api/user-update?tabs=http)<br><li>[Delete a user](/graph/api/user-delete?tabs=http)<p>Work with devices in Microsoft Graph<br><li>[Get device](/graph/api/device-get?tabs=http)<br><li>[Update device](/graph/api/device-update?tabs=http)<br><li>[Delete device](/graph/api/device-delete?tabs=http)<p> See, [Microsoft Graph PowerShell documentation](/powershell/microsoftgraph)<br><li>[Get-MgUser](/powershell/module/microsoft.graph.users/get-mguser)<br><li>[Update-MgUser](/powershell/module/microsoft.graph.users/update-mguser)<br><li>[Get-MgDevice](/powershell/module/microsoft.graph.identity.directorymanagement/get-mgdevice)<br><li>[Update-MgDevice](/powershell/module/microsoft.graph.identity.directorymanagement/update-mgdevice) |
| **AC-2(4)**<br>The information system automatically audits account creation, modification, enabling, disabling, and removal actions, and notifies [*FedRAMP Assignment: organization and/or service provider system owner*]. | **Implement an automated audit and notification system for the lifecycle of managing customer-controlled accounts.**<p>All account lifecycle operations, such as account creation, modification, enabling, disabling, and removal actions, are audited within the Azure audit logs. You can stream the logs directly into Microsoft Sentinel or Event Hubs to help with notification.<p>Audit<br><li>[Audit activity reports in the Azure Active Directory portal](../reports-monitoring/concept-audit-logs.md)<br><li>[Microsoft Sentinel: Connect data from Azure Active Directory](../../sentinel/connect-azure-active-directory.md)<P>Notification<br><li>[What is Microsoft Sentinel?](../../sentinel/overview.md)<br><li>[Tutorial: Stream Azure Active Directory logs to an Azure event hub](../reports-monitoring/tutorial-azure-monitor-stream-logs-to-event-hub.md) |
-| **AC-2(5)**<br>The organization requires that users log out when [*FedRAMP Assignment: inactivity is anticipated to exceed fifteen (15) minutes*].<p><p>**AC-2 (5) Additional FedRAMP Requirements and Guidance:**<br>**Guidance:** Should use a shorter timeframe than AC-12 | **Implement device log-out after a 15-minute period of inactivity.**<p>Implement device lock by using a conditional access policy that restricts access to compliant devices. Configure policy settings on the device to enforce device lock at the OS level with mobile device management (MDM) solutions such as Intune. Endpoint Manager or group policy objects can also be considered in hybrid deployments. For unmanaged devices, configure the Sign-In Frequency setting to force users to reauthenticate.<P>Conditional access<br><li>[Require device to be marked as compliant](../conditional-access/require-managed-devices.md)<br><li>[User sign-in frequency](../conditional-access/howto-conditional-access-session-lifetime.md)<p>MDM policy<br><li>Configure devices for maximum minutes of inactivity until the screen locks and requires a password to unlock ([Android](/mem/intune/configuration/device-restrictions-android), [iOS](/mem/intune/configuration/device-restrictions-ios), [Windows 10](/mem/intune/configuration/device-restrictions-windows-10)). |
+| **AC-2(5)**<br>The organization requires that users log out when [*FedRAMP Assignment: inactivity is anticipated to exceed fifteen (15) minutes*].<p><p>**AC-2 (5) Additional FedRAMP Requirements and Guidance:**<br>**Guidance:** Should use a shorter timeframe than AC-12 | **Implement device log-out after a 15-minute period of inactivity.**<p>Implement device lock by using a Conditional Access policy that restricts access to compliant devices. Configure policy settings on the device to enforce device lock at the OS level with mobile device management (MDM) solutions such as Intune. Endpoint Manager or group policy objects can also be considered in hybrid deployments. For unmanaged devices, configure the Sign-In Frequency setting to force users to reauthenticate.<P>Conditional Access<br><li>[Require device to be marked as compliant](../conditional-access/require-managed-devices.md)<br><li>[User sign-in frequency](../conditional-access/howto-conditional-access-session-lifetime.md)<p>MDM policy<br><li>Configure devices for maximum minutes of inactivity until the screen locks and requires a password to unlock ([Android](/mem/intune/configuration/device-restrictions-android), [iOS](/mem/intune/configuration/device-restrictions-ios), [Windows 10](/mem/intune/configuration/device-restrictions-windows-10)). |
| **AC-2(7)**<p><p>**The organization:**<br>**(a.)** Establishes and administers privileged user accounts in accordance with a role-based access scheme that organizes allowed information system access and privileges into roles;<br>**(b)** Monitors privileged role assignments; and<br>**(c)** Takes [*FedRAMP Assignment: disables/revokes access within an organization-specified timeframe*] when privileged role assignments are no longer appropriate. | **Administer and monitor privileged role assignments by following a role-based access scheme for customer-controlled accounts. Disable or revoke privilege access for accounts when no longer appropriate.**<p>Implement Azure AD Privileged Identity Management with access reviews for privileged roles in Azure AD to monitor role assignments and remove role assignments when no longer appropriate. You can stream audit logs directly into Microsoft Sentinel or Event Hubs to help with monitoring.<p>Administer<br><li>[What is Azure AD Privileged Identity Management?](../privileged-identity-management/pim-configure.md)<br><li>[Activation maximum duration](../privileged-identity-management/pim-how-to-change-default-settings.md?tabs=new)<p>Monitor<br><li>[Create an access review of Azure AD roles in Privileged Identity Management](../privileged-identity-management/pim-create-azure-ad-roles-and-resource-roles-review.md)<br><li>[View audit history for Azure AD roles in Privileged Identity Management](../privileged-identity-management/pim-how-to-use-audit-log.md?tabs=new)<br><li>[Audit activity reports in the Azure Active Directory portal](../reports-monitoring/concept-audit-logs.md)<br><li>[What is Microsoft Sentinel?](../../sentinel/overview.md)<br><li>[Connect data from Azure Active Directory](../../sentinel/connect-azure-active-directory.md)<br><li>[Tutorial: Stream Azure Active Directory logs to an Azure event hub](../reports-monitoring/tutorial-azure-monitor-stream-logs-to-event-hub.md) |
-| **AC-2(11)**<br>The information system enforces [*Assignment: organization-defined circumstances and/or usage conditions*] for [*Assignment: organization-defined information system accounts*]. | **Enforce usage of customer-controlled accounts to meet customer-defined conditions or circumstances.**<p>Create conditional access policies to enforce access control decisions across users and devices.<p>Conditional access<br><li>[Create a conditional access policy](../authentication/tutorial-enable-azure-mfa.md?bc=%2fazure%2factive-directory%2fconditional-access%2fbreadcrumb%2ftoc.json&toc=%2fazure%2factive-directory%2fconditional-access%2ftoc.json)<br><li>[What is conditional access?](../conditional-access/overview.md) |
+| **AC-2(11)**<br>The information system enforces [*Assignment: organization-defined circumstances and/or usage conditions*] for [*Assignment: organization-defined information system accounts*]. | **Enforce usage of customer-controlled accounts to meet customer-defined conditions or circumstances.**<p>Create Conditional Access policies to enforce access control decisions across users and devices.<p>Conditional Access<br><li>[Create a Conditional Access policy](../authentication/tutorial-enable-azure-mfa.md?bc=%2fazure%2factive-directory%2fconditional-access%2fbreadcrumb%2ftoc.json&toc=%2fazure%2factive-directory%2fconditional-access%2ftoc.json)<br><li>[What is Conditional Access?](../conditional-access/overview.md) |
| **AC-2(12)**<p><p>**The organization:**<br>**(a)** Monitors information system accounts for [*Assignment: organization-defined atypical use*]; and<br>**(b)** Reports atypical usage of information system accounts to [*FedRAMP Assignment: at a minimum, the ISSO and/or similar role within the organization*].<p><p>**AC-2 (12) (a) and AC-2 (12) (b) Additional FedRAMP Requirements and Guidance:**<br> Required for privileged accounts. | **Monitor and report customer-controlled accounts with privileged access for atypical usage.**<p>For help with monitoring of atypical usage, you can stream Identity Protection logs, which show risky users, risky sign-ins, and risk detections, and audit logs, which help with correlation with privilege assignment, directly into a SIEM solution such as Microsoft Sentinel. You can also use Event Hubs to integrate logs with third-party SIEM solutions.<p>Identity protection<br><li>[What is Azure AD Identity Protection?](../identity-protection/overview-identity-protection.md)<br><li>[Investigate risk](../identity-protection/howto-identity-protection-investigate-risk.md)<br><li>[Azure Active Directory Identity Protection notifications](../identity-protection/howto-identity-protection-configure-notifications.md)<p>Monitor accounts<br><li>[What is Microsoft Sentinel?](../../sentinel/overview.md)<br><li>[Audit activity reports in the Azure Active Directory portal](../reports-monitoring/concept-audit-logs.md)<br><li>[Connect Azure Active Directory data to Microsoft Sentinel](../../sentinel/connect-azure-active-directory.md) <br><li>[Tutorial: Stream logs to an Azure event hub](../reports-monitoring/tutorial-azure-monitor-stream-logs-to-event-hub.md) |
-| **AC-2(13)**<br>The organization disables accounts of users posing a significant risk within [*FedRAMP Assignment: one (1) hour*] of discovery of the risk.|**Disable customer-controlled accounts of users that pose a significant risk within one hour.**<p>In Azure AD Identity Protection, configure and enable a user risk policy with the threshold set to High. Create conditional access policies to block access for risky users and risky sign-ins. Configure risk policies to allow users to self-remediate and unblock subsequent sign-in attempts.<p>Identity protection<br><li>[What is Azure AD Identity Protection?](../identity-protection/overview-identity-protection.md)<p>Conditional access<br><li>[What is conditional access?](../conditional-access/overview.md)<br><li>[Create a conditional access policy](../authentication/tutorial-enable-azure-mfa.md?bc=%2fazure%2factive-directory%2fconditional-access%2fbreadcrumb%2ftoc.json&toc=%2fazure%2factive-directory%2fconditional-access%2ftoc.json)<br><li>[Conditional access: User risk-based conditional access](../conditional-access/howto-conditional-access-policy-risk-user.md)<br><li>[Conditional access: Sign-in risk-based conditional access](../conditional-access/howto-conditional-access-policy-risk-user.md)<br><li>[Self-remediation with risk policy](../identity-protection/howto-identity-protection-remediate-unblock.md) |
+| **AC-2(13)**<br>The organization disables accounts of users posing a significant risk in [*FedRAMP Assignment: one (1) hour*] of discovery of the risk.|**Disable customer-controlled accounts of users that pose a significant risk in one hour.**<p>In Azure AD Identity Protection, configure and enable a user risk policy with the threshold set to High. Create Conditional Access policies to block access for risky users and risky sign-ins. Configure risk policies to allow users to self-remediate and unblock subsequent sign-in attempts.<p>Identity protection<br><li>[What is Azure AD Identity Protection?](../identity-protection/overview-identity-protection.md)<p>Conditional Access<br><li>[What is Conditional Access?](../conditional-access/overview.md)<br><li>[Create a Conditional Access policy](../authentication/tutorial-enable-azure-mfa.md?bc=%2fazure%2factive-directory%2fconditional-access%2fbreadcrumb%2ftoc.json&toc=%2fazure%2factive-directory%2fconditional-access%2ftoc.json)<br><li>[Conditional Access: User risk-based conditional access](../conditional-access/howto-conditional-access-policy-risk-user.md)<br><li>[Conditional Access: Sign-in risk-based conditional access](../conditional-access/howto-conditional-access-policy-risk-user.md)<br><li>[Self-remediation with risk policy](../identity-protection/howto-identity-protection-remediate-unblock.md) |
| **AC-6(7)**<p><p>**The organization:**<br>**(a.)** Reviews [*FedRAMP Assignment: at a minimum, annually*] the privileges assigned to [*FedRAMP Assignment: all users with privileges*] to validate the need for such privileges; and<br>**(b.)** Reassigns or removes privileges, if necessary, to correctly reflect organizational mission/business needs. | **Review and validate all users with privileged access every year. Ensure privileges are reassigned (or removed if necessary) to align with organizational mission and business requirements.**<p>Use Azure AD entitlement management with access reviews for privileged users to verify if privileged access is required. <p>Access reviews<br><li>[What is Azure AD entitlement management?](../governance/entitlement-management-overview.md)<br><li>[Create an access review of Azure AD roles in Privileged Identity Management](../privileged-identity-management/pim-create-azure-ad-roles-and-resource-roles-review.md)<br><li>[Review access of an access package in Azure AD entitlement management](../governance/entitlement-management-access-reviews-review-access.md) | | **AC-7 Unsuccessful Login Attempts**<p><p>**The organization:**<br>**(a.)** Enforces a limit of [*FedRAMP Assignment: not more than three (3)*] consecutive invalid logon attempts by a user during a [*FedRAMP Assignment: fifteen (15) minutes*]; and<br>**(b.)** Automatically [Selection: locks the account/node for a [*FedRAMP Assignment: minimum of three (3) hours or until unlocked by an administrator]; delays next logon prompt according to [Assignment: organization-defined delay algorithm*]] when the maximum number of unsuccessful attempts is exceeded. | **Enforce a limit of no more than three consecutive failed login attempts on customer-deployed resources within a 15-minute period. Lock the account for a minimum of three hours or until unlocked by an administrator.**<p>Enable custom smart lockout settings. Configure lockout threshold and lockout duration in seconds to implement these requirements. <p>Smart lockout<br><li>[Protect user accounts from attacks with Azure Active Directory smart lockout](../authentication/howto-password-smart-lockout.md)<br><li>[Manage Azure AD smart lockout values](../authentication/howto-password-smart-lockout.md) |
-| **AC-8 System Use Notification**<p><p>**The information system:**<br>**(a.)** Displays to users [*Assignment: organization-defined system use notification message or banner (FedRAMP Assignment: see additional Requirements and Guidance)*] before granting access to the system that provides privacy and security notices consistent with applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance and states that:<br>(1.) Users are accessing a U.S. Government information system;<br>(2.) Information system usage may be monitored, recorded, and subject to audit;<br>(3.) Unauthorized use of the information system is prohibited and subject to criminal and civil penalties; and<br>(4.) Use of the information system indicates consent to monitoring and recording;<p><p>**(b.)** Retains the notification message or banner on the screen until users acknowledge the usage conditions and take explicit actions to log on to or further access the information system; and<p><p>**(c.)** For publicly accessible systems:<br>(1.) Displays system use information [*Assignment: organization-defined conditions (FedRAMP Assignment: see additional Requirements and Guidance)*], before granting further access;<br>(2.) Displays references, if any, to monitoring, recording, or auditing that are consistent with privacy accommodations for such systems that generally prohibit those activities; and<br>(3.) Includes a description of the authorized uses of the system.<p><p>**AC-8 Additional FedRAMP Requirements and Guidance:**<br>**Requirement:** The service provider shall determine elements of the cloud environment that require the System Use Notification control. The elements of the cloud environment that require System Use Notification are approved and accepted by the JAB/AO.<br>**Requirement:** The service provider shall determine how System Use Notification is going to be verified and provide appropriate periodicity of the check. The System Use Notification verification and periodicity are approved and accepted by the JAB/AO.<br>**Guidance:** If performed as part of a Configuration Baseline check, then the % of items requiring setting that are checked and that pass (or fail) check can be provided.<br>**Requirement:** If not performed as part of a Configuration Baseline check, then there must be documented agreement on how to provide results of verification and the necessary periodicity of the verification by the service provider. The documented agreement on how to provide verification of the results are approved and accepted by the JAB/AO. | **Display and require user acknowledgment of privacy and security notices before granting access to information systems.**<p>With Azure AD, you can deliver notification or banner messages for all apps that require and record acknowledgment before granting access. You can granularly target these terms of use policies to specific users (Member or Guest). You can also customize them per application via conditional access policies.<p>Terms of use<br><li>[Azure Active Directory terms of use](../conditional-access/terms-of-use.md)<br><li>[View report of who has accepted and declined](../conditional-access/terms-of-use.md) |
-| **AC-10 Concurrent Session Control**<br>The information system limits the number of concurrent sessions for each [*Assignment: organization-defined account and/or account type*] to [*FedRAMP Assignment: three (3) sessions for privileged access and two (2) sessions for non-privileged access*].|**Limit concurrent sessions to three sessions for privileged access and two for nonprivileged access.** <p>Nowadays, users connect from multiple devices, sometimes simultaneously. Limiting concurrent sessions leads to a degraded user experience and provides limited security value. A better approach to address the intent behind this control is to adopt a zero-trust security posture. Conditions are explicitly validated before a session is created and continually validated throughout the life of a session. <p>In addition, use the following compensating controls. <p>Use conditional access policies to restrict access to compliant devices. Configure policy settings on the device to enforce user sign-in restrictions at the OS level with MDM solutions such as Intune. Endpoint Manager or group policy objects can also be considered in hybrid deployments.<p> Use Privileged Identity Management to further restrict and control privileged accounts. <p> Configure smart account lockout for invalid sign-in attempts.<p>**Implementation guidance** <p>Zero trust<br><li> [Securing identity with Zero Trust](/security/zero-trust/identity)<br><li>[Continuous access evaluation in Azure AD](../conditional-access/concept-continuous-access-evaluation.md)<p>Conditional access<br><li>[What is conditional access in Azure AD?](../conditional-access/overview.md)<br><li>[Require device to be marked as compliant](../conditional-access/require-managed-devices.md)<br><li>[User sign-in frequency](../conditional-access/howto-conditional-access-session-lifetime.md)<p>Device policies<br><li>[Use PowerShell scripts on Windows 10 devices in Intune](/mem/intune/apps/intune-management-extension)<br><li>[Other smart card Group Policy settings and registry keys](/windows/security/identity-protection/smart-cards/smart-card-group-policy-and-registry-settings)<br><li>[Microsoft Endpoint Manager overview](/mem/endpoint-manager-overview)<p>Resources<br><li>[What is Azure AD Privileged Identity Management?](../privileged-identity-management/pim-configure.md)<br><li>[Protect user accounts from attacks with Azure Active Directory smart lockout](../authentication/howto-password-smart-lockout.md)<p>See AC-12 for more session reevaluation and risk mitigation guidance. |
-| **AC-11 Session Lock**<br>**The information system:**<br>**(a)** Prevents further access to the system by initiating a session lock after [*FedRAMP Assignment: fifteen (15) minutes*] of inactivity or upon receiving a request from a user; and<br>**(b)** Retains the session lock until the user reestablishes access using established identification and authentication procedures.<p><p>**AC-11(1)**<br>The information system conceals, via the session lock, information previously visible on the display with a publicly viewable image. | **Implement a session lock after a 15-minute period of inactivity or upon receiving a request from a user. Retain the session lock until the user reauthenticates. Conceal previously visible information when a session lock is initiated.**<p> Implement device lock by using a conditional access policy to restrict access to compliant devices. Configure policy settings on the device to enforce device lock at the OS level with MDM solutions such as Intune. Endpoint Manager or group policy objects can also be considered in hybrid deployments. For unmanaged devices, configure the Sign-In Frequency setting to force users to reauthenticate.<p>Conditional access<br><li>[Require device to be marked as compliant](../conditional-access/require-managed-devices.md)<br><li>[User sign-in frequency](../conditional-access/howto-conditional-access-session-lifetime.md)<p>MDM policy<br><li>Configure devices for maximum minutes of inactivity until the screen locks ([Android](/mem/intune/configuration/device-restrictions-android), [iOS](/mem/intune/configuration/device-restrictions-ios), [Windows 10](/mem/intune/configuration/device-restrictions-windows-10)). |
-| **AC-12 Session Termination**<br>The information system automatically terminates a user session after [*Assignment: organization-defined conditions or trigger events requiring session disconnect*].| **Automatically terminate user sessions when organizational defined conditions or trigger events occur.**<p>Implement automatic user session reevaluation with Azure AD features such as risk-based conditional access and continuous access evaluation. You can implement inactivity conditions at a device level as described in AC-11.<p>Resources<br><li>[Sign-in risk-based conditional access](../conditional-access/howto-conditional-access-policy-risk.md)<br><li>[User risk-based conditional access](../conditional-access/howto-conditional-access-policy-risk-user.md)<br><li>[Continuous access evaluation](../conditional-access/concept-continuous-access-evaluation.md)
+| **AC-8 System Use Notification**<p><p>**The information system:**<br>**(a.)** Displays to users [*Assignment: organization-defined system use notification message or banner (FedRAMP Assignment: see additional Requirements and Guidance)*] before granting access to the system that provides privacy and security notices consistent with applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance and states that:<br>(1.) Users are accessing a U.S. Government information system;<br>(2.) Information system usage may be monitored, recorded, and subject to audit;<br>(3.) Unauthorized use of the information system is prohibited and subject to criminal and civil penalties; and<br>(4.) Use of the information system indicates consent to monitoring and recording;<p><p>**(b.)** Retains the notification message or banner on the screen until users acknowledge the usage conditions and take explicit actions to log on to or further access the information system; and<p><p>**(c.)** For publicly accessible systems:<br>(1.) Displays system use information [*Assignment: organization-defined conditions (FedRAMP Assignment: see additional Requirements and Guidance)*], before granting further access;<br>(2.) Displays references, if any, to monitoring, recording, or auditing that are consistent with privacy accommodations for such systems that generally prohibit those activities; and<br>(3.) Includes a description of the authorized uses of the system.<p><p>**AC-8 Additional FedRAMP Requirements and Guidance:**<br>**Requirement:** The service provider shall determine elements of the cloud environment that require the System Use Notification control. The elements of the cloud environment that require System Use Notification are approved and accepted by the JAB/AO.<br>**Requirement:** The service provider shall determine how System Use Notification is going to be verified and provide appropriate periodicity of the check. The System Use Notification verification and periodicity are approved and accepted by the JAB/AO.<br>**Guidance:** If performed as part of a Configuration Baseline check, then the % of items requiring setting that are checked and that pass (or fail) check can be provided.<br>**Requirement:** If not performed as part of a Configuration Baseline check, then there must be documented agreement on how to provide results of verification and the necessary periodicity of the verification by the service provider. The documented agreement on how to provide verification of the results are approved and accepted by the JAB/AO. | **Display and require user acknowledgment of privacy and security notices before granting access to information systems.**<p>With Azure AD, you can deliver notification or banner messages for all apps that require and record acknowledgment before granting access. You can granularly target these terms of use policies to specific users (Member or Guest). You can also customize them per application via Conditional Access policies.<p>Terms of use<br><li>[Azure Active Directory terms of use](../conditional-access/terms-of-use.md)<br><li>[View report of who has accepted and declined](../conditional-access/terms-of-use.md) |
+| **AC-10 Concurrent Session Control**<br>The information system limits the number of concurrent sessions for each [*Assignment: organization-defined account and/or account type*] to [*FedRAMP Assignment: three (3) sessions for privileged access and two (2) sessions for non-privileged access*].|**Limit concurrent sessions to three sessions for privileged access and two for nonprivileged access.** <p>Currently, users connect from multiple devices, sometimes simultaneously. Limiting concurrent sessions leads to a degraded user experience and provides limited security value. A better approach to address the intent behind this control is to adopt a zero-trust security posture. Conditions are explicitly validated before a session is created and continually validated throughout the life of a session. <p>In addition, use the following compensating controls. <p>Use Conditional Access policies to restrict access to compliant devices. Configure policy settings on the device to enforce user sign-in restrictions at the OS level with MDM solutions such as Intune. Endpoint Manager or group policy objects can also be considered in hybrid deployments.<p> Use Privileged Identity Management to further restrict and control privileged accounts. <p> Configure smart account lockout for invalid sign-in attempts.<p>**Implementation guidance** <p>Zero trust<br><li> [Securing identity with Zero Trust](/security/zero-trust/identity)<br><li>[Continuous access evaluation in Azure AD](../conditional-access/concept-continuous-access-evaluation.md)<p>Conditional Access<br><li>[What is Conditional Access in Azure AD?](../conditional-access/overview.md)<br><li>[Require device to be marked as compliant](../conditional-access/require-managed-devices.md)<br><li>[User sign-in frequency](../conditional-access/howto-conditional-access-session-lifetime.md)<p>Device policies<br><li>[Other smart card Group Policy settings and registry keys](/windows/security/identity-protection/smart-cards/smart-card-group-policy-and-registry-settings)<br><li>[Microsoft Endpoint Manager overview](/mem/endpoint-manager-overview)<p>Resources<br><li>[What is Azure AD Privileged Identity Management?](../privileged-identity-management/pim-configure.md)<br><li>[Protect user accounts from attacks with Azure Active Directory smart lockout](../authentication/howto-password-smart-lockout.md)<p>See AC-12 for more session reevaluation and risk mitigation guidance. |
+| **AC-11 Session Lock**<br>**The information system:**<br>**(a)** Prevents further access to the system by initiating a session lock after [*FedRAMP Assignment: fifteen (15) minutes*] of inactivity or upon receiving a request from a user; and<br>**(b)** Retains the session lock until the user reestablishes access using established identification and authentication procedures.<p><p>**AC-11(1)**<br>The information system conceals, via the session lock, information previously visible on the display with a publicly viewable image. | **Implement a session lock after a 15-minute period of inactivity or upon receiving a request from a user. Retain the session lock until the user reauthenticates. Conceal previously visible information when a session lock is initiated.**<p> Implement device lock by using a Conditional Access policy to restrict access to compliant devices. Configure policy settings on the device to enforce device lock at the OS level with MDM solutions such as Intune. Endpoint Manager or group policy objects can also be considered in hybrid deployments. For unmanaged devices, configure the Sign-In Frequency setting to force users to reauthenticate.<p>Conditional Access<br><li>[Require device to be marked as compliant](../conditional-access/require-managed-devices.md)<br><li>[User sign-in frequency](../conditional-access/howto-conditional-access-session-lifetime.md)<p>MDM policy<br><li>Configure devices for maximum minutes of inactivity until the screen locks ([Android](/mem/intune/configuration/device-restrictions-android), [iOS](/mem/intune/configuration/device-restrictions-ios), [Windows 10](/mem/intune/configuration/device-restrictions-windows-10)). |
+| **AC-12 Session Termination**<br>The information system automatically terminates a user session after [*Assignment: organization-defined conditions or trigger events requiring session disconnect*].| **Automatically terminate user sessions when organizational defined conditions or trigger events occur.**<p>Implement automatic user session reevaluation with Azure AD features such as risk-based Conditional Access and continuous access evaluation. You can implement inactivity conditions at a device level as described in AC-11.<p>Resources<br><li>[Sign-in risk-based conditional access](../conditional-access/howto-conditional-access-policy-risk.md)<br><li>[User risk-based conditional access](../conditional-access/howto-conditional-access-policy-risk-user.md)<br><li>[Continuous access evaluation](../conditional-access/concept-continuous-access-evaluation.md)
| **AC-12(1)**<br>**The information system:**<br>**(a.)** Provides a logout capability for user-initiated communications sessions whenever authentication is used to gain access to [Assignment: organization-defined information resources]; and<br>**(b.)** Displays an explicit logout message to users indicating the reliable termination of authenticated communications sessions.<p><p>**AC-8 Additional FedRAMP Requirements and Guidance:**<br>**Guidance:** Testing for logout functionality (OTG-SESS-006) [Testing for logout functionality](https://owasp.org/www-project-web-security-testing-guide/latest/4-Web_Application_Security_Testing/06-Session_Management_Testing/06-Testing_for_Logout_Functionality) | **Provide a logout capability for all sessions and display an explicit logout message.** <p>All Azure AD surfaced web interfaces provide a logout capability for user-initiated communications sessions. When SAML applications are integrated with Azure AD, implement single sign-out. <p>Logout capability<br><li>When the user selects [Sign-out everywhere](https://aka.ms/mysignins), all current issued tokens are revoked. <p>Display message<br>Azure AD automatically displays a message after user-initiated logout.<br><p>![Screenshot that shows an access control message.](medi) |
-| **AC-20 Use of External Information Systems**<br>The organization establishes terms and conditions, consistent with any trust relationships established with other organizations owning, operating, and/or maintaining external information systems, allowing authorized individuals to:<br>**(a.)** Access the information system from external information systems; and<br>**(b.)** Process, store, or transmit organization-controlled information using external information systems.<p><p>**AC-20(1)**<br>The organization permits authorized individuals to use an external information system to access the information system or to process, store, or transmit organization-controlled information only when the organization:<br>**(a.)** Verifies the implementation of required security controls on the external system as specified in the organizationΓÇÖs information security policy and security plan; or<br>**(b.)** Retains approved information system connection or processing agreements with the organizational entity hosting the external information system. | **Establish terms and conditions that allow authorized individuals to access the customer-deployed resources from external information systems such as unmanaged devices and external networks.**<p>Require terms of use acceptance for authorized users who access resources from external systems. Implement conditional access policies to restrict access from external systems. Conditional access policies might also be integrated with Defender for Cloud Apps to provide controls for cloud and on-premises applications from external systems. Mobile application management in Intune can protect organization data at the application level, including custom apps and store apps, from managed devices that interact with external systems. An example would be accessing cloud services. You can use app management on organization-owned devices and personal devices.<P>Terms and conditions<br><li>[Terms of use: Azure Active Directory](../conditional-access/terms-of-use.md)<p>Conditional access<br><li>[Require device to be marked as compliant](../conditional-access/require-managed-devices.md)<br><li>[Conditions in conditional access policy: Device state (preview)](../conditional-access/concept-conditional-access-conditions.md)<br><li>[Protect with Microsoft Defender for Cloud Apps Conditional Access App Control](/cloud-app-security/proxy-intro-aad)<br><li>[Location condition in Azure Active Directory conditional access](../conditional-access/location-condition.md)<p>MDM<br><li>[What is Microsoft Intune?](/mem/intune/fundamentals/what-is-intune)<br><li>[What is Defender for Cloud Apps?](/cloud-app-security/what-is-cloud-app-security)<br><li>[What is app management in Microsoft Intune?](/mem/intune/apps/app-management)<p>Resource<br><li>[Integrate on-premises apps with Defender for Cloud Apps](../app-proxy/application-proxy-integrate-with-microsoft-cloud-application-security.md) |
+| **AC-20 Use of External Information Systems**<br>The organization establishes terms and conditions, consistent with any trust relationships established with other organizations owning, operating, and/or maintaining external information systems, allowing authorized individuals to:<br>**(a.)** Access the information system from external information systems; and<br>**(b.)** Process, store, or transmit organization-controlled information using external information systems.<p><p>**AC-20(1)**<br>The organization permits authorized individuals to use an external information system to access the information system or to process, store, or transmit organization-controlled information only when the organization:<br>**(a.)** Verifies the implementation of required security controls on the external system as specified in the organizationΓÇÖs information security policy and security plan; or<br>**(b.)** Retains approved information system connection or processing agreements with the organizational entity hosting the external information system. | **Establish terms and conditions that allow authorized individuals to access the customer-deployed resources from external information systems such as unmanaged devices and external networks.**<p>Require terms of use acceptance for authorized users who access resources from external systems. Implement Conditional Access policies to restrict access from external systems. Conditional Access policies might be integrated with Defender for Cloud Apps to provide controls for cloud and on-premises applications from external systems. Mobile application management in Intune can protect organization data at the application level, including custom apps and store apps, from managed devices that interact with external systems. An example would be accessing cloud services. You can use app management on organization-owned devices and personal devices.<P>Terms and conditions<br><li>[Terms of use: Azure Active Directory](../conditional-access/terms-of-use.md)<p>Conditional Access<br><li>[Require device to be marked as compliant](../conditional-access/require-managed-devices.md)<br><li>[Conditions in Conditional Access policy: Device state (preview)](../conditional-access/concept-conditional-access-conditions.md)<br><li>[Protect with Microsoft Defender for Cloud Apps Conditional Access App Control](/cloud-app-security/proxy-intro-aad)<br><li>[Location condition in Azure Active Directory Conditional Access](../conditional-access/location-condition.md)<p>MDM<br><li>[What is Microsoft Intune?](/mem/intune/fundamentals/what-is-intune)<br><li>[What is Defender for Cloud Apps?](/cloud-app-security/what-is-cloud-app-security)<br><li>[What is app management in Microsoft Intune?](/mem/intune/apps/app-management)<p>Resource<br><li>[Integrate on-premises apps with Defender for Cloud Apps](../app-proxy/application-proxy-integrate-with-microsoft-cloud-application-security.md) |
## Next steps
active-directory Fedramp Identification And Authentication Controls https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/standards/fedramp-identification-and-authentication-controls.md
Previously updated : 4/07/2022 Last updated : 05/23/2023
The following list of controls and control enhancements in the identification an
| IA-5| Authenticator management | | IA-6| Authenticator feedback | | IA-7| Cryptographic module authentication |
-| IA-8| Identification and authentication (non-organizational users) |
+| IA-8| Identification and authentication (nonorganizational users) |
Each row in the following table provides prescriptive guidance to help you develop your organization's response to any shared responsibilities for the control or control enhancement.
Each row in the following table provides prescriptive guidance to help you devel
| FedRAMP Control ID and description | Azure AD guidance and recommendations | | - | - | | **IA-2 User Identification and Authentication**<br>The information system uniquely identifies and authenticates organizational users (or processes acting on behalf of organizational users). | **Uniquely identify and authenticate users or processes acting for users.**<p> Azure AD uniquely identifies user and service principal objects directly. Azure AD provides multiple authentication methods, and you can configure methods that adhere to National Institute of Standards and Technology (NIST) authentication assurance level (AAL) 3.<p>Identifiers <br> <li>Users: [Working with users in Microsoft Graph: ID property](/graph/api/resources/users)<br><li>Service principals: [ServicePrincipal resource type : ID property](/graph/api/resources/serviceprincipal)<p>Authentication and multifactor authentication<br> <li>[Achieving NIST authenticator assurance levels with the Microsoft identity platform](nist-overview.md) |
-| **IA-2(1)**<br>The information system implements multifactor authentication for network access to privileged accounts.<br><br>**IA-2(3)**<br>The information system implements multifactor authentication for local access to privileged accounts. | **Multifactor authentication for all access to privileged accounts.** <p>Configure the following elements for a complete solution to ensure all access to privileged accounts requires multifactor authentication.<p>Configure conditional access policies to require multifactor authentication for all users.<br> Implement Azure AD Privileged Identity Management to require multifactor authentication for activation of privileged role assignment prior to use.<p>With Privileged Identity Management activation requirement in place, privilege account activation isn't possible without network access, so local access is never privileged.<p>Multifactor authentication and Privileged Identity Management<br> <li>[Conditional access: Require multifactor authentication for all users](../conditional-access/howto-conditional-access-policy-all-users-mfa.md)<br> <li>[Configure Azure AD role settings in Privileged Identity Management](../privileged-identity-management/pim-how-to-change-default-settings.md?tabs=new) |
-| **IA-2(2)**<br>The information system implements multifactor authentication for network access to non-privileged accounts.<br><br>**IA-2(4)**<br>The information system implements multifactor authentication for local access to non-privileged accounts. | **Implement multi-factor authentication for all access to non-privileged accounts**<p>Configure the following elements as an overall solution to ensure all access to non-privileged accounts requires MFA.<p> Configure Conditional Access policies to require MFA for all users.<br> Configure device management policies via MDM (such as Microsoft Intune), Microsoft Endpoint Manager (MEM) or group policy objects (GPO) to enforce use of specific authentication methods.<br> Configure Conditional Access policies to enforce device compliance.<p>Microsoft recommends using a multi-factor cryptographic hardware authenticator (e.g., FIDO2 security keys, Windows Hello for Business (with hardware TPM), or smart card) to achieve AAL3. If your organization is completely cloud-based, we recommend using FIDO2 security keys or Windows Hello for Business.<p>Windows Hello for Business hasn't been validated at the required FIPS 140 Security Level and as such federal customers would need to conduct risk assessment and evaluation before accepting it as AAL3. For more information regarding Windows Hello for Business FIPS 140 validation, see [Microsoft NIST AALs](nist-overview.md).<p>Guidance regarding MDM policies differ slightly based on authentication methods, they're broken out below. <p>Smart Card / Windows Hello for Business<br> [Passwordless Strategy - Require Windows Hello for Business or smart card](/windows/security/identity-protection/hello-for-business/passwordless-strategy)<br> [Require device to be marked as compliant](../conditional-access/require-managed-devices.md)<br> [Conditional Access - Require MFA for all users](../conditional-access/howto-conditional-access-policy-all-users-mfa.md)<p> Hybrid Only<br> [Passwordless Strategy - Configure user accounts to disallow password authentication](/windows/security/identity-protection/hello-for-business/passwordless-strategy)<p> Smart Card Only<br>[Create a Rule to Send an Authentication Method Claim](/windows-server/identity/ad-fs/operations/create-a-rule-to-send-an-authentication-method-claim)<br>[Configure Authentication Policies](/windows-server/identity/ad-fs/operations/configure-authentication-policies)<p>FIDO2 Security Key<br> [Passwordless Strategy - Excluding the password credential provider](/windows/security/identity-protection/hello-for-business/passwordless-strategy)<br> [Require device to be marked as compliant](../conditional-access/require-managed-devices.md)<br> [Conditional Access - Require MFA for all users](../conditional-access/howto-conditional-access-policy-all-users-mfa.md)<p>Authentication Methods<br> [Azure Active Directory passwordless sign-in (preview) | FIDO2 security keys](../authentication/concept-authentication-passwordless.md)<br> [Passwordless security key sign-in Windows - Azure Active Directory](../authentication/howto-authentication-passwordless-security-key-windows.md)<br> [ADFS: Certificate Authentication with Azure AD & Office 365](/archive/blogs/samueld/adfs-certauth-aad-o365)<br> [How Smart Card Sign-in Works in Windows (Windows 10)](/windows/security/identity-protection/smart-cards/smart-card-how-smart-card-sign-in-works-in-windows)<br> [Windows Hello for Business Overview (Windows 10)](/windows/security/identity-protection/hello-for-business/hello-overview)<p>Additional Resources:<br> [Policy CSP - Windows Client Management](/windows/client-management/mdm/policy-configuration-service-provider)<br> [Use PowerShell scripts on Windows 10 devices in Intune](/mem/intune/apps/intune-management-extension)<br> [Plan a passwordless authentication deployment with Azure AD](../authentication/howto-authentication-passwordless-deployment.md)<br> |
+| **IA-2(1)**<br>The information system implements multifactor authentication for network access to privileged accounts.<br><br>**IA-2(3)**<br>The information system implements multifactor authentication for local access to privileged accounts. | **Multifactor authentication for all access to privileged accounts.** <p>Configure the following elements for a complete solution to ensure all access to privileged accounts requires multifactor authentication.<p>Configure Conditional Access policies to require multifactor authentication for all users.<br> Implement Azure AD Privileged Identity Management to require multifactor authentication for activation of privileged role assignment prior to use.<p>With Privileged Identity Management activation requirement, privilege account activation isn't possible without network access, so local access is never privileged.<p>Multifactor authentication and Privileged Identity Management<br> <li>[Conditional Access: Require multifactor authentication for all users](../conditional-access/howto-conditional-access-policy-all-users-mfa.md)<br> <li>[Configure Azure AD role settings in Privileged Identity Management](../privileged-identity-management/pim-how-to-change-default-settings.md?tabs=new) |
+| **IA-2(2)**<br>The information system implements multifactor authentication for network access to non-privileged accounts.<br><br>**IA-2(4)**<br>The information system implements multifactor authentication for local access to nonprivileged accounts. | **Implement multi-factor authentication for all access to nonprivileged accounts**<p>Configure the following elements as an overall solution to ensure all access to nonprivileged accounts requires MFA.<p> Configure Conditional Access policies to require MFA for all users.<br> Configure device management policies via MDM (such as Microsoft Intune), Microsoft Endpoint Manager (MEM) or group policy objects (GPO) to enforce use of specific authentication methods.<br> Configure Conditional Access policies to enforce device compliance.<p>Microsoft recommends using a multi-factor cryptographic hardware authenticator (for example, FIDO2 security keys, Windows Hello for Business (with hardware TPM), or smart card) to achieve AAL3. If your organization is cloud-based, we recommend using FIDO2 security keys or Windows Hello for Business.<p>Windows Hello for Business hasn't been validated at the required FIPS 140 Security Level and as such federal customers would need to conduct risk assessment and evaluation before accepting it as AAL3. For more information regarding Windows Hello for Business FIPS 140 validation, see [Microsoft NIST AALs](nist-overview.md).<p>See the following guidance regarding MDM policies differ slightly based on authentication methods. <p>Smart Card / Windows Hello for Business<br> [Passwordless Strategy - Require Windows Hello for Business or smart card](/windows/security/identity-protection/hello-for-business/passwordless-strategy)<br> [Require device to be marked as compliant](../conditional-access/require-managed-devices.md)<br> [Conditional Access - Require MFA for all users](../conditional-access/howto-conditional-access-policy-all-users-mfa.md)<p> Hybrid Only<br> [Passwordless Strategy - Configure user accounts to disallow password authentication](/windows/security/identity-protection/hello-for-business/passwordless-strategy)<p> Smart Card Only<br>[Create a Rule to Send an Authentication Method Claim](/windows-server/identity/ad-fs/operations/create-a-rule-to-send-an-authentication-method-claim)<br>[Configure Authentication Policies](/windows-server/identity/ad-fs/operations/configure-authentication-policies)<p>FIDO2 Security Key<br> [Passwordless Strategy - Excluding the password credential provider](/windows/security/identity-protection/hello-for-business/passwordless-strategy)<br> [Require device to be marked as compliant](../conditional-access/require-managed-devices.md)<br> [Conditional Access - Require MFA for all users](../conditional-access/howto-conditional-access-policy-all-users-mfa.md)<p>Authentication Methods<br> [Azure Active Directory passwordless sign-in (preview) | FIDO2 security keys](../authentication/concept-authentication-passwordless.md)<br> [Passwordless security key sign-in Windows - Azure Active Directory](../authentication/howto-authentication-passwordless-security-key-windows.md)<br> [ADFS: Certificate Authentication with Azure AD and Office 365](/archive/blogs/samueld/adfs-certauth-aad-o365)<br> [How Smart Card Sign-in Works in Windows (Windows 10)](/windows/security/identity-protection/smart-cards/smart-card-how-smart-card-sign-in-works-in-windows)<br> [Windows Hello for Business Overview (Windows 10)](/windows/security/identity-protection/hello-for-business/hello-overview)<p>Additional Resources:<br> [Policy CSP - Windows Client Management](/windows/client-management/mdm/policy-configuration-service-provider)<br>[Plan a passwordless authentication deployment with Azure AD](../authentication/howto-authentication-passwordless-deployment.md)<br> |
| **IA-2(5)**<br>The organization requires individuals to be authenticated with an individual authenticator when a group authenticator is employed. | **When multiple users have access to a shared or group account password, require each user to first authenticate by using an individual authenticator.**<p>Use an individual account per user. If a shared account is required, Azure AD permits binding of multiple authenticators to an account so that each user has an individual authenticator. <p>Resources<br><li>[How it works: Azure AD multifactor authentication](../authentication/concept-mfa-howitworks.md)<br> <li>[Manage authentication methods for Azure AD multifactor authentication](../authentication/howto-mfa-userdevicesettings.md) |
-| **IA-2(8)**<br>The information system implements replay-resistant authentication mechanisms for network access to privileged accounts. | **Implement replay-resistant authentication mechanisms for network access to privileged accounts.**<p>Configure conditional access policies to require multifactor authentication for all users. All Azure AD authentication methods at authentication assurance level 2 and 3 use either nonce or challenges and are resistant to replay attacks.<p>References<br> <li>[Conditional access: Require multifactor authentication for all users](../conditional-access/howto-conditional-access-policy-all-users-mfa.md)<br> <li>[Achieving NIST authenticator assurance levels with the Microsoft identity platform](nist-overview.md) |
-| **IA-2(11)**<br>The information system implements multifactor authentication for remote access to privileged and non-privileged accounts such that one of the factors is provided by a device separate from the system gaining access and the device meets [*FedRAMP Assignment: FIPS 140-2, NIAP* Certification, or NSA approval*].<br><br>*National Information Assurance Partnership (NIAP)<br>**Additional FedRAMP Requirements and Guidance:**<br>**Guidance:** PIV = separate device. Please refer to NIST SP 800-157 Guidelines for Derived Personal Identity Verification (PIV) Credentials. FIPS 140-2 means validated by the Cryptographic Module Validation Program (CMVP). | **Implement Azure AD multifactor authentication to access customer-deployed resources remotely so that one of the factors is provided by a device separate from the system gaining access where the device meets FIPS-140-2, NIAP certification, or NSA approval.**<p>See guidance for IA-02(1-4). Azure AD authentication methods to consider at AAL3 meeting the separate device requirements are:<p> FIDO2 security keys<br> <li>Windows Hello for Business with hardware TPM (TPM is recognized as a valid "something you have" factor by NIST 800-63B Section 5.1.7.1.)<br> <li>Smart card<p>References<br><li>[Achieving NIST authenticator assurance levels with the Microsoft identity platform](nist-overview.md)<br> <li>[NIST 800-63B Section 5.1.7.1](https://pages.nist.gov/800-63-3/sp800-63b.html) |
-| **IA-2(12)*<br>The information system accepts and electronically verifies Personal Identity Verification (PIV) credentials.<br><br>**IA-2 (12) Additional FedRAMP Requirements and Guidance:**<br>**Guidance:** Include Common Access Card (CAC), i.e., the DoD technical implementation of PIV/FIPS 201/HSPD-12. | **Accept and verify personal identity verification (PIV) credentials. This control isn't applicable if the customer doesn't deploy PIV credentials.**<p>Configure federated authentication by using Active Directory Federation Services (AD FS) to accept PIV (certificate authentication) as both primary and multifactor authentication methods and issue the multifactor authentication (MultipleAuthN) claim when PIV is used. Configure the federated domain in Azure AD with setting **federatedIdpMfaBehavior** to `enforceMfaByFederatedIdp` (recommended) or SupportsMfa to `$True` to direct multifactor authentication requests originating at Azure AD to AD FS. Alternatively, you can use PIV for sign-in on Windows devices and later use integrated Windows authentication along with seamless single sign-on. Windows Server and client verify certificates by default when used for authentication. <p>Resources<br><li>[What is federation with Azure AD?](../hybrid/whatis-fed.md)<br> <li>[Configure AD FS support for user certificate authentication](/windows-server/identity/ad-fs/operations/configure-user-certificate-authentication)<br> <li>[Configure authentication policies](/windows-server/identity/ad-fs/operations/configure-authentication-policies)<br> <li>[Secure resources with Azure AD multifactor authentication and AD FS](../authentication/howto-mfa-adfs.md)<br><li>[Set-MsolDomainFederationSettings](/powershell/module/msonline/set-msoldomainfederationsettings)<br> <li>[Azure AD Connect: Seamless single sign-on](../hybrid/how-to-connect-sso.md) |
-| **IA-3 Device Identification and Authentication**<br>The information system uniquely identifies and authenticates [*Assignment: organization-defined specific and/or types of devices] before establishing a [Selection (one or more): local; remote; network*] connection. | **Implement device identification and authentication prior to establishing a connection.**<p>Configure Azure AD to identify and authenticate Azure AD Registered, Azure AD Joined, and Azure AD Hybrid joined devices.<p> Resources<br><li>[What is a device identity?](../devices/overview.md)<br> <li>[Plan an Azure AD devices deployment](../devices/plan-device-deployment.md)<br><li>[Require managed devices for cloud app access with conditional access](../conditional-access/require-managed-devices.md) |
-| **IA-04 Identifier Management**<br>The organization manages information system identifiers for users and devices by:<br>**(a.)** Receiving authorization from [*FedRAMP Assignment at a minimum, the ISSO (or similar role within the organization)*] to assign an individual, group, role, or device identifier;<br>**(b.)** Selecting an identifier that identifies an individual, group, role, or device;<br>**(c.)** Assigning the identifier to the intended individual, group, role, or device;<br>**(d.)** Preventing reuse of identifiers for [*FedRAMP Assignment: at least two (2) years*]; and<br>**(e.)** Disabling the identifier after [*FedRAMP Assignment: thirty-five (35) days (see additional requirements and guidance)*]<br>**IA-4e Additional FedRAMP Requirements and Guidance:**<br>**Requirement:** The service provider defines the time period of inactivity for device identifiers.<br>**Guidance:** For DoD clouds, see DoD cloud website for specific DoD requirements that go above and beyond FedRAMP.<br><br>**IA-4(4)**<br>The organization manages individual identifiers by uniquely identifying each individual as [*FedRAMP Assignment: contractors; foreign nationals*]. | **Disable account identifiers after 35 days of inactivity and prevent their reuse for two years. Manage individual identifiers by uniquely identifying each individual (for example, contractors and foreign nationals).**<p>Assign and manage individual account identifiers and status in Azure AD in accordance with existing organizational policies defined in AC-02. Follow AC-02(3) to automatically disable user and device accounts after 35 days of inactivity. Ensure that organizational policy maintains all accounts that remain in the disabled state for at least two years. After this time, you can remove them. <p>Determine inactivity<br> <li>[Manage inactive user accounts in Azure AD](../reports-monitoring/howto-manage-inactive-user-accounts.md)<br> <li>[Manage stale devices in Azure AD](../devices/manage-stale-devices.md)<br> <li>[See AC-02 guidance](fedramp-access-controls.md) |
+| **IA-2(8)**<br>The information system implements replay-resistant authentication mechanisms for network access to privileged accounts. | **Implement replay-resistant authentication mechanisms for network access to privileged accounts.**<p>Configure Conditional Access policies to require multifactor authentication for all users. All Azure AD authentication methods at authentication assurance level 2 and 3 use either nonce or challenges and are resistant to replay attacks.<p>References<br> <li>[Conditional Access: Require multifactor authentication for all users](../conditional-access/howto-conditional-access-policy-all-users-mfa.md)<br> <li>[Achieving NIST authenticator assurance levels with the Microsoft identity platform](nist-overview.md) |
+| **IA-2(11)**<br>The information system implements multifactor authentication for remote access to privileged and nonprivileged accounts such that one of the factors is provided by a device separate from the system gaining access and the device meets [*FedRAMP Assignment: FIPS 140-2, NIAP* Certification, or NSA approval*].<br><br>*National Information Assurance Partnership (NIAP)<br>**Additional FedRAMP Requirements and Guidance:**<br>**Guidance:** PIV = separate device. Refer to NIST SP 800-157 Guidelines for Derived Personal Identity Verification (PIV) Credentials. FIPS 140-2 means validated by the Cryptographic Module Validation Program (CMVP). | **Implement Azure AD multifactor authentication to access customer-deployed resources remotely so that one of the factors is provided by a device separate from the system gaining access where the device meets FIPS-140-2, NIAP certification, or NSA approval.**<p>See guidance for IA-02(1-4). Azure AD authentication methods to consider at AAL3 meeting the separate device requirements are:<p> FIDO2 security keys<br> <li>Windows Hello for Business with hardware TPM (TPM is recognized as a valid "something you have" factor by NIST 800-63B Section 5.1.7.1.)<br> <li>Smart card<p>References<br><li>[Achieving NIST authenticator assurance levels with the Microsoft identity platform](nist-overview.md)<br> <li>[NIST 800-63B Section 5.1.7.1](https://pages.nist.gov/800-63-3/sp800-63b.html) |
+| **IA-2(12)*<br>The information system accepts and electronically verifies Personal Identity Verification (PIV) credentials.<br><br>**IA-2 (12) Additional FedRAMP Requirements and Guidance:**<br>**Guidance:** Include Common Access Card (CAC), that is, the DoD technical implementation of PIV/FIPS 201/HSPD-12. | **Accept and verify personal identity verification (PIV) credentials. This control isn't applicable if the customer doesn't deploy PIV credentials.**<p>Configure federated authentication by using Active Directory Federation Services (AD FS) to accept PIV (certificate authentication) as both primary and multifactor authentication methods and issue the multifactor authentication (MultipleAuthN) claim when PIV is used. Configure the federated domain in Azure AD with setting **federatedIdpMfaBehavior** to `enforceMfaByFederatedIdp` (recommended) or SupportsMfa to `$True` to direct multifactor authentication requests originating at Azure AD to AD FS. Alternatively, you can use PIV for sign-in on Windows devices and later use integrated Windows authentication along with seamless single sign-on. Windows Server and client verify certificates by default when used for authentication. <p>Resources<br><li>[What is federation with Azure AD?](../hybrid/whatis-fed.md)<br> <li>[Configure AD FS support for user certificate authentication](/windows-server/identity/ad-fs/operations/configure-user-certificate-authentication)<br> <li>[Configure authentication policies](/windows-server/identity/ad-fs/operations/configure-authentication-policies)<br> <li>[Secure resources with Azure AD multifactor authentication and AD FS](../authentication/howto-mfa-adfs.md)<br><li>[New-MgDomainFederationConfiguration](/powershell/module/microsoft.graph.identity.directorymanagement/new-mgdomainfederationconfiguration)<br> <li>[Azure AD Connect: Seamless single sign-on](../hybrid/how-to-connect-sso.md) |
+| **IA-3 Device Identification and Authentication**<br>The information system uniquely identifies and authenticates [*Assignment: organization-defined specific and/or types of devices] before establishing a [Selection (one or more): local; remote; network*] connection. | **Implement device identification and authentication prior to establishing a connection.**<p>Configure Azure AD to identify and authenticate Azure AD Registered, Azure AD Joined, and Azure AD Hybrid joined devices.<p> Resources<br><li>[What is a device identity?](../devices/overview.md)<br> <li>[Plan an Azure AD devices deployment](../devices/plan-device-deployment.md)<br><li>[Require managed devices for cloud app access with Conditional Access](../conditional-access/require-managed-devices.md) |
+| **IA-04 Identifier Management**<br>The organization manages information system identifiers for users and devices by:<br>**(a.)** Receiving authorization from [*FedRAMP Assignment at a minimum, the ISSO (or similar role within the organization)*] to assign an individual, group, role, or device identifier;<br>**(b.)** Selecting an identifier that identifies an individual, group, role, or device;<br>**(c.)** Assigning the identifier to the intended individual, group, role, or device;<br>**(d.)** Preventing reuse of identifiers for [*FedRAMP Assignment: at least two (2) years*]; and<br>**(e.)** Disabling the identifier after [*FedRAMP Assignment: thirty-five (35) days (see requirements and guidance)*]<br>**IA-4e Additional FedRAMP Requirements and Guidance:**<br>**Requirement:** The service provider defines the time period of inactivity for device identifiers.<br>**Guidance:** For DoD clouds, see DoD cloud website for specific DoD requirements that go above and beyond FedRAMP.<br><br>**IA-4(4)**<br>The organization manages individual identifiers by uniquely identifying each individual as [*FedRAMP Assignment: contractors; foreign nationals*]. | **Disable account identifiers after 35 days of inactivity and prevent their reuse for two years. Manage individual identifiers by uniquely identifying each individual (for example, contractors and foreign nationals).**<p>Assign and manage individual account identifiers and status in Azure AD in accordance with existing organizational policies defined in AC-02. Follow AC-02(3) to automatically disable user and device accounts after 35 days of inactivity. Ensure that organizational policy maintains all accounts that remain in the disabled state for at least two years. After this time, you can remove them. <p>Determine inactivity<br> <li>[Manage inactive user accounts in Azure AD](../reports-monitoring/howto-manage-inactive-user-accounts.md)<br> <li>[Manage stale devices in Azure AD](../devices/manage-stale-devices.md)<br> <li>[See AC-02 guidance](fedramp-access-controls.md) |
| **IA-5 Authenticator Management**<br>The organization manages information system authenticators by:<br>**(a.)** Verifying, as part of the initial authenticator distribution, the identity of the individual, group, role, or device receiving the authenticator;<br>**(b.)** Establishing initial authenticator content for authenticators defined by the organization;<br>**(c.)** Ensuring that authenticators have sufficient strength of mechanism for their intended use;<br>**(d.)** Establishing and implementing administrative procedures for initial authenticator distribution, for lost/compromised or damaged authenticators, and for revoking authenticators;<br>**(e.)** Changing default content of authenticators prior to information system installation;<br>**(f.)** Establishing minimum and maximum lifetime restrictions and reuse conditions for authenticators;<br>**(g.)** Changing/refreshing authenticators [*Assignment: organization-defined time period by authenticator type*].<br>**(h.)** Protecting authenticator content from unauthorized disclosure and modification;<br>**(i.)** Requiring individuals to take, and having devices implement, specific security safeguards to protect authenticators; and<br>**(j.)** Changing authenticators for group/role accounts when membership to those accounts changes.<br><br>**IA-5 Additional FedRAMP Requirements and Guidance:**<br>**Requirement:** Authenticators must be compliant with NIST SP 800-63-3 Digital Identity Guidelines IAL, AAL, FAL level 3. Link https://pages.nist.gov/800-63-3 | **Configure and manage information system authenticators.**<p>Azure AD supports various authentication methods. You can use your existing organizational policies for management. See guidance for authenticator selection in IA-02(1-4). Enable users in combined registration for SSPR and Azure AD multifactor authentication and require users to register a minimum of two acceptable multifactor authentication methods to facilitate self-remediation. You can revoke user-configured authenticators at any time with the authentication methods API. <p>Authenticator strength/protecting authenticator content<br> <li>[Achieving NIST authenticator assurance levels with the Microsoft identity platform](nist-overview.md)<p>Authentication methods and combined registration<br> <li>[What authentication and verification methods are available in Azure Active Directory?](../authentication/concept-authentication-methods.md)<br> <li>[Combined registration for SSPR and Azure AD multifactor authentication](../authentication/concept-registration-mfa-sspr-combined.md)<p>Authenticator revokes<br> <li>[Azure AD authentication methods API overview](/graph/api/resources/authenticationmethods-overview) |
-| **IA-5(1)**<br>The information system, for password-based authentication:<br>**(a.)** Enforces minimum password complexity of [*Assignment: organization-defined requirements for case sensitivity, number of characters, mix of upper-case letters, lower-case letters, numbers, and special characters, including minimum requirements for each type*];<br>**(b.)** Enforces at least the following number of changed characters when new passwords are created: [*FedRAMP Assignment: at least fifty percent (50%)*];<br>**(c.)** Stores and transmits only cryptographically-protected passwords;<br>**(d.) Enforces password minimum and maximum lifetime restrictions of [*Assignment: organization- defined numbers for lifetime minimum, lifetime maximum*];<br>**(e.)** Prohibits password reuse for [*FedRAMP Assignment: twenty-four (24)*] generations; and<br>**(f.)** Allows the use of a temporary password for system logons with an immediate change to a permanent password.<br><br>**IA-5 (1) a and d Additional FedRAMP Requirements and Guidance:**<br>**Guidance:** If password policies are compliant with NIST SP 800-63B Memorized Secret (Section 5.1.1) Guidance, the control may be considered compliant. | **Implement password-based authentication requirements.**<p>Per NIST SP 800-63B Section 5.1.1: Maintain a list of commonly used, expected, or compromised passwords.<p>With Azure AD password protection, default global banned password lists are automatically applied to all users in an Azure AD tenant. To support your business and security needs, you can define entries in a custom banned password list. When users change or reset their passwords, these banned password lists are checked to enforce the use of strong passwords.<p>We strongly encourage passwordless strategies. This control is only applicable to password authenticators, so removing passwords as an available authenticator renders this control not applicable.<p>NIST reference documents<br><li>[NIST Special Publication 800-63B](https://pages.nist.gov/800-63-3/sp800-63b.html)<br><li>[NIST Special Publication 800-53 Revision 5](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-53r5.pdf) - IA-5 - Control enhancement (1)<p>Resource<br><li>[Eliminate bad passwords using Azure AD password protection](../authentication/concept-password-ban-bad.md) |
-| **IA-5(2)**<br>The information system, for PKI-based authentication:<br>**(a.)** Validates certifications by constructing and verifying a certification path to an accepted trust anchor including checking certificate status information;<br>**(b.)** Enforces authorized access to the corresponding private key;<br>**(c.)** Maps the authenticated identity to the account of the individual or group; and<br>**(d.)** Implements a local cache of revocation data to support path discovery and validation in case of inability to access revocation information via the network. | **Implement PKI-based authentication requirements.**<p>Federate Azure AD via AD FS to implement PKI-based authentication. By default, AD FS validates certificates, locally caches revocation data, and maps users to the authenticated identity in Active Directory. <p> Resources<br> <li>[What is federation with Azure AD?](../hybrid/whatis-fed.md)<br> <li>[Configure AD FS support for user certificate authentication](/windows-server/identity/ad-fs/operations/configure-user-certificate-authentication) |
-| **IA-5(4)**<br>The organization employs automated tools to determine if password authenticators are sufficiently strong to satisfy [*FedRAMP Assignment: complexity as identified in IA-5 (1) Control Enhancement (H) Part A*].<br><br>**IA-5(4) Additional FedRAMP Requirements and Guidance:**<br>**Guidance:** If automated mechanisms which enforce password authenticator strength at creation are not used, automated mechanisms must be used to audit strength of created password authenticators. | **Employ automated tools to validate password strength requirements.** <p>Azure AD implements automated mechanisms that enforce password authenticator strength at creation. This automated mechanism can also be extended to enforce password authenticator strength for on-premises Active Directory. Revision 5 of NIST 800-53 has withdrawn IA-04(4) and incorporated the requirement into IA-5(1).<p>Resources<br> <li>[Eliminate bad passwords using Azure AD password protection](../authentication/concept-password-ban-bad.md)<br> <li>[Azure AD password protection for Active Directory Domain Services](../authentication/concept-password-ban-bad-on-premises.md)<br><li>[NIST Special Publication 800-53 Revision 5](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-53r5.pdf) - IA-5 - Control enhancement (4) |
+| **IA-5(1)**<br>The information system, for password-based authentication:<br>**(a.)** Enforces minimum password complexity of [*Assignment: organization-defined requirements for case sensitivity, number of characters, mix of upper-case letters, lower-case letters, numbers, and special characters, including minimum requirements for each type*];<br>**(b.)** Enforces at least the following number of changed characters when new passwords are created: [*FedRAMP Assignment: at least fifty percent (50%)*];<br>**(c.)** Stores and transmits only cryptographically protected passwords;<br>**(d.) Enforces password minimum and maximum lifetime restrictions of [*Assignment: organization- defined numbers for lifetime minimum, lifetime maximum*];<br>**(e.)** Prohibits password reuse for [*FedRAMP Assignment: twenty-four (24)*] generations; and<br>**(f.)** Allows the use of a temporary password for system logons with an immediate change to a permanent password.<br><br>**IA-5 (1) a and d Additional FedRAMP Requirements and Guidance:**<br>**Guidance:** If password policies are compliant with NIST SP 800-63B Memorized Secret (Section 5.1.1) Guidance, the control may be considered compliant. | **Implement password-based authentication requirements.**<p>Per NIST SP 800-63B Section 5.1.1: Maintain a list of commonly used, expected, or compromised passwords.<p>With Azure AD password protection, default global banned password lists are automatically applied to all users in an Azure AD tenant. To support your business and security needs, you can define entries in a custom banned password list. When users change or reset their passwords, these banned password lists are checked to enforce the use of strong passwords.<p>We strongly encourage passwordless strategies. This control is only applicable to password authenticators, so removing passwords as an available authenticator renders this control not applicable.<p>NIST reference documents<br><li>[NIST Special Publication 800-63B](https://pages.nist.gov/800-63-3/sp800-63b.html)<br><li>[NIST Special Publication 800-53 Revision 5](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-53r5.pdf) - IA-5 - Control enhancement (1)<p>Resource<br><li>[Eliminate bad passwords using Azure AD password protection](../authentication/concept-password-ban-bad.md) |
+| **IA-5(2)**<br>The information system, for PKI-based authentication:<br>**(a.)** Validates certifications by constructing and verifying a certification path to an accepted trust anchor including checking certificate status information;<br>**(b.)** Enforces authorized access to the corresponding private key;<br>**(c.)** Maps the authenticated identity to the account of the individual or group; and<br>**(d.)** Implements a local cache of revocation data to support path discovery and validation during inability to access revocation information via the network. | **Implement PKI-based authentication requirements.**<p>Federate Azure AD via AD FS to implement PKI-based authentication. By default, AD FS validates certificates, locally caches revocation data, and maps users to the authenticated identity in Active Directory. <p> Resources<br> <li>[What is federation with Azure AD?](../hybrid/whatis-fed.md)<br> <li>[Configure AD FS support for user certificate authentication](/windows-server/identity/ad-fs/operations/configure-user-certificate-authentication) |
+| **IA-5(4)**<br>The organization employs automated tools to determine if password authenticators are sufficiently strong to satisfy [*FedRAMP Assignment: complexity as identified in IA-5 (1) Control Enhancement (H) Part A*].<br><br>**IA-5(4) Additional FedRAMP Requirements and Guidance:**<br>**Guidance:** If automated mechanisms that enforce password authenticator strength at creation aren't used, automated mechanisms must be used to audit strength of created password authenticators. | **Employ automated tools to validate password strength requirements.** <p>Azure AD implements automated mechanisms that enforce password authenticator strength at creation. This automated mechanism can also be extended to enforce password authenticator strength for on-premises Active Directory. Revision 5 of NIST 800-53 has withdrawn IA-04(4) and incorporated the requirement into IA-5(1).<p>Resources<br> <li>[Eliminate bad passwords using Azure AD password protection](../authentication/concept-password-ban-bad.md)<br> <li>[Azure AD password protection for Active Directory Domain Services](../authentication/concept-password-ban-bad-on-premises.md)<br><li>[NIST Special Publication 800-53 Revision 5](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-53r5.pdf) - IA-5 - Control enhancement (4) |
| **IA-5(6)**<br>The organization protects authenticators commensurate with the security category of the information to which use of the authenticator permits access. | **Protect authenticators as defined in the FedRAMP High Impact level.**<p>For more information on how Azure AD protects authenticators, see [Azure AD data security considerations](https://aka.ms/aaddatawhitepaper). | | **IA-05(7)**<br>The organization ensures that unencrypted static authenticators are not embedded in applications or access scripts or stored on function keys. | **Ensure unencrypted static authenticators (for example, a password) aren't embedded in applications or access scripts or stored on function keys.**<p>Implement managed identities or service principal objects (configured with only a certificate).<p>Resources<br><li>[What are managed identities for Azure resources?](../managed-identities-azure-resources/overview.md)<br><li>[Create an Azure AD app and service principal in the portal](../develop/howto-create-service-principal-portal.md) | | **IA-5(8)**<br>The organization implements [*FedRAMP Assignment: different authenticators on different systems*] to manage the risk of compromise due to individuals having accounts on multiple information systems. | **Implement security safeguards when individuals have accounts on multiple information systems.**<p>Implement single sign-on by connecting all applications to Azure AD, as opposed to having individual accounts on multiple information systems.<p>[What is Azure single sign-on?](../manage-apps/what-is-single-sign-on.md) | | **IA-5(11)**<br>The information system, for hardware token-based authentication, employs mechanisms that satisfy [*Assignment: organization-defined token quality requirements*]. | **Require hardware token quality requirements as required by the FedRAMP High Impact level.**<p>Require the use of hardware tokens that meet AAL3.<p>[Achieving NIST authenticator assurance levels with the Microsoft identity platform](https://azure.microsoft.com/resources/microsoft-nist/) |
-| **IA-5(13)**<br>The information system prohibits the use of cached authenticators after [*Assignment: organization-defined time period*]. | **Enforce the expiration of cached authenticators.**<p>Cached authenticators are used to authenticate to the local machine when the network isn't available. To limit the use of cached authenticators, configure Windows devices to disable their use. Where this action isn't possible or practical, use the following compensating controls:<p>Configure conditional access session controls by using application-enforced restrictions for Office applications.<br> Configure conditional access by using application controls for other applications.<p>Resources<br> <li>[Interactive logon number of previous logons to cache](/windows/security/threat-protection/security-policy-settings/interactive-logon-number-of-previous-logons-to-cache-in-case-domain-controller-is-not-available)<br> <li>[Session controls in conditional access policy: Application enforced restrictions](../conditional-access/concept-conditional-access-session.md)<br><li>[Session controls in conditional access policy: Conditional access application control](../conditional-access/concept-conditional-access-session.md) |
+| **IA-5(13)**<br>The information system prohibits the use of cached authenticators after [*Assignment: organization-defined time period*]. | **Enforce the expiration of cached authenticators.**<p>Cached authenticators are used to authenticate to the local machine when the network isn't available. To limit the use of cached authenticators, configure Windows devices to disable their use. Where this action isn't possible or practical, use the following compensating controls:<p>Configure Conditional Access session controls by using application-enforced restrictions for Office applications.<br> Configure Conditional Access by using application controls for other applications.<p>Resources<br> <li>[Interactive logon number of previous logons to cache](/windows/security/threat-protection/security-policy-settings/interactive-logon-number-of-previous-logons-to-cache-in-case-domain-controller-is-not-available)<br> <li>[Session controls in Conditional Access policy: Application enforced restrictions](../conditional-access/concept-conditional-access-session.md)<br><li>[Session controls in conditional access policy: Conditional Access application control](../conditional-access/concept-conditional-access-session.md) |
| **IA-6 Authenticator Feedback**<br>The information system obscures feedback of authentication information during the authentication process to protect the information from possible exploitation/use by unauthorized individuals. | **Obscure authentication feedback information during the authentication process.**<p>By default, Azure AD obscures all authenticator feedback.<p>
-| **IA-7 Cryptographic Module Authentication**<br>The information system implements mechanisms for authentication to a cryptographic module that meet the requirements of applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance for such authentication. | **Implement mechanisms for authentication to a cryptographic module that meets applicable federal laws.**<p>The FedRAMP High Impact level requires the AAL3 authenticator. All authenticators supported by Azure AD at AAL3 provide mechanisms to authenticate operator access to the module as required. For example, in a Windows Hello for Business deployment with hardware TPM, configure the level of TPM owner authorization.<p> Resources<br><li>For more information, see IA-02 (2 and 4).<br> <li>[Achieving NIST authenticator assurance levels with the Microsoft identity platform](nist-overview.md) <br> <li>[TPM Group Policy settings](/windows/security/information-protection/tpm/trusted-platform-module-services-group-policy-settings) |
-| **IA-8 Identification and Authentication (Non-Organizational Users)**<br>The information system uniquely identifies and authenticates non-organizational users (or processes acting on behalf of non-organizational users). | **The information system uniquely identifies and authenticates non-organizational users (or processes acting for non-organizational users).**<p>Azure AD uniquely identifies and authenticates non-organizational users homed in the organizations tenant or in external directories by using Federal Identity, Credential, and Access Management (FICAM)-approved protocols.<p>Resources<br><li>[What is B2B collaboration in Azure Active Directory?](../external-identities/what-is-b2b.md)<br> <li>[Direct federation with an identity provider for B2B](../external-identities/direct-federation.md)<br> <li>[Properties of a B2B guest user](../external-identities/user-properties.md) |
+| **IA-7 Cryptographic Module Authentication**<br>The information system implements mechanisms for authentication to a cryptographic module for requirements of applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance for such authentication. | **Implement mechanisms for authentication to a cryptographic module that meets applicable federal laws.**<p>The FedRAMP High Impact level requires the AAL3 authenticator. All authenticators supported by Azure AD at AAL3 provide mechanisms to authenticate operator access to the module as required. For example, in a Windows Hello for Business deployment with hardware TPM, configure the level of TPM owner authorization.<p> Resources<br><li>For more information, see IA-02 (2 and 4).<br> <li>[Achieving NIST authenticator assurance levels with the Microsoft identity platform](nist-overview.md) <br> <li>[TPM Group Policy settings](/windows/security/information-protection/tpm/trusted-platform-module-services-group-policy-settings) |
+| **IA-8 Identification and Authentication (Non-Organizational Users)**<br>The information system uniquely identifies and authenticates non-organizational users (or processes acting on behalf of non-organizational users). | **The information system uniquely identifies and authenticates nonorganizational users (or processes acting for nonorganizational users).**<p>Azure AD uniquely identifies and authenticates non-organizational users homed in the organizations tenant or in external directories by using Federal Identity, Credential, and Access Management (FICAM)-approved protocols.<p>Resources<br><li>[What is B2B collaboration in Azure Active Directory?](../external-identities/what-is-b2b.md)<br> <li>[Direct federation with an identity provider for B2B](../external-identities/direct-federation.md)<br> <li>[Properties of a B2B guest user](../external-identities/user-properties.md) |
| **IA-8(1)**<br>The information system accepts and electronically verifies Personal Identity Verification (PIV) credentials from other federal agencies.<br><br>**IA-8(4)**<br>The information system conforms to FICAM-issued profiles. | **Accept and verify PIV credentials issued by other federal agencies. Conform to the profiles issued by the FICAM.**<p>Configure Azure AD to accept PIV credentials via federation (OIDC, SAML) or locally via integrated Windows authentication.<p>Resources<br> <li>[What is federation with Azure AD?](../hybrid/whatis-fed.md)<br> <li>[Configure AD FS support for user certificate authentication](/windows-server/identity/ad-fs/operations/configure-user-certificate-authentication)<br><li>[What is B2B collaboration in Azure Active Directory?](../external-identities/what-is-b2b.md)<br> <li>[Direct federation with an identity provider for B2B](../external-identities/direct-federation.md) | | **IA-8(2)**<br>The information system accepts only FICAM-approved third-party credentials. | **Accept only FICAM-approved credentials.**<p>Azure AD supports authenticators at NIST AALs 1, 2, and 3. Restrict the use of authenticators commensurate with the security category of the system being accessed. <p>Azure AD supports a wide variety of authentication methods.<p>Resources<br> <li>[What authentication and verification methods are available in Azure Active Directory?](../authentication/concept-authentication-methods.md)<br> <li>[Azure AD authentication methods policy API overview](/graph/api/resources/authenticationmethodspolicies-overview)<br> <li>[Achieving NIST authenticator assurance levels with the Microsoft identity platform](https://azure.microsoft.com/resources/microsoft-nist/) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
active-directory Fedramp Other Controls https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/standards/fedramp-other-controls.md
Previously updated : 09/13/2022 Last updated : 05/23/2023
The guidance in the following table pertains to:
| FedRAMP Control ID and description | Azure AD guidance and recommendations | | - | - |
-| **AU-2 Audit Events**<br>**The organization:**<br>**(a.)** Determines that the information system is capable of auditing the following events: [*FedRAMP Assignment: [Successful and unsuccessful account logon events, account management events, object access, policy change, privilege functions, process tracking, and system events. For Web applications: all administrator activity, authentication checks, authorization checks, data deletions, data access, data changes, and permission changes*];<br>**(b.)** Coordinates the security audit function with other organizational entities requiring audit-related information to enhance mutual support and to help guide the selection of auditable events;<br>**(c.)** Provides a rationale for why the auditable events are deemed to be adequate to support after-the-fact investigations of security incidents; and<br>**(d.)** Determines that the following events are to be audited within the information system: [*FedRAMP Assignment: organization-defined subset of the auditable events defined in AU-2 a. to be audited continually for each identified event*].<br><br>**AU-2 Additional FedRAMP Requirements and Guidance:**<br>**Requirement:** Coordination between service provider and consumer shall be documented and accepted by the JAB/AO.<br><br>**AU-3 Content and Audit Records**<br>The information system generates audit records containing information that establishes what type of event occurred, when the event occurred, where the event occurred, the source of the event, the outcome of the event, and the identity of any individuals or subjects associated with the event.<br><br>**AU-3(1)**<br>The information system generates audit records containing the following additional information: [*FedRAMP Assignment: organization-defined additional, more detailed information*].<br><br>**AU-3 (1) Additional FedRAMP Requirements and Guidance:**<br>**Requirement:** The service provider defines audit record types [*FedRAMP Assignment: session, connection, transaction, or activity duration; for client-server transactions, the number of bytes received and bytes sent; additional informational messages to diagnose or identify the event; characteristics that describe or identify the object or resource being acted upon; individual identities of group account users; full-text of privileged commands*]. The audit record types are approved and accepted by the JAB/AO.<br>**Guidance:** For client-server transactions, the number of bytes sent and received gives bidirectional transfer information that can be helpful during an investigation or inquiry.<br><br>**AU-3(2)**<br>The information system provides centralized management and configuration of the content to be captured in audit records generated by [*FedRAMP Assignment: all network, data storage, and computing devices*]. | Ensure the system is capable of auditing events defined in AU-2 Part a. Coordinate with other entities within the organization's subset of auditable events to support after-the-fact investigations. Implement centralized management of audit records.<p>All account lifecycle operations (account creation, modification, enabling, disabling, and removal actions) are audited within the Azure AD audit logs. All authentication and authorization events are audited within Azure AD sign-in logs, and any detected risks are audited in the Identity Protection logs. You can stream each of these logs directly into a security information and event management (SIEM) solution such as Microsoft Sentinel. Alternatively, use Azure Event Hubs to integrate logs with third-party SIEM solutions.<p>Audit events<li> [Audit activity reports in the Azure Active Directory portal](../reports-monitoring/concept-audit-logs.md)<li> [Sign-in activity reports in the Azure Active Directory portal](../reports-monitoring/concept-sign-ins.md)<li>[How To: Investigate risk](../identity-protection/howto-identity-protection-investigate-risk.md)<p>SIEM integrations<li> [Microsoft Sentinel : Connect data from Azure Active Directory (Azure AD)](../../sentinel/connect-azure-active-directory.md)<li>[Stream to Azure event hub and other SIEMs](../reports-monitoring/tutorial-azure-monitor-stream-logs-to-event-hub.md) |
+| **AU-2 Audit Events**<br>**The organization:**<br>**(a.)** Determines that the information system is capable of auditing the following events: [*FedRAMP Assignment: [Successful and unsuccessful account logon events, account management events, object access, policy change, privilege functions, process tracking, and system events. For Web applications: all administrator activity, authentication checks, authorization checks, data deletions, data access, data changes, and permission changes*];<br>**(b.)** Coordinates the security audit function with other organizational entities requiring audit-related information to enhance mutual support and to help guide the selection of auditable events;<br>**(c.)** Provides a rationale for why the auditable events are deemed to be adequate to support after-the-fact investigations of security incidents; and<br>**(d.)** Determines that the following events are to be audited in the information system: [*FedRAMP Assignment: organization-defined subset of the auditable events defined in AU-2 a. to be audited continually for each identified event*].<br><br>**AU-2 Additional FedRAMP Requirements and Guidance:**<br>**Requirement:** Coordination between service provider and consumer shall be documented and accepted by the JAB/AO.<br><br>**AU-3 Content and Audit Records**<br>The information system generates audit records containing information that establishes what type of event occurred, when the event occurred, where the event occurred, the source of the event, the outcome of the event, and the identity of any individuals or subjects associated with the event.<br><br>**AU-3(1)**<br>The information system generates audit records containing the following additional information: [*FedRAMP Assignment: organization-defined additional, more detailed information*].<br><br>**AU-3 (1) Additional FedRAMP Requirements and Guidance:**<br>**Requirement:** The service provider defines audit record types [*FedRAMP Assignment: session, connection, transaction, or activity duration; for client-server transactions, the number of bytes received and bytes sent; additional informational messages to diagnose or identify the event; characteristics that describe or identify the object or resource being acted upon; individual identities of group account users; full-text of privileged commands*]. The audit record types are approved and accepted by the JAB/AO.<br>**Guidance:** For client-server transactions, the number of bytes sent and received gives bidirectional transfer information that can be helpful during an investigation or inquiry.<br><br>**AU-3(2)**<br>The information system provides centralized management and configuration of the content to be captured in audit records generated by [*FedRAMP Assignment: all network, data storage, and computing devices*]. | Ensure the system is capable of auditing events defined in AU-2 Part a. Coordinate with other entities within the organization's subset of auditable events to support after-the-fact investigations. Implement centralized management of audit records.<p>All account lifecycle operations (account creation, modification, enabling, disabling, and removal actions) are audited within the Azure AD audit logs. All authentication and authorization events are audited within Azure AD sign-in logs, and any detected risks are audited in the Identity Protection logs. You can stream each of these logs directly into a security information and event management (SIEM) solution such as Microsoft Sentinel. Alternatively, use Azure Event Hubs to integrate logs with third-party SIEM solutions.<p>Audit events<li> [Audit activity reports in the Azure Active Directory portal](../reports-monitoring/concept-audit-logs.md)<li> [Sign-in activity reports in the Azure Active Directory portal](../reports-monitoring/concept-sign-ins.md)<li>[How To: Investigate risk](../identity-protection/howto-identity-protection-investigate-risk.md)<p>SIEM integrations<li> [Microsoft Sentinel : Connect data from Azure Active Directory (Azure AD)](../../sentinel/connect-azure-active-directory.md)<li>[Stream to Azure event hub and other SIEMs](../reports-monitoring/tutorial-azure-monitor-stream-logs-to-event-hub.md) |
| **AU-6 Audit Review, Analysis, and Reporting**<br>**The organization:**<br>**(a.)** Reviews and analyzes information system audit records [*FedRAMP Assignment: at least weekly*] for indications of [*Assignment: organization-defined inappropriate or unusual activity*]; and<br>**(b.)** Reports findings to [*Assignment: organization-defined personnel or roles*].<br>**AU-6 Additional FedRAMP Requirements and Guidance:**<br>**Requirement:** Coordination between service provider and consumer shall be documented and accepted by the Authorizing Official. In multi-tenant environments, capability and means for providing review, analysis, and reporting to consumer for data pertaining to consumer shall be documented.<br><br>**AU-6(1)**<br>The organization employs automated mechanisms to integrate audit review, analysis, and reporting processes to support organizational processes for investigation and response to suspicious activities.<br><br>**AU-6(3)**<br>The organization analyzes and correlates audit records across different repositories to gain organization-wide situational awareness.<br><br>**AU-6(4)**<br>The information system provides the capability to centrally review and analyze audit records from multiple components within the system.<br><br>**AU-6(5)**<br>The organization integrates analysis of audit records with analysis of [*FedRAMP Selection (one or more): vulnerability scanning information; performance data; information system monitoring information; penetration test data;* [*Assignment: organization-defined dat). | ## Incident response
The guidance in the following table pertains to:
| FedRAMP Control ID and description | Azure AD guidance and recommendations | | - | - |
-| **IR-4 Incident Handling**<br>**The organization:**<br>**(a.)** Implements an incident handling capability for security incidents that includes preparation, detection and analysis, containment, eradication, and recovery;<br>**(b.)** Coordinates incident handling activities with contingency planning activities; and<br>**(c.)** Incorporates lessons learned from ongoing incident handling activities into incident response procedures, training, and testing/exercises, and implements the resulting changes accordingly.<br>**IR-4 Additional FedRAMP Requirements and Guidance:**<br>**Requirement:** The service provider ensures that individuals conducting incident handling meet personnel security requirements commensurate with the criticality/sensitivity of the information being processed, stored, and transmitted by the information system.<br><br>**IR-04(1)**<br>The organization employs automated mechanisms to support the incident handling process.<br><br>**IR-04(2)**<br>The organization includes dynamic reconfiguration of [*FedRAMP Assignment: all network, data storage, and computing devices*] as part of the incident response capability.<br><br>**IR-04(3)**<br>The organization identifies [*Assignment: organization-defined classes of incidents*] and [*Assignment: organization-defined actions to take in response to classes of incident*] to ensure continuation of organizational missions and business functions.<br><br>**IR-04(4)**<br>The organization correlates incident information and individual incident responses to achieve an organization-wide perspective on incident awareness and response.<br><br>**IR-04(6)**<br>The organization implements incident handling capability for insider threats.<br><br>**IR-04(8)**<br>The organization implements incident handling capability for insider threats.<br>The organization coordinates with [*FedRAMP Assignment: external organizations including consumer incident responders and network defenders and the appropriate consumer incident response team (CIRT)/ Computer Emergency Response Team (CERT) (such as US-CERT, DoD CERT, IC CERT)*] to correlate and share [*Assignment: organization-defined incident information*] to achieve a cross- organization perspective on incident awareness and more effective incident responses.<br><br>**IR-05 Incident Monitoring**<br>The organization tracks and documents information system security incidents.<br><br>**IR-05(1)**<br>The organization employs automated mechanisms to assist in the tracking of security incidents and in the collection and analysis of incident information. | Implement incident handling and monitoring capabilities. This includes Automated Incident Handling, Dynamic Reconfiguration, Continuity of Operations, Information Correlation, Insider Threats, Correlation with External Organizations, and Incident Monitoring and Automated Tracking. <p>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. Automate dynamic reconfiguration based on events within the SIEM by using Microsoft Graph or Azure AD PowerShell.<p>Audit events<br><li>[Audit activity reports in the Azure Active Directory portal](../reports-monitoring/concept-audit-logs.md)<li>[Sign-in activity reports in the Azure Active Directory portal](../reports-monitoring/concept-sign-ins.md)<li>[How To: Investigate risk](../identity-protection/howto-identity-protection-investigate-risk.md)<p>SIEM integrations<li>[Microsoft Sentinel : Connect data from Azure Active Directory (Azure AD)](../../sentinel/connect-azure-active-directory.md)<li>[Stream to Azure event hub and other SIEMs](../reports-monitoring/tutorial-azure-monitor-stream-logs-to-event-hub.md)<p>Dynamic reconfiguration<li>[AzureAD Module](/powershell/module/azuread/)<li>[Overview of Microsoft Graph](/graph/overview?view=graph-rest-1.0&preserve-view=true) |
+| **IR-4 Incident Handling**<br>**The organization:**<br>**(a.)** Implements an incident handling capability for security incidents that includes preparation, detection and analysis, containment, eradication, and recovery;<br>**(b.)** Coordinates incident handling activities with contingency planning activities; and<br>**(c.)** Incorporates lessons learned from ongoing incident handling activities into incident response procedures, training, and testing/exercises, and implements the resulting changes accordingly.<br>**IR-4 Additional FedRAMP Requirements and Guidance:**<br>**Requirement:** The service provider ensures that individuals conducting incident handling meet personnel security requirements commensurate with the criticality/sensitivity of the information being processed, stored, and transmitted by the information system.<br><br>**IR-04(1)**<br>The organization employs automated mechanisms to support the incident handling process.<br><br>**IR-04(2)**<br>The organization includes dynamic reconfiguration of [*FedRAMP Assignment: all network, data storage, and computing devices*] as part of the incident response capability.<br><br>**IR-04(3)**<br>The organization identifies [*Assignment: organization-defined classes of incidents*] and [*Assignment: organization-defined actions to take in response to classes of incident*] to ensure continuation of organizational missions and business functions.<br><br>**IR-04(4)**<br>The organization correlates incident information and individual incident responses to achieve an organization-wide perspective on incident awareness and response.<br><br>**IR-04(6)**<br>The organization implements incident handling capability for insider threats.<br><br>**IR-04(8)**<br>The organization implements incident handling capability for insider threats.<br>The organization coordinates with [*FedRAMP Assignment: external organizations including consumer incident responders and network defenders and the appropriate consumer incident response team (CIRT)/ Computer Emergency Response Team (CERT) (such as US-CERT, DoD CERT, IC CERT)*] to correlate and share [*Assignment: organization-defined incident information*] to achieve a cross- organization perspective on incident awareness and more effective incident responses.<br><br>**IR-05 Incident Monitoring**<br>The organization tracks and documents information system security incidents.<br><br>**IR-05(1)**<br>The organization employs automated mechanisms to assist in the tracking of security incidents and in the collection and analysis of incident information. | Implement incident handling and monitoring capabilities. This includes Automated Incident Handling, Dynamic Reconfiguration, Continuity of Operations, Information Correlation, Insider Threats, Correlation with External Organizations, and Incident Monitoring and Automated Tracking. <p>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. Automate dynamic reconfiguration based on events in the SIEM by using Microsoft Graph PowerShell.<p>Audit events<br><li>[Audit activity reports in the Azure Active Directory portal](../reports-monitoring/concept-audit-logs.md)<li>[Sign-in activity reports in the Azure Active Directory portal](../reports-monitoring/concept-sign-ins.md)<li>[How To: Investigate risk](../identity-protection/howto-identity-protection-investigate-risk.md)<p>SIEM integrations<li>[Microsoft Sentinel : Connect data from Azure Active Directory (Azure AD)](../../sentinel/connect-azure-active-directory.md)<li>[Stream to Azure event hub and other SIEMs](../reports-monitoring/tutorial-azure-monitor-stream-logs-to-event-hub.md)|
## Personnel security
active-directory Memo 22 09 Other Areas Zero Trust https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/standards/memo-22-09-other-areas-zero-trust.md
Title: Memo 22-09 other areas of Zero Trust
-description: Get guidance on understanding other Zero Trust requirements outlined in US government OMB memorandum 22-09.
+description: Understand other Zero Trust requirements in Office of Management and Budget memorandum 22-09.
Previously updated : 04/28/2023 Last updated : 05/23/2023
-# Other areas of Zero Trust addressed in memorandum 22-09
+# Other areas of Zero Trust addressed in memorandum 22-09
The other articles in this guidance address the identity pillar of Zero Trust principles, as described in the US Office of Management and Budget (OMB) [M 22-09 Memorandum for the Heads of Executive Departments and Agencies](https://www.whitehouse.gov/wp-content/uploads/2022/01/M-22-09.pdf). This article covers Zero Trust maturity model areas beyond the identity pillar, and it addresses the following themes:
We recommend you set up an Azure function or an Azure logic app to use a system-
Learn more: [What are managed identities for Azure resources?](../managed-identities-azure-resources/overview.md)
-Another automation integration point is Azure AD PowerShell modules. Use PowerShell to perform common tasks or configurations in Azure AD, or incorporate into Azure functions or Azure Automation runbooks.
+Another automation integration point is Microsoft Graph PowerShell modules. Use Microsoft Graph PowerShell to perform common tasks or configurations in Azure AD, or incorporate into Azure functions or Azure Automation runbooks.
## Governance
advisor Advisor How To Improve Reliability https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/advisor/advisor-how-to-improve-reliability.md
Title: Improve reliability of your business-critical applications using Azure Advisor.
+ Title: Improve reliability of your business-critical applications using Azure Advisor recommendations and the reliability workbook.
description: Use Azure Advisor to evaluate the reliability posture of your business-critical applications, assess risks and plan improvements. Previously updated : 04/25/2023 Last updated : 05/19/2023
You can evaluate the reliability of posture of your applications, assess risks a
1. Open **Reliability** workbook template. +
+Reliability considerations for individual Azure services are provided in the [resiliency checklist for Azure services](/azure/architecture/checklist/resiliency-per-service).
> [!NOTE] > The workbook is to be used as a guidance only and does not represent a guarantee for service level.
+### Navigating the workbook
+
+Workbook offers a set of filters that you can use to scope recommendation for a specific application.
+
+* Subscription
+* Resource Group
+* Environment
+* Tags
+
+The workbook uses tags with names Environment, environment, Env, env and common keywords (prod, dev, qa, uat, sit, test) as part of resource name to show environment for a specific resource. If there are no tags or naming conventions detected, the environment filter is displayed as 'undefined'. The 'undefined' value is shown only within the workbook and is not used anywhere else.
+
+Use **SLA** and **Help** controls to show additional information:
+
+* Show SLA - Displays the service SLA.
+* Show Help - Displays best practice configurations to increase the reliability of the resource deployment.
+
+The workbook offers best practices for Azure services including:
+* **Compute**: Virtual Machines, Virtual Machine Scale Sets
+* **Containers**: Azure Kubernetes service
+* **Databases**: SQL Database, Synapse SQL Pool, Cosmos DB, Azure Database for MySQL, Azure Cache for Redis
+* **Integration**: Azure API Management
+* **Networking**: Azure Firewall, Azure Front Door & CDN, Application Gateway, Load Balancer, Public IP, VPN & Express Route Gateway
+* **Storage**: Storage Account
+* **Web**: App Service Plan, App Service, Function App
+* **Azure Site Recovery**
+* **Service Alerts**
+
+To share the findings with your team, you can export data for each of the services or share the workbook link with them.
+To customize the workbook, save the template into your subscription and click Edit button in top menu.
+
+> [!NOTE]
+> To assess your workload using the tenets found in the Microsoft Azure Well-Architected Framework, see the [Microsoft Azure Well-Architected Review](/assessments/?id=azure-architecture-review&mode=pre-assessment).
+ ## Next steps For more information about Advisor recommendations, see:
advisor Advisor How To Plan Migration Workloads Service Retirement https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/advisor/advisor-how-to-plan-migration-workloads-service-retirement.md
+
+ Title: Prepare migration of your workloads impacted by service retirements.
+description: Use Azure Advisor to plan the migration of the workloads impacted by service retirements.
+ Last updated : 05/19/2023+++
+# Prepare migration of your workloads impacted by service retirement
+
+Azure Advisor helps you assess and improve the continuity of your business-critical applications. It's important to be aware of upcoming Azure products and feature retirements to understand their impact on your workloads and plan migration.
+
+## Service Retirement workbook
+
+The Service Retirement workbook provides a single centralized resource level view of product retirements. It helps you assess impact, evaluate options, and plan for migration from retiring products and features. The workbook template is available in Azure Advisor gallery.
+Here's how to get started:
+
+1. Navigate to [Workbooks gallery](https://aka.ms/advisorworkbooks) in Azure Advisor
+1. Open **Service Retirement (Preview)** workbook template.
+1. Select a service from the list to display a detailed view of impacted resources.
+
+The workbook shows a list and a map view of service retirements that impact your resources. For each of the services, there's a planned retirement date, number of impacted resources and migration instructions including recommended alternative service.
+
+* Use subscription, resource group and location filters to focus on a specific workload.
+* Use sorting to find services, which are retiring soon and have the biggest impact on your workloads.
+* Share the report with your team to help them plan migration using export function.
+++
+> [!NOTE]
+> The workbook contains information about a subset of products and features that are in the retirement lifecycle. While we continue to add more services to this workbook, you can view the lifecycle status of all Azure products and services by visiting [Azure updates](https://azure.microsoft.com/updates/?updateType=retirements).
+
+For more information about Advisor recommendations, see:
+* [Introduction to Advisor](advisor-overview.md)
+* [Azure Service Health](../service-health/overview.md)
+* [Azure updates](https://azure.microsoft.com/updates/?updateType=retirements)
aks Auto Upgrade Node Image https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/auto-upgrade-node-image.md
az provider register --namespace Microsoft.ContainerService
## Limitations
-If using the `node-image` cluster auto-upgrade channel or the `NodeImage` node OS auto-upgrade channel, Linux [unattended upgrades][unattended-upgrades] are disabled by default. You can't change node OS auto-upgrade channel value if your cluster auto-upgrade channel is `node-image`. In order to set the node OS auto-upgrade channel values, make sure the [cluster auto-upgrade channel][Autoupgrade] isn't `node-image`.
+If using the `node-image` cluster auto-upgrade channel or the `NodeImage` node OS auto-upgrade channel, Linux [unattended upgrades][unattended-upgrades] are disabled by default. You can't change node OS auto-upgrade channel value if your cluster auto-upgrade channel is `node-image`. In order to set the node OS auto-upgrade channel values, make sure the [cluster auto-upgrade channel][Autoupgrade] isn't `node-image`.
-The nodeosupgradechannel isn't supported on Windows OS nodepools. Azure Linux support is now rolled out and is expected to be available in all regions soon.
+The `nodeosupgradechannel` isn't supported on Windows OS node pools. Azure Linux support is now rolled out and is expected to be available in all regions soon.
## Using node OS auto-upgrade Automatically completed upgrades are functionally the same as manual upgrades. The selected channel determines the timing of upgrades. When making changes to auto-upgrade, allow 24 hours for the changes to take effect. By default, a cluster's node OS auto-upgrade channel is set to `Unmanaged`. > [!NOTE]
-> Node OS image auto-upgrade won't affect the cluster's Kubernetes version, but it still still requires the cluster to be in a supported version to function properly.
+> Node OS image auto-upgrade won't affect the cluster's Kubernetes version, but it still requires the cluster to be in a supported version to function properly.
> When changing channels to `NodeImage` or `SecurityPatch`, the unattended upgrades will only be disabled when the image gets applied in the next cycle and not immediately. The following upgrade channels are available: |Channel|Description|OS-specific behavior| |||
-| `None`| Your nodes won't have security updates applied automatically. This means you're solely responsible for your security updates|N/A|
-| `Unmanaged`|OS updates are applied automatically through the OS built-in patching infrastructure. Newly allocated machines are unpatched initially and will be patched at some point by the OS's infrastructure|Ubuntu applies security patches through unattended upgrade roughly once a day around 06:00 UTC. Windows and Azure Linux don't apply security patches automatically, so this option behaves equivalently to `None`|
-| `SecurityPatch`|AKS regularly updates the node's virtual hard disk (VHD) with patches from the image maintainer labeled "security only". There maybe disruptions when the security patches are applied to the nodes. When the patches are applied, the VHD is updated and existing machines are upgraded to that VHD, honoring maintenance windows and surge settings. This option incurs the extra cost of hosting the VHDs in your node resource group. If you use this channel, Linux [unattended upgrades][unattended-upgrades] are disabled by default.|N/A|
+| `None`| Your nodes won't have security updates applied automatically. This means you're solely responsible for your security updates.|N/A|
+| `Unmanaged`|OS updates are applied automatically through the OS built-in patching infrastructure. Newly allocated machines are unpatched initially and will be patched at some point by the OS's infrastructure.|Ubuntu applies security patches through unattended upgrade roughly once a day around 06:00 UTC. Windows doesn't automatically apply security patches, so this option behaves equivalently to `None`. Azure Linux CPU node pools don't automatically apply security patches, so this option behaves equivalently to `None`.|
+| `SecurityPatch`|AKS regularly updates the node's virtual hard disk (VHD) with patches from the image maintainer labeled "security only". There maybe disruptions when the security patches are applied to the nodes. When the patches are applied, the VHD is updated and existing machines are upgraded to that VHD, honoring maintenance windows and surge settings. This option incurs the extra cost of hosting the VHDs in your node resource group. If you use this channel, Linux [unattended upgrades][unattended-upgrades] are disabled by default.|Azure Linux doesn't support this channel on GPU-enabled VMs.|
| `NodeImage`|AKS updates the nodes with a newly patched VHD containing security fixes and bug fixes on a weekly cadence. The update to the new VHD is disruptive, following maintenance windows and surge settings. No extra VHD cost is incurred when choosing this option. If you use this channel, Linux [unattended upgrades][unattended-upgrades] are disabled by default.| To set the node OS auto-upgrade channel when creating a cluster, use the *node-os-upgrade-channel* parameter, similar to the following example.
aks Azure Csi Blob Storage Provision https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/azure-csi-blob-storage-provision.md
Title: Create a persistent volume with Azure Blob storage in Azure Kubernetes Se
description: Learn how to create a static or dynamic persistent volume with Azure Blob storage for use with multiple concurrent pods in Azure Kubernetes Service (AKS) Previously updated : 05/02/2023 Last updated : 05/17/2023
For more information on Kubernetes volumes, see [Storage options for application
- [Enable the Blob storage CSI driver][enable-blob-csi-driver] on your AKS cluster. -- Regarding the support for Azure DataLake storage account when using blobfuse mount
- - To create an ADLS account using the driver in dynamic provisioning, you need to specify `isHnsEnabled: "true"` in the storage class parameters.
- - To enable blobfuse access to an ADLS account in static provisioning, you need to specify the mount option `--use-adls=true` in the persistent volume.
+- To support an [Azure DataLake Gen2 storage account][azure-datalake-storage-account] when using blobfuse mount, you'll need to do the following:
+
+ - To create an ADLS account using the driver in dynamic provisioning, specify `isHnsEnabled: "true"` in the storage class parameters.
+ - To enable blobfuse access to an ADLS account in static provisioning, specify the mount option `--use-adls=true` in the persistent volume.
## Dynamically provision a volume
The following YAML creates a pod that uses the persistent volume or persistent v
[enable-blob-csi-driver]: azure-blob-csi.md#before-you-begin [az-tags]: ../azure-resource-manager/management/tag-resources.md [sas-tokens]: ../storage/common/storage-sas-overview.md
+[azure-datalake-storage-account]: ../storage/blobs/upgrade-to-data-lake-storage-gen2-how-to.md
aks Azure Csi Files Storage Provision https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/azure-csi-files-storage-provision.md
description: Learn how to create a static or dynamic persistent volume with Azure Files for use with multiple concurrent pods in Azure Kubernetes Service (AKS) Previously updated : 05/04/2023 Last updated : 05/17/2023 # Create and use a volume with Azure Files in Azure Kubernetes Service (AKS)
This section provides guidance for cluster administrators who want to provision
|Name | Meaning | Available Value | Mandatory | Default value | | | | | |skuName | Azure Files storage account type (alias: `storageAccountType`)| `Standard_LRS`, `Standard_ZRS`, `Standard_GRS`, `Standard_RAGRS`, `Standard_RAGZRS`,`Premium_LRS`, `Premium_ZRS` | No | `StandardSSD_LRS`<br> Minimum file share size for Premium account type is 100 GB.<br> ZRS account type is supported in limited regions.<br> NFS file share only supports Premium account type.|
-|fsType | File System Type | `ext4`, `ext3`, `ext2`, `xfs`| Yes | `ext4` for Linux|
+|protocol | Specify file share protocol. | `smb`, `nfs` | No | `smb` |
|location | Specify Azure region where Azure storage account will be created. | For example, `eastus`. | No | If empty, driver uses the same location name as current AKS cluster.| |resourceGroup | Specify the resource group where the Azure Disks will be created | Existing resource group name | No | If empty, driver uses the same resource group name as current AKS cluster.| |shareName | Specify Azure file share name | Existing or new Azure file share name. | No | If empty, driver generates an Azure file share name. |
aks Azure Netapp Files Dual Protocol https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/azure-netapp-files-dual-protocol.md
+
+ Title: Provision Azure NetApp Files dual-protocol volumes for Azure Kubernetes Service
+description: Describes how to statically provision Azure NetApp Files dual-protocol volumes for Azure Kubernetes Service.
++ Last updated : 05/08/2023++
+# Provision Azure NetApp Files dual-protocol volumes for Azure Kubernetes Service
+
+After you [configure Azure NetApp Files for Azure Kubernetes Service](azure-netapp-files.md), you can provision Azure NetApp Files volumes for Azure Kubernetes Service.
+
+Azure NetApp Files supports volumes using [NFS](azure-netapp-files-nfs.md) (NFSv3 or NFSv4.1), [SMB](azure-netapp-files-smb.md), and dual-protocol (NFSv3 and SMB, or NFSv4.1 and SMB).
+* This article describes details for statically provisioning volumes for dual-protocol access.
+* For information about provisioning SMB volumes statically or dynamically, see [Provision Azure NetApp Files SMB volumes for Azure Kubernetes Service](azure-netapp-files-smb.md).
+* For information about provisioning NFS volumes statically or dynamically, see [Provision Azure NetApp Files NFS volumes for Azure Kubernetes Service](azure-netapp-files-nfs.md).
+
+## Before you begin
+
+* You must have already created a dual-protocol volume. See [create a dual-protocol volume for Azure NetApp Files](../azure-netapp-files/create-volumes-dual-protocol.md).
+
+## Provision a dual-protocol volume in Azure Kubernetes Service
+
+This section describes how to expose an Azure NetApp Files dual-protocol volume statically to Kubernetes. Instructions are provided for both SMB and NFS protocols. You can expose the same volume via SMB to Windows worker nodes and via NFS to Linux worker nodes.
+
+### [NFS](#tab/nfs)
+
+### Create the persistent volume for NFS
+
+1. Define variables for later usage. Replace *myresourcegroup*, *myaccountname*, *mypool1*, *myvolname* with an appropriate value from your dual-protocol volume.
+
+ ```azurecli-interactive
+ RESOURCE_GROUP="myresourcegroup"
+ ANF_ACCOUNT_NAME="myaccountname"
+ POOL_NAME="mypool1"
+ VOLUME_NAME="myvolname"
+ ```
+
+2. List the details of your volume using [`az netappfiles volume show`](/cli/azure/netappfiles/volume#az-netappfiles-volume-show) command.
+
+ ```azurecli-interactive
+ az netappfiles volume show \
+ --resource-group $RESOURCE_GROUP \
+ --account-name $ANF_ACCOUNT_NAME \
+ --pool-name $POOL_NAME \
+ --volume-name $VOLUME_NAME -o JSON
+ ```
+
+ The following output is an example of the above command executed with real values.
+
+ ```output
+ {
+ ...
+ "creationToken": "myfilepath2",
+ ...
+ "mountTargets": [
+ {
+ ...
+ "ipAddress": "10.0.0.4",
+ ...
+ }
+ ],
+ ...
+ }
+ ```
+
+3. Create a file named `pv-nfs.yaml` and copy in the following YAML. Make sure the server matches the output IP address from the previous step, and the path matches the output from `creationToken` above. The capacity must also match the volume size from Step 2.
+
+ ```yaml
+ apiVersion: v1
+ kind: PersistentVolume
+ metadata:
+ name: pv-nfs
+ spec:
+ capacity:
+ storage: 100Gi
+ accessModes:
+ - ReadWriteMany
+ mountOptions:
+ - vers=3
+ nfs:
+ server: 10.0.0.4
+ path: /myfilepath2
+ ```
+
+4. Create the persistent volume using the [`kubectl apply`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply) command:
+
+ ```bash
+ kubectl apply -f pv-nfs.yaml
+ ```
+
+5. Verify the status of the persistent volume is *Available* by using the [`kubectl describe`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#describe) command:
+
+ ```bash
+ kubectl describe pv pv-nfs
+ ```
+
+### Create a persistent volume claim for NFS
+
+1. Create a file named `pvc-nfs.yaml` and copy in the following YAML. This manifest creates a PVC named `pvc-nfs` for 100Gi storage and `ReadWriteMany` access mode, matching the PV you created.
+
+ ```yaml
+ apiVersion: v1
+ kind: PersistentVolumeClaim
+ metadata:
+ name: pvc-nfs
+ spec:
+ accessModes:
+ - ReadWriteMany
+ storageClassName: ""
+ resources:
+ requests:
+ storage: 100Gi
+ ```
+
+2. Create the persistent volume claim using the [`kubectl apply`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply) command:
+
+ ```bash
+ kubectl apply -f pvc-nfs.yaml
+ ```
+
+3. Verify the *Status* of the persistent volume claim is *Bound* by using the [`kubectl describe`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#describe) command:
+
+ ```bash
+ kubectl describe pvc pvc-nfs
+ ```
+
+### Mount within a pod using NFS
+
+1. Create a file named `nginx-nfs.yaml` and copy in the following YAML. This manifest defines a `nginx` pod that uses the persistent volume claim.
+
+ ```yaml
+ kind: Pod
+ apiVersion: v1
+ metadata:
+ name: nginx-nfs
+ spec:
+ containers:
+ - image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
+ name: nginx-nfs
+ command:
+ - "/bin/sh"
+ - "-c"
+ - while true; do echo $(date) >> /mnt/azure/outfile; sleep 1; done
+ volumeMounts:
+ - name: disk01
+ mountPath: /mnt/azure
+ volumes:
+ - name: disk01
+ persistentVolumeClaim:
+ claimName: pvc-nfs
+ ```
+
+2. Create the pod using the [`kubectl apply`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply) command:
+
+ ```bash
+ kubectl apply -f nginx-nfs.yaml
+ ```
+
+3. Verify the pod is *Running* by using the [`kubectl apply`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply) command:
+
+ ```bash
+ kubectl describe pod nginx-nfs
+ ```
+
+4. Verify your volume has been mounted on the pod by using [`kubectl exec`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#exec) to connect to the pod, and then use `df -h` to check if the volume is mounted.
+
+ ```bash
+ kubectl exec -it nginx-nfs -- sh
+ ```
+
+ ```output
+ / # df -h
+ Filesystem Size Used Avail Use% Mounted on
+ ...
+ 10.0.0.4:/myfilepath2 100T 384K 100T 1% /mnt/azure
+ ...
+ ```
+
+### [SMB](#tab/smb)
+
+### Create a secret with the domain credentials
+
+1. Create a secret on your AKS cluster to access the AD server using the [`kubectl create secret`](https://kubernetes.io/docs/tasks/configmap-secret/managing-secret-using-kubectl/) command. This secret will be used by the Kubernetes persistent volume to access the Azure NetApp Files SMB volume. Use the following command to create the secret, replacing `USERNAME` with your username, `PASSWORD` with your password, and `DOMAIN_NAME` with your domain name for your Active Directory.
+
+ ```bash
+ kubectl create secret generic smbcreds --from-literal=username=USERNAME --from-literal=password="PASSWORD" --from-literal=domain='DOMAIN_NAME'
+ ```
+
+2. Check the secret has been created.
+
+ ```bash
+ kubectl get secret
+ NAME TYPE DATA AGE
+ smbcreds Opaque 2 20h
+ ```
+
+### Install an SMB CSI driver
+
+You must install a Container Storage Interface (CSI) driver to create a Kubernetes SMB `PersistentVolume`.
+
+1. Install the SMB CSI driver on your cluster using helm. Be sure to set the `windows.enabled` option to `true`:
+
+ ```bash
+ helm repo add csi-driver-smb https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts
+ helm install csi-driver-smb csi-driver-smb/csi-driver-smb --namespace kube-system --version v1.10.0 ΓÇô-set windows.enabled=true
+ ```
+
+ For other methods of installing the SMB CSI Driver, see [Install SMB CSI driver master version on a Kubernetes cluster](https://github.com/kubernetes-csi/csi-driver-smb/blob/master/docs/install-csi-driver-master.md).
+
+2. Verify that the `csi-smb` controller pod is running and each worker node has a pod running using the [`kubectl get pods`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#get) command:
+
+ ```bash
+ kubectl get pods -n kube-system | grep csi-smb
+
+ csi-smb-controller-68df7b4758-xf2m9 3/3 Running 0 3m46s
+ csi-smb-node-s6clj 3/3 Running 0 3m47s
+ csi-smb-node-win-tfxvk 3/3 Running 0 3m47s
+ ```
+
+### Create the persistent volume for SMB
+
+1. Define variables for later usage. Replace *myresourcegroup*, *myaccountname*, *mypool1*, *myvolname* with an appropriate value from your dual-protocol volume.
+
+ ```azurecli-interactive
+ RESOURCE_GROUP="myresourcegroup"
+ ANF_ACCOUNT_NAME="myaccountname"
+ POOL_NAME="mypool1"
+ VOLUME_NAME="myvolname"
+ ```
+
+2. List the details of your volume using [`az netappfiles volume show`](/cli/azure/netappfiles/volume#az-netappfiles-volume-show).
+
+ ```azurecli-interactive
+ az netappfiles volume show \
+ --resource-group $RESOURCE_GROUP \
+ --account-name $ANF_ACCOUNT_NAME \
+ --pool-name $POOL_NAME \
+ --volume-name "$VOLUME_NAME -o JSON
+ ```
+
+ The following output is an example of the above command executed with real values.
+
+ ```output
+ {
+ ...
+ "creationToken": "myvolname",
+ ...
+ "mountTargets": [
+ {
+ ...
+ "
+ "smbServerFqdn": "ANF-1be3.contoso.com",
+ ...
+ }
+ ],
+ ...
+ }
+ ```
+
+3. Create a file named `pv-smb.yaml` and copy in the following YAML. If necessary, replace `myvolname` with the `creationToken` and replace `ANF-1be3.contoso.com\myvolname` with the value of `smbServerFqdn` from the previous step. Be sure to include your AD credentials secret along with the namespace where it's located that you created in a prior step.
+
+ ```yaml
+ apiVersion: v1
+ kind: PersistentVolume
+ metadata:
+ name: anf-pv-smb
+ spec:
+ storageClassName: ""
+ capacity:
+ storage: 100Gi
+ accessModes:
+ - ReadWriteMany
+ persistentVolumeReclaimPolicy: Retain
+ mountOptions:
+ - dir_mode=0777
+ - file_mode=0777
+ - vers=3.0
+ csi:
+ driver: smb.csi.k8s.io
+ readOnly: false
+ volumeHandle: myvolname # make sure it's a unique name in the cluster
+ volumeAttributes:
+ source: \\ANF-1be3.contoso.com\myvolname
+ nodeStageSecretRef:
+ name: smbcreds
+ namespace: default
+ ```
+
+4. Create the persistent volume using the [`kubectl apply`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply) command:
+
+ ```bash
+ kubectl apply -f pv-smb.yaml
+ ```
+
+5. Verify the status of the persistent volume is *Available* using the [`kubectl describe`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#describe) command:
+
+ ```bash
+ kubectl describe pv anf-pv-smb
+ ```
+
+### Create a persistent volume claim for SMB
+
+1. Create a file name `pvc-smb.yaml` and copy in the following YAML.
+
+ ```yaml
+ apiVersion: v1
+ kind: PersistentVolumeClaim
+ metadata:
+ name: anf-pvc-smb
+ spec:
+ accessModes:
+ - ReadWriteMany
+ volumeName: anf-pv-smb
+ storageClassName: ""
+ resources:
+ requests:
+ storage: 100Gi
+ ```
+
+2. Create the persistent volume claim using the [`kubectl apply`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply) command:
+
+ ```bash
+ kubectl apply -f pvc-smb.yaml
+ ```
+
+ Verify the status of the persistent volume claim is *Bound* by using the [`kubectl describe`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#describe) command:
+
+ ```bash
+ kubectl describe pvc anf-pvc-smb
+ ```
+
+### Mount within a pod using SMB
+
+1. Create a file named `iis-smb.yaml` and copy in the following YAML. This file will be used to create an Internet Information Services pod to mount the volume to path `/inetpub/wwwroot`.
+
+ ```yaml
+ apiVersion: v1
+ kind: Pod
+ metadata:
+ name: iis-pod
+ labels:
+ app: web
+ spec:
+ nodeSelector:
+ "kubernetes.io/os": windows
+ volumes:
+ - name: smb
+ persistentVolumeClaim:
+ claimName: anf-pvc-smb
+ containers:
+ - name: web
+ image: mcr.microsoft.com/windows/servercore/iis:windowsservercore
+ resources:
+ limits:
+ cpu: 1
+ memory: 800M
+ ports:
+ - containerPort: 80
+ volumeMounts:
+ - name: smb
+ mountPath: "/inetpub/wwwroot"
+ readOnly: false
+ ```
+
+2. Create the pod using the [kubectl apply](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply) command:
+
+ ```bash
+ kubectl apply -f iis-smb.yaml
+ ```
+
+3. Verify the pod is *Running* and `/inetpub/wwwroot` is mounted from SMB by using the [`kubectl describe`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#describe) command:
+
+ ```bash
+ kubectl describe pod iis-pod
+ ```
+
+ The output of the command resembles the following example:
+
+ ```output
+ Name: iis-pod
+ Namespace: default
+ Priority: 0
+ Node: akswin000001/10.225.5.246
+ Start Time: Fri, 05 May 2023 09:34:41 -0400
+ Labels: app=web
+ Annotations: <none>
+ Status: Running
+ IP: 10.225.5.248
+ IPs:
+ IP: 10.225.5.248
+ Containers:
+ web:
+ Container ID: containerd://39a1659b6a2b6db298df630237b2b7d959d1b1722edc81ce9b1bc7f06237850c
+ Image: mcr.microsoft.com/windows/servercore/iis:windowsservercore
+ Image ID: mcr.microsoft.com/windows/servercore/iis@sha256:0f0114d0f6c6ee569e1494953efdecb76465998df5eba951dc760ac5812c7409
+ Port: 80/TCP
+ Host Port: 0/TCP
+ State: Running
+ Started: Fri, 05 May 2023 09:34:55 -0400
+ Ready: True
+ Restart Count: 0
+ Limits:
+ cpu: 1
+ memory: 800M
+ Requests:
+ cpu: 1
+ memory: 800M
+ Environment: <none>
+ Mounts:
+ /inetpub/wwwroot from smb (rw)
+ /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-mbnv8 (ro)
+ ...
+ ```
+
+4. Verify your volume has been mounted on the pod by using the [kubectl exec](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#exec) command to connect to the pod, and then use `dir` command in the correct directory to check if the volume is mounted and the size matches the size of the volume you provisioned.
+
+ ```bash
+ kubectl exec -it iis-pod ΓÇô- cmd.exe
+ ```
+ The output of the command resembles the following example:
+
+ ```output
+ Microsoft Windows [Version 10.0.20348.1668]
+ (c) Microsoft Corporation. All rights reserved.
+
+ C:\>cd /inetpub/wwwroot
+
+ C:\inetpub\wwwroot>dir
+ Volume in drive C has no label.
+ Volume Serial Number is 86BB-AA55
+
+ Directory of C:\inetpub\wwwroot
+
+ 05/04/2023 08:15 PM <DIR> .
+ 05/04/2023 08:15 PM <DIR> ..
+ 0 File(s) 0 bytes
+ 2 Dir(s) 107,373,838,336 bytes free
+ ```
+++
+## Next steps
+
+Astra Trident supports many features with Azure NetApp Files. For more information, see:
+
+* [Expanding volumes][expand-trident-volumes]
+* [On-demand volume snapshots][on-demand-trident-volume-snapshots]
+* [Importing volumes][importing-trident-volumes]
+
+<!-- EXTERNAL LINKS -->
+[astra-trident]: https://docs.netapp.com/us-en/trident/https://docsupdatetracker.net/index.html
+[kubectl-create]: https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#create
+[kubectl-apply]: https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply
+[kubectl-describe]: https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#describe
+[kubectl-exec]: https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#exec
+[astra-control-service]: https://cloud.netapp.com/astra-control
+[kubernetes-csi-driver]: https://kubernetes-csi.github.io/docs/
+[trident-install-guide]: https://docs.netapp.com/us-en/trident/trident-get-started/kubernetes-deploy.html
+[trident-helm-chart]: https://docs.netapp.com/us-en/trident/trident-get-started/kubernetes-deploy-operator.html
+[tridentctl]: https://docs.netapp.com/us-en/trident/trident-get-started/kubernetes-deploy-tridentctl.html
+[trident-backend-install-guide]: https://docs.netapp.com/us-en/trident/trident-use/backends.html
+[kubectl-get]: https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#get
+[expand-trident-volumes]: https://docs.netapp.com/us-en/trident/trident-use/vol-expansion.html
+[on-demand-trident-volume-snapshots]: https://docs.netapp.com/us-en/trident/trident-use/vol-snapshots.html
+[importing-trident-volumes]: https://docs.netapp.com/us-en/trident/trident-use/vol-import.html
+[backend-anf.yaml]: https://raw.githubusercontent.com/NetApp/trident/v23.01.1/trident-installer/sample-input/backends-samples/azure-netapp-files/backend-anf.yaml
+
+<!-- INTERNAL LINKS -->
+[aks-quickstart-cli]: ./learn/quick-kubernetes-deploy-cli.md
+[aks-quickstart-portal]: ./learn/quick-kubernetes-deploy-portal.md
+[aks-quickstart-powershell]: ./learn/quick-kubernetes-deploy-powershell.md
+[anf]: ../azure-netapp-files/azure-netapp-files-introduction.md
+[anf-delegate-subnet]: ../azure-netapp-files/azure-netapp-files-delegate-subnet.md
+[anf-regions]: https://azure.microsoft.com/global-infrastructure/services/?products=netapp&regions=all
+[az-aks-show]: /cli/azure/aks#az_aks_show
+[az-netappfiles-account-create]: /cli/azure/netappfiles/account#az_netappfiles_account_create
+[az-netapp-files-dynamic]: azure-netapp-files-dynamic.md
+[az-netappfiles-pool-create]: /cli/azure/netappfiles/pool#az_netappfiles_pool_create
+[az-netappfiles-volume-create]: /cli/azure/netappfiles/volume#az_netappfiles_volume_create
+[az-netappfiles-volume-show]: /cli/azure/netappfiles/volume#az_netappfiles_volume_show
+[az-network-vnet-subnet-create]: /cli/azure/network/vnet/subnet#az_network_vnet_subnet_create
+[install-azure-cli]: /cli/azure/install-azure-cli
+[use-tags]: use-tags.md
+[azure-ad-app-registration]: ../active-directory/develop/howto-create-service-principal-portal.md
aks Azure Netapp Files Nfs https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/azure-netapp-files-nfs.md
+
+ Title: Provision Azure NetApp Files NFS volumes for Azure Kubernetes Service
+description: Describes how to statically and dynamically provision Azure NetApp Files NFS volumes for Azure Kubernetes Service.
++ Last updated : 05/08/2023++
+# Provision Azure NetApp Files NFS volumes for Azure Kubernetes Service
+
+After you [configure Azure NetApp Files for Azure Kubernetes Service](azure-netapp-files.md), you can provision Azure NetApp Files volumes for Azure Kubernetes Service.
+
+Azure NetApp Files supports volumes using NFS (NFSv3 or NFSv4.1), [SMB](azure-netapp-files-smb.md), or [dual-protocol](azure-netapp-files-dual-protocol.md) (NFSv3 and SMB, or NFSv4.1 and SMB).
+* This article describes details for provisioning NFS volumes statically or dynamically.
+* For information about provisioning SMB volumes statically or dynamically, see [Provision Azure NetApp Files SMB volumes for Azure Kubernetes Service](azure-netapp-files-smb.md).
+* For information about provisioning dual-protocol volumes statically, see [Provision Azure NetApp Files dual-protocol volumes for Azure Kubernetes Service](azure-netapp-files-dual-protocol.md)
+
+## Statically configure for applications that use NFS volumes
+
+This section describes how to create an NFS volume on Azure NetApp Files and expose the volume statically to Kubernetes. It also describes how to use the volume with a containerized application.
+
+### Create an NFS volume
+
+1. Define variables for later usage. Replace *myresourcegroup*, *mylocation*, *myaccountname*, *mypool1*, *premium*, *myfilepath*, *myvolsize*, *myvolname*, *vnetid*, and *anfSubnetID* with an appropriate value from your account and environment. The *filepath* must be unique within all ANF accounts.
+
+ ```azurecli-interactive
+ RESOURCE_GROUP="myresourcegroup"
+ LOCATION="mylocation"
+ ANF_ACCOUNT_NAME="myaccountname"
+ POOL_NAME="mypool1"
+ SERVICE_LEVEL="premium" # Valid values are Standard, Premium, and Ultra
+ UNIQUE_FILE_PATH="myfilepath"
+ VOLUME_SIZE_GIB="myvolsize"
+ VOLUME_NAME="myvolname"
+ VNET_ID="vnetId"
+ SUBNET_ID="anfSubnetId"
+ ```
+
+1. Create a volume using the [`az netappfiles volume create`](/cli/azure/netappfiles/volume#az-netappfiles-volume-create) command. For more information, see [Create an NFS volume for Azure NetApp Files](../azure-netapp-files/azure-netapp-files-create-volumes.md).
+
+ ```azurecli-interactive
+ az netappfiles volume create \
+ --resource-group $RESOURCE_GROUP \
+ --location $LOCATION \
+ --account-name $ANF_ACCOUNT_NAME \
+ --pool-name $POOL_NAME \
+ --name "$VOLUME_NAME" \
+ --service-level $SERVICE_LEVEL \
+ --vnet $VNET_ID \
+ --subnet $SUBNET_ID \
+ --usage-threshold $VOLUME_SIZE_GIB \
+ --file-path $UNIQUE_FILE_PATH \
+ --protocol-types NFSv3
+ ```
+
+### Create the persistent volume
+
+1. List the details of your volume using [`az netappfiles volume show`](/cli/azure/netappfiles/volume#az-netappfiles-volume-show) command. Replace the variables with appropriate values from your Azure NetApp Files account and environment if not defined in a previous step.
+
+ ```azurecli-interactive
+ az netappfiles volume show \
+ --resource-group $RESOURCE_GROUP \
+ --account-name $ANF_ACCOUNT_NAME \
+ --pool-name $POOL_NAME \
+ --volume-name "$VOLUME_NAME -o JSON
+ ```
+
+ The following output is an example of the above command executed with real values.
+
+ ```output
+ {
+ ...
+ "creationToken": "myfilepath2",
+ ...
+ "mountTargets": [
+ {
+ ...
+ "ipAddress": "10.0.0.4",
+ ...
+ }
+ ],
+ ...
+ }
+ ```
+
+2. Create a file named `pv-nfs.yaml` and copy in the following YAML. Make sure the server matches the output IP address from Step 1, and the path matches the output from `creationToken` above. The capacity must also match the volume size from the step above.
+
+ ```yaml
+ apiVersion: v1
+ kind: PersistentVolume
+ metadata:
+ name: pv-nfs
+ spec:
+ capacity:
+ storage: 100Gi
+ accessModes:
+ - ReadWriteMany
+ mountOptions:
+ - vers=3
+ nfs:
+ server: 10.0.0.4
+ path: /myfilepath2
+ ```
+
+3. Create the persistent volume using the [`kubectl apply`][kubectl-apply] command:
+
+ ```bash
+ kubectl apply -f pv-nfs.yaml
+ ```
+
+4. Verify the status of the persistent volume is *Available* by using the [`kubectl describe`][kubectl-describe] command:
+
+ ```bash
+ kubectl describe pv pv-nfs
+ ```
+
+### Create a persistent volume claim
+
+1. Create a file named `pvc-nfs.yaml` and copy in the following YAML. This manifest creates a PVC named `pvc-nfs` for 100Gi storage and `ReadWriteMany` access mode, matching the PV you created.
+
+ ```yaml
+ apiVersion: v1
+ kind: PersistentVolumeClaim
+ metadata:
+ name: pvc-nfs
+ spec:
+ accessModes:
+ - ReadWriteMany
+ storageClassName: ""
+ resources:
+ requests:
+ storage: 100Gi
+ ```
+
+2. Create the persistent volume claim using the [`kubectl apply`][kubectl-apply] command:
+
+ ```bash
+ kubectl apply -f pvc-nfs.yaml
+ ```
+
+3. Verify the *Status* of the persistent volume claim is *Bound* by using the [`kubectl describe`][kubectl-describe] command:
+
+ ```bash
+ kubectl describe pvc pvc-nfs
+ ```
+
+### Mount with a pod
+
+1. Create a file named `nginx-nfs.yaml` and copy in the following YAML. This manifest defines a `nginx` pod that uses the persistent volume claim.
+
+ ```yaml
+ kind: Pod
+ apiVersion: v1
+ metadata:
+ name: nginx-nfs
+ spec:
+ containers:
+ - image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
+ name: nginx-nfs
+ command:
+ - "/bin/sh"
+ - "-c"
+ - while true; do echo $(date) >> /mnt/azure/outfile; sleep 1; done
+ volumeMounts:
+ - name: disk01
+ mountPath: /mnt/azure
+ volumes:
+ - name: disk01
+ persistentVolumeClaim:
+ claimName: pvc-nfs
+ ```
+
+2. Create the pod using the [`kubectl apply`][kubectl-apply] command:
+
+ ```bash
+ kubectl apply -f nginx-nfs.yaml
+ ```
+
+3. Verify the pod is *Running* by using the [`kubectl describe`][kubectl-describe] command:
+
+ ```bash
+ kubectl describe pod nginx-nfs
+ ```
+
+4. Verify your volume has been mounted on the pod by using [`kubectl exec`][kubectl-exec] to connect to the pod, and then use `df -h` to check if the volume is mounted.
+
+ ```bash
+ kubectl exec -it nginx-nfs -- sh
+ ```
+
+ ```output
+ / # df -h
+ Filesystem Size Used Avail Use% Mounted on
+ ...
+ 10.0.0.4:/myfilepath2 100T 384K 100T 1% /mnt/azure
+ ...
+ ```
+
+## Dynamically configure for applications that use NFS volumes
+
+Astra Trident may be used to dynamically provision NFS or SMB files on Azure NetApp Files. Dynamically provisioned SMB volumes are only supported with windows worker nodes.
+
+This section describes how to use Astra Trident to dynamically create an NFS volume on Azure NetApp Files and automatically mount it to a containerized application.
+
+### Install Astra Trident
+
+To dynamically provision NFS volumes, you need to install Astra Trident. Astra Trident is NetApp's dynamic storage provisioner that is purpose-built for Kubernetes. Simplify the consumption of storage for Kubernetes applications using Astra Trident's industry-standard [Container Storage Interface (CSI)](https://kubernetes-csi.github.io/docs/) driver. Astra Trident deploys on Kubernetes clusters as pods and provides dynamic storage orchestration services for your Kubernetes workloads.
+
+Trident can be installed using the Trident operator (manually or using [Helm](https://docs.netapp.com/us-en/trident/trident-get-started/kubernetes-deploy-operator.html)) or [`tridentctl`](https://docs.netapp.com/us-en/trident/trident-get-started/kubernetes-deploy-tridentctl.html). To learn more about these installation methods and how they work, see the [Astra Trident Install Guide](https://docs.netapp.com/us-en/trident/trident-get-started/kubernetes-deploy.html).
+
+#### Install Astra Trident using Helm
+
+[Helm](https://helm.sh/) must be installed on your workstation to install Astra Trident using this method. For other methods of installing Astra Trident, see the [Astra Trident Install Guide](https://docs.netapp.com/us-en/trident/trident-get-started/kubernetes-deploy.html).
+
+1. To install Astra Trident using Helm for a cluster with only Linux worker nodes, run the following commands:
+
+ ```bash
+ helm repo add netapp-trident https://netapp.github.io/trident-helm-chart
+ helm install trident netapp-trident/trident-operator --version 23.04.0 --create-namespace --namespace trident
+ ```
+
+ The output of the command resembles the following example:
+
+ ```output
+ NAME: trident
+ LAST DEPLOYED: Fri May 5 13:55:36 2023
+ NAMESPACE: trident
+ STATUS: deployed
+ REVISION: 1
+ TEST SUITE: None
+ NOTES:
+ Thank you for installing trident-operator, which will deploy and manage NetApp's Trident CSI storage provisioner for Kubernetes.
+
+ Your release is named 'trident' and is installed into the 'trident' namespace.
+ Please note that there must be only one instance of Trident (and trident-operator) in a Kubernetes cluster.
+
+ To configure Trident to manage storage resources, you will need a copy of tridentctl, which is available in pre-packaged Trident releases. You may find all Trident releases and source code online at https://github.com/NetApp/trident.
+
+ To learn more about the release, try:
+
+ $ helm status trident
+ $ helm get all trident
+ ```
+
+2. To confirm Astra Trident was installed successfully, run the following [`kubectl describe`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#describe) command:
+
+ ```bash
+ kubectl describe torc trident
+ ```
+
+ The output of the command resembles the following example:
+
+ ```output
+ Name: trident
+ Namespace:
+ Labels: app.kubernetes.io/managed-by=Helm
+ Annotations: meta.helm.sh/release-name: trident
+ meta.helm.sh/release-namespace: trident
+ API Version: trident.netapp.io/v1
+ Kind: TridentOrchestrator
+ Metadata:
+ ...
+ Spec:
+ IPv6: false
+ Autosupport Image: docker.io/netapp/trident-autosupport:23.04
+ Autosupport Proxy: <nil>
+ Disable Audit Log: true
+ Enable Force Detach: false
+ Http Request Timeout: 90s
+ Image Pull Policy: IfNotPresent
+ k8sTimeout: 0
+ Kubelet Dir: <nil>
+ Log Format: text
+ Log Layers: <nil>
+ Log Workflows: <nil>
+ Namespace: trident
+ Probe Port: 17546
+ Silence Autosupport: false
+ Trident Image: docker.io/netapp/trident:23.04.0
+ Windows: false
+ Status:
+ Current Installation Params:
+ IPv6: false
+ Autosupport Hostname:
+ Autosupport Image: docker.io/netapp/trident-autosupport:23.04
+ Autosupport Proxy:
+ Autosupport Serial Number:
+ Debug: false
+ Disable Audit Log: true
+ Enable Force Detach: false
+ Http Request Timeout: 90s
+ Image Pull Policy: IfNotPresent
+ Image Pull Secrets:
+ Image Registry:
+ k8sTimeout: 30
+ Kubelet Dir: /var/lib/kubelet
+ Log Format: text
+ Log Layers:
+ Log Level: info
+ Log Workflows:
+ Probe Port: 17546
+ Silence Autosupport: false
+ Trident Image: docker.io/netapp/trident:23.04.0
+ Message: Trident installed
+ Namespace: trident
+ Status: Installed
+ Version: v23.04.0
+ Events:
+ Type Reason Age From Message
+ - - - -
+ Normal Installing 2m59s trident-operator.netapp.io Installing Trident
+ Normal Installed 2m31s trident-operator.netapp.io Trident installed
+ ```
+
+### Create a backend
+
+To instruct Astra Trident about the Azure NetApp Files subscription and where it needs to create volumes, a backend is created. This step requires details about the account that was created in a previous step.
+
+1. Create a file named `backend-secret.yaml` and copy in the following YAML. Change the `Client ID` and `clientSecret` to the correct values for your environment.
+
+ ```yaml
+ apiVersion: v1
+ kind: Secret
+ metadata:
+ name: backend-tbc-anf-secret
+ type: Opaque
+ stringData:
+ clientID: abcde356-bf8e-fake-c111-abcde35613aa
+ clientSecret: rR0rUmWXfNioN1KhtHisiSAnoTherboGuskey6pU
+ ```
+
+2. Create a file named `backend-anf.yaml` and copy in the following YAML. Change the `subscriptionID`, `tenantID`, `location`, and `serviceLevel` to the correct values for your environment. Use the `subscriptionID` for the Azure subscription where Azure NetApp Files is enabled. Obtain the `tenantID`, `clientID`, and `clientSecret` from an [application registration](../active-directory/develop/howto-create-service-principal-portal.md) in Azure Active Directory (AD) with sufficient permissions for the Azure NetApp Files service. The application registration includes the Owner or Contributor role predefined by Azure. The location must be an Azure location that contains at least one delegated subnet created in a previous step. The `serviceLevel` must match the `serviceLevel` configured for the capacity pool in [Configure Azure NetApp Files for AKS workloads](azure-netapp-files.md#configure-azure-netapp-files-for-aks-workloads).
+
+ ```yaml
+ apiVersion: trident.netapp.io/v1
+ kind: TridentBackendConfig
+ metadata:
+ name: backend-tbc-anf
+ spec:
+ version: 1
+ storageDriverName: azure-netapp-files
+ subscriptionID: 12abc678-4774-fake-a1b2-a7abcde39312
+ tenantID: a7abcde3-edc1-fake-b111-a7abcde356cf
+ location: eastus
+ serviceLevel: Premium
+ credentials:
+ name: backend-tbc-anf-secret
+ ```
+
+ For more information about backends, see [Azure NetApp Files backend configuration options and examples](https://docs.netapp.com/us-en/trident/trident-use/anf-examples.html).
+
+3. Apply the secret and backend using the [`kubectl apply`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply) command. First apply the secret:
+
+ ```bash
+ kubectl apply -f backend-secret.yaml -n trident
+ ```
+
+ The output of the command resembles the following example:
+
+ ```output
+ secret/backend-tbc-anf-secret created
+ ```
+ Apply the backend:
+
+ ```bash
+ kubectl apply -f backend-anf.yaml -n trident
+ ```
+
+ The output of the command resembles the following example:
+
+ ```output
+ tridentbackendconfig.trident.netapp.io/backend-tbc-anf created
+ ```
+
+4. Confirm the backend was created by using the [`kubectl get`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#get) command:
+
+ ```bash
+ kubectl get tridentbackends -n trident
+ ```
+
+ The output of the command resembles the following example:
+
+ ```output
+ NAME BACKEND BACKEND UUID
+ tbe-kfrdh backend-tbc-anf 8da4e926-9dd4-4a40-8d6a-375aab28c566
+ ```
+
+### Create a storage class
+
+A storage class is used to define how a unit of storage is dynamically created with a persistent volume. To consume Azure NetApp Files volumes, a storage class must be created.
+
+1. Create a file named `anf-storageclass.yaml` and copy in the following YAML:
+
+ ```yaml
+ apiVersion: storage.k8s.io/v1
+ kind: StorageClass
+ metadata:
+ name: azure-netapp-files
+ provisioner: csi.trident.netapp.io
+ parameters:
+ backendType: "azure-netapp-files"
+ fsType: "nfs"
+ ```
+
+2. Create the storage class using the [`kubectl apply`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply) command:
+
+ ```bash
+ kubectl apply -f anf-storageclass.yaml
+ ```
+
+ The output of the command resembles the following example:
+
+ ```output
+ storageclass/azure-netapp-files created
+ ```
+
+3. Run the [`kubectl get`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#get) command to view the status of the storage class:
+
+ ```bash
+ kubectl get sc
+ NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
+ azure-netapp-files csi.trident.netapp.io Delete Immediate false
+ ```
+
+### Create a PVC
+
+A persistent volume claim (PVC) is a request for storage by a user. Upon the creation of a persistent volume claim, Astra Trident automatically creates an Azure NetApp Files volume and makes it available for Kubernetes workloads to consume.
+
+1. Create a file named `anf-pvc.yaml` and copy in the following YAML. In this example, a 1-TiB volume is needed with ReadWriteMany access.
+
+ ```yaml
+ kind: PersistentVolumeClaim
+ apiVersion: v1
+ metadata:
+ name: anf-pvc
+ spec:
+ accessModes:
+ - ReadWriteMany
+ resources:
+ requests:
+ storage: 1Ti
+ storageClassName: azure-netapp-files
+ ```
+
+2. Create the persistent volume claim with the [`kubectl apply`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply) command:
+
+ ```bash
+ kubectl apply -f anf-pvc.yaml
+ ```
+
+ The output of the command resembles the following example:
+
+ ```output
+ persistentvolumeclaim/anf-pvc created
+ ```
+
+3. To view information about the persistent volume claim, run the [`kubectl get`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#get) command:
+
+ ```bash
+ kubectl get pvc
+ ```
+ The output of the command resembles the following example:
+
+ ```output
+ kubectl get pvc -n trident
+ NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
+ anf-pvc Bound pvc-bffa315d-3f44-4770-86eb-c922f567a075 1Ti RWO azure-netapp-files 62s
+ ```
+
+### Use the persistent volume
+
+After the PVC is created, Astra Trident creates the persistent volume. A pod can be spun up to mount and access the Azure NetApp Files volume.
+
+The following manifest can be used to define an NGINX pod that mounts the Azure NetApp Files volume created in the previous step. In this example, the volume is mounted at `/mnt/data`.
+
+1. Create a file named `anf-nginx-pod.yaml` and copy in the following YAML:
+
+ ```yaml
+ kind: Pod
+ apiVersion: v1
+ metadata:
+ name: nginx-pod
+ spec:
+ containers:
+ - name: nginx
+ image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
+ resources:
+ requests:
+ cpu: 100m
+ memory: 128Mi
+ limits:
+ cpu: 250m
+ memory: 256Mi
+ volumeMounts:
+ - mountPath: "/mnt/data"
+ name: volume
+ volumes:
+ - name: volume
+ persistentVolumeClaim:
+ claimName: anf-pvc
+ ```
+
+2. Create the pod using the [`kubectl apply`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply) command:
+
+ ```bash
+ kubectl apply -f anf-nginx-pod.yaml
+ ```
+
+ The output of the command resembles the following example:
+
+ ```output
+ pod/nginx-pod created
+ ```
+
+ Kubernetes has created a pod with the volume mounted and accessible within the `nginx` container at `/mnt/data`. You can confirm by checking the event logs for the pod using [`kubectl describe`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#describe) command:
+
+ ```bash
+ kubectl describe pod nginx-pod
+ ```
+
+ The output of the command resembles the following example:
+
+ ```output
+ [...]
+ Volumes:
+ volume:
+ Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
+ ClaimName: anf-pvc
+ ReadOnly: false
+ default-token-k7952:
+ Type: Secret (a volume populated by a Secret)
+ SecretName: default-token-k7952
+ Optional: false
+ [...]
+ Events:
+ Type Reason Age From Message
+ - - - -
+ Normal Scheduled 15s default-scheduler Successfully assigned trident/nginx-pod to brameshb-non-root-test
+ Normal SuccessfulAttachVolume 15s attachdetach-controller AttachVolume.Attach succeeded for volume "pvc-bffa315d-3f44-4770-86eb-c922f567a075"
+ Normal Pulled 12s kubelet Container image "mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine" already present on machine
+ Normal Created 11s kubelet Created container nginx
+ Normal Started 10s kubelet Started container nginx
+ ```
+
+## Next steps
+
+Astra Trident supports many features with Azure NetApp Files. For more information, see:
+
+* [Expanding volumes][expand-trident-volumes]
+* [On-demand volume snapshots][on-demand-trident-volume-snapshots]
+* [Importing volumes][importing-trident-volumes]
+
+<!-- EXTERNAL LINKS -->
+[astra-trident]: https://docs.netapp.com/us-en/trident/https://docsupdatetracker.net/index.html
+[kubectl-create]: https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#create
+[kubectl-apply]: https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply
+[kubectl-describe]: https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#describe
+[kubectl-exec]: https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#exec
+[astra-control-service]: https://cloud.netapp.com/astra-control
+[kubernetes-csi-driver]: https://kubernetes-csi.github.io/docs/
+[trident-install-guide]: https://docs.netapp.com/us-en/trident/trident-get-started/kubernetes-deploy.html
+[trident-helm-chart]: https://docs.netapp.com/us-en/trident/trident-get-started/kubernetes-deploy-operator.html
+[tridentctl]: https://docs.netapp.com/us-en/trident/trident-get-started/kubernetes-deploy-tridentctl.html
+[trident-backend-install-guide]: https://docs.netapp.com/us-en/trident/trident-use/backends.html
+[kubectl-get]: https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#get
+[expand-trident-volumes]: https://docs.netapp.com/us-en/trident/trident-use/vol-expansion.html
+[on-demand-trident-volume-snapshots]: https://docs.netapp.com/us-en/trident/trident-use/vol-snapshots.html
+[importing-trident-volumes]: https://docs.netapp.com/us-en/trident/trident-use/vol-import.html
+[backend-anf.yaml]: https://raw.githubusercontent.com/NetApp/trident/v23.01.1/trident-installer/sample-input/backends-samples/azure-netapp-files/backend-anf.yaml
+
+<!-- INTERNAL LINKS -->
+[aks-quickstart-cli]: ./learn/quick-kubernetes-deploy-cli.md
+[aks-quickstart-portal]: ./learn/quick-kubernetes-deploy-portal.md
+[aks-quickstart-powershell]: ./learn/quick-kubernetes-deploy-powershell.md
+[anf]: ../azure-netapp-files/azure-netapp-files-introduction.md
+[anf-delegate-subnet]: ../azure-netapp-files/azure-netapp-files-delegate-subnet.md
+[anf-regions]: https://azure.microsoft.com/global-infrastructure/services/?products=netapp&regions=all
+[az-aks-show]: /cli/azure/aks#az_aks_show
+[az-netappfiles-account-create]: /cli/azure/netappfiles/account#az_netappfiles_account_create
+[az-netapp-files-dynamic]: azure-netapp-files-dynamic.md
+[az-netappfiles-pool-create]: /cli/azure/netappfiles/pool#az_netappfiles_pool_create
+[az-netappfiles-volume-create]: /cli/azure/netappfiles/volume#az_netappfiles_volume_create
+[az-netappfiles-volume-show]: /cli/azure/netappfiles/volume#az_netappfiles_volume_show
+[az-network-vnet-subnet-create]: /cli/azure/network/vnet/subnet#az_network_vnet_subnet_create
+[install-azure-cli]: /cli/azure/install-azure-cli
+[use-tags]: use-tags.md
+[azure-ad-app-registration]: ../active-directory/develop/howto-create-service-principal-portal.md
aks Azure Netapp Files Smb https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/azure-netapp-files-smb.md
+
+ Title: Provision Azure NetApp Files SMB volumes for Azure Kubernetes Service
+description: Describes how to statically and dynamically provision Azure NetApp Files SMB volumes for Azure Kubernetes Service.
++ Last updated : 05/08/2023++
+# Provision Azure NetApp Files SMB volumes for Azure Kubernetes Service
+
+After you [configure Azure NetApp Files for Azure Kubernetes Service](azure-netapp-files.md), you can provision Azure NetApp Files volumes for Azure Kubernetes Service.
+
+Azure NetApp Files supports volumes using [NFS](azure-netapp-files-nfs.md) (NFSv3 or NFSv4.1), SMB, and [dual-protocol](azure-netapp-files-dual-protocol.md) (NFSv3 and SMB, or NFSv4.1 and SMB).
+* This article describes details for provisioning SMB volumes statically or dynamically.
+* For information about provisioning NFS volumes statically or dynamically, see [Provision Azure NetApp Files NFS volumes for Azure Kubernetes Service](azure-netapp-files-nfs.md).
+* For information about provisioning dual-protocol volumes statically, see [Provision Azure NetApp Files dual-protocol volumes for Azure Kubernetes Service](azure-netapp-files-dual-protocol.md)
+
+## Statically configure for applications that use SMB volumes
+
+This section describes how to create an SMB volume on Azure NetApp Files and expose the volume statically to Kubernetes for a containerized application to consume.
+
+### Create an SMB Volume
+
+1. Define variables for later usage. Replace *myresourcegroup*, *mylocation*, *myaccountname*, *mypool1*, *premium*, *myfilepath*, *myvolsize*, *myvolname*, and *virtnetid* with an appropriate value for your environment. The filepath must be unique within all ANF accounts.
+
+ ```azurecli-interactive
+ RESOURCE_GROUP="myresourcegroup"
+ LOCATION="mylocation"
+ ANF_ACCOUNT_NAME="myaccountname"
+ POOL_NAME="mypool1"
+ SERVICE_LEVEL="premium" # Valid values are standard, premium, and ultra
+ UNIQUE_FILE_PATH="myfilepath"
+ VOLUME_SIZE_GIB="myvolsize"
+ VOLUME_NAME="myvolname"
+ VNET_ID="vnetId"
+ SUBNET_ID="anfSubnetId"
+ ```
+
+1. Create a volume using the [`az netappfiles volume create`](/cli/azure/netappfiles/volume#az-netappfiles-volume-create) command.
+
+ ```azurecli-interactive
+ az netappfiles volume create \
+ --resource-group $RESOURCE_GROUP \
+ --location $LOCATION \
+ --account-name $ANF_ACCOUNT_NAME \
+ --pool-name $POOL_NAME \
+ --name "$VOLUME_NAME" \
+ --service-level $SERVICE_LEVEL \
+ --vnet $VNET_ID \
+ --subnet $SUBNET_ID \
+ --usage-threshold $VOLUME_SIZE_GIB \
+ --file-path $UNIQUE_FILE_PATH \
+ --protocol-types CIFS
+ ```
+
+### Create a secret with the domain credentials
+
+1. Create a secret on your AKS cluster to access the Active Directory (AD) server using the [`kubectl create secret`](https://kubernetes.io/docs/tasks/configmap-secret/managing-secret-using-kubectl/) command. This secret will be used by the Kubernetes persistent volume to access the Azure NetApp Files SMB volume. Use the following command to create the secret, replacing `USERNAME` with your username, `PASSWORD` with your password, and `DOMAIN_NAME` with your domain name for your AD.
+
+ ```bash
+ kubectl create secret generic smbcreds --from-literal=username=USERNAME --from-literal=password="PASSWORD" --from-literal=domain='DOMAIN_NAME'
+ ```
+
+2. Check the secret has been created.
+
+ ```bash
+ kubectl get secret
+ NAME TYPE DATA AGE
+ smbcreds Opaque 2 20h
+ ```
+
+### Install an SMB CSI driver
+
+You must install a Container Storage Interface (CSI) driver to create a Kubernetes SMB `PersistentVolume`.
+
+1. Install the SMB CSI driver on your cluster using helm. Be sure to set the `windows.enabled` option to `true`:
+
+ ```bash
+ helm repo add csi-driver-smb https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts
+ helm install csi-driver-smb csi-driver-smb/csi-driver-smb --namespace kube-system --version v1.10.0 ΓÇô-set windows.enabled=true
+ ```
+
+ For other methods of installing the SMB CSI Driver, see [Install SMB CSI driver master version on a Kubernetes cluster](https://github.com/kubernetes-csi/csi-driver-smb/blob/master/docs/install-csi-driver-master.md).
+
+2. Verify that the `csi-smb` controller pod is running and each worker node has a pod running using the [`kubectl get pods`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#get) command:
+
+ ```bash
+ kubectl get pods -n kube-system | grep csi-smb
+
+ csi-smb-controller-68df7b4758-xf2m9 3/3 Running 0 3m46s
+ csi-smb-node-s6clj 3/3 Running 0 3m47s
+ csi-smb-node-win-tfxvk 3/3 Running 0 3m47s
+ ```
+
+### Create the persistent volume
+
+1. List the details of your volume using [`az netappfiles volume show`](/cli/azure/netappfiles/volume#az-netappfiles-volume-show). Replace the variables with appropriate values from your Azure NetApp Files account and environment if not defined in a previous step.
+
+ ```azurecli-interactive
+ az netappfiles volume show \
+ --resource-group $RESOURCE_GROUP \
+ --account-name $ANF_ACCOUNT_NAME \
+ --pool-name $POOL_NAME \
+ --volume-name "$VOLUME_NAME -o JSON
+ ```
+
+ The following output is an example of the above command executed with real values.
+
+ ```output
+ {
+ ...
+ "creationToken": "myvolname",
+ ...
+ "mountTargets": [
+ {
+ ...
+ "
+ "smbServerFqdn": "ANF-1be3.contoso.com",
+ ...
+ }
+ ],
+ ...
+ }
+ ```
+
+2. Create a file named `pv-smb.yaml` and copy in the following YAML. If necessary, replace `myvolname` with the `creationToken` and replace `ANF-1be3.contoso.com\myvolname` with the value of `smbServerFqdn` from the previous step. Be sure to include your AD credentials secret along with the namespace where the secret is located that you created in a prior step.
+
+ ```yaml
+ apiVersion: v1
+ kind: PersistentVolume
+ metadata:
+ name: anf-pv-smb
+ spec:
+ storageClassName: ""
+ capacity:
+ storage: 100Gi
+ accessModes:
+ - ReadWriteMany
+ persistentVolumeReclaimPolicy: Retain
+ mountOptions:
+ - dir_mode=0777
+ - file_mode=0777
+ - vers=3.0
+ csi:
+ driver: smb.csi.k8s.io
+ readOnly: false
+ volumeHandle: myvolname # make sure it's a unique name in the cluster
+ volumeAttributes:
+ source: \\ANF-1be3.contoso.com\myvolname
+ nodeStageSecretRef:
+ name: smbcreds
+ namespace: default
+ ```
+
+3. Create the persistent volume using the [`kubectl apply`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply) command:
+
+ ```bash
+ kubectl apply -f pv-smb.yaml
+ ```
+
+4. Verify the status of the persistent volume is *Available* using the [`kubectl describe`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#describe) command:
+
+ ```bash
+ kubectl describe pv pv-smb
+ ```
+
+### Create a persistent volume claim
+
+1. Create a file name `pvc-smb.yaml` and copy in the following YAML.
+
+ ```yaml
+ apiVersion: v1
+ kind: PersistentVolumeClaim
+ metadata:
+ name: anf-pvc-smb
+ spec:
+ accessModes:
+ - ReadWriteMany
+ volumeName: anf-pv-smb
+ storageClassName: ""
+ resources:
+ requests:
+ storage: 100Gi
+ ```
+
+2. Create the persistent volume claim using the [`kubectl apply`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply) command:
+
+ ```bash
+ kubectl apply -f pvc-smb.yaml
+ ```
+
+ Verify the status of the persistent volume claim is *Bound* by using the [kubectl describe][kubectl-describe] command:
+
+ ```bash
+ kubectl describe pvc pvc-smb
+ ```
+
+### Mount with a pod
+
+1. Create a file named `iis-smb.yaml` and copy in the following YAML. This file will be used to create an Internet Information Services pod to mount the volume to path `/inetpub/wwwroot`.
+
+ ```yaml
+ apiVersion: v1
+ kind: Pod
+ metadata:
+ name: iis-pod
+ labels:
+ app: web
+ spec:
+ nodeSelector:
+ "kubernetes.io/os": windows
+ volumes:
+ - name: smb
+ persistentVolumeClaim:
+ claimName: anf-pvc-smb
+ containers:
+ - name: web
+ image: mcr.microsoft.com/windows/servercore/iis:windowsservercore
+ resources:
+ limits:
+ cpu: 1
+ memory: 800M
+ ports:
+ - containerPort: 80
+ volumeMounts:
+ - name: smb
+ mountPath: "/inetpub/wwwroot"
+ readOnly: false
+ ```
+
+2. Create the pod using the [kubectl apply](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply) command:
+
+ ```bash
+ kubectl apply -f iis-smb.yaml
+ ```
+
+3. Verify the pod is *Running* and `/inetpub/wwwroot` is mounted from SMB by using the [kubectl describe](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#describe) command:
+
+ ```bash
+ kubectl describe pod iis-pod
+ ```
+
+ The output of the command resembles the following example:
+
+ ```output
+ Name: iis-pod
+ Namespace: default
+ Priority: 0
+ Node: akswin000001/10.225.5.246
+ Start Time: Fri, 05 May 2023 09:34:41 -0400
+ Labels: app=web
+ Annotations: <none>
+ Status: Running
+ IP: 10.225.5.248
+ IPs:
+ IP: 10.225.5.248
+ Containers:
+ web:
+ Container ID: containerd://39a1659b6a2b6db298df630237b2b7d959d1b1722edc81ce9b1bc7f06237850c
+ Image: mcr.microsoft.com/windows/servercore/iis:windowsservercore
+ Image ID: mcr.microsoft.com/windows/servercore/iis@sha256:0f0114d0f6c6ee569e1494953efdecb76465998df5eba951dc760ac5812c7409
+ Port: 80/TCP
+ Host Port: 0/TCP
+ State: Running
+ Started: Fri, 05 May 2023 09:34:55 -0400
+ Ready: True
+ Restart Count: 0
+ Limits:
+ cpu: 1
+ memory: 800M
+ Requests:
+ cpu: 1
+ memory: 800M
+ Environment: <none>
+ Mounts:
+ /inetpub/wwwroot from smb (rw)
+ /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-mbnv8 (ro)
+ ...
+ ```
+
+4. Verify your volume has been mounted on the pod by using the [kubectl exec](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#exec) command to connect to the pod, and then use `dir` command in the correct directory to check if the volume is mounted and the size matches the size of the volume you provisioned.
+
+ ```bash
+ kubectl exec -it iis-pod ΓÇô- cmd.exe
+ ```
+ The output of the command resembles the following example:
+
+ ```output
+ Microsoft Windows [Version 10.0.20348.1668]
+ (c) Microsoft Corporation. All rights reserved.
+
+ C:\>cd /inetpub/wwwroot
+
+ C:\inetpub\wwwroot>dir
+ Volume in drive C has no label.
+ Volume Serial Number is 86BB-AA55
+
+ Directory of C:\inetpub\wwwroot
+
+ 05/04/2023 08:15 PM <DIR> .
+ 05/04/2023 08:15 PM <DIR> ..
+ 0 File(s) 0 bytes
+ 2 Dir(s) 107,373,838,336 bytes free
+ ```
+
+## Dynamically configure for applications that use SMB volumes
+
+This section covers how to use Astra Trident to dynamically create an SMB volume on Azure NetApp Files and automatically mount it to a containerized windows application.
+
+### Install Astra Trident
+
+To dynamically provision SMB volumes, you need to install Astra Trident version 22.10 or later. Dynamically provisioning SMB volumes requires windows worker nodes.
+
+Astra Trident is NetApp's dynamic storage provisioner that is purpose-built for Kubernetes. Simplify the consumption of storage for Kubernetes applications using Astra Trident's industry-standard [Container Storage Interface (CSI)](https://kubernetes-csi.github.io/docs/) driver. Astra Trident deploys on Kubernetes clusters as pods and provides dynamic storage orchestration services for your Kubernetes workloads.
+
+Trident can be installed using the Trident operator (manually or using [Helm](https://docs.netapp.com/us-en/trident/trident-get-started/kubernetes-deploy-operator.html)) or [`tridentctl`](https://docs.netapp.com/us-en/trident/trident-get-started/kubernetes-deploy-tridentctl.html). To learn more about these installation methods and how they work, see the [Install Guide](https://docs.netapp.com/us-en/trident/trident-get-started/kubernetes-deploy.html).
++
+#### Install Astra Trident using Helm
+
+[Helm](https://helm.sh/) must be installed on your workstation to install Astra Trident using this method. For other methods of installing Astra Trident, see the [Astra Trident Install Guide](https://docs.netapp.com/us-en/trident/trident-get-started/kubernetes-deploy.html). If you have windows worker nodes in the cluster, ensure to enable windows with any installation method.
+
+1. To install Astra Trident using Helm for a cluster with windows worker nodes, run the following commands:
+
+ ```bash
+ helm repo add netapp-trident https://netapp.github.io/trident-helm-chart
+
+ helm install trident netapp-trident/trident-operator --version 23.04.0 --create-namespace --namespace trident ΓÇô-set windows=true
+ ```
+
+ The output of the command resembles the following example:
+
+ ```output
+ NAME: trident
+ LAST DEPLOYED: Fri May 5 14:23:05 2023
+ NAMESPACE: trident
+ STATUS: deployed
+ REVISION: 1
+ TEST SUITE: None
+ NOTES:
+ Thank you for installing trident-operator, which will deploy and manage NetApp's Trident CSI
+ storage provisioner for Kubernetes.
+
+
+ Your release is named 'trident' and is installed into the 'trident' namespace.
+ Please note that there must be only one instance of Trident (and trident-operator) in a Kubernetes cluster.
+
+ To configure Trident to manage storage resources, you will need a copy of tridentctl, which is available in pre-packaged Trident releases. You may find all Trident releases and source code online at https://github.com/NetApp/trident.
+
+ To learn more about the release, try:
+
+ $ helm status trident
+ $ helm get all trident
+ ```
+
+2. To confirm Astra Trident was installed successfully, run the following [`kubectl describe`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#describe) command:
+
+ ```bash
+ kubectl describe torc trident
+ ```
+
+ The output of the command resembles the following example:
+
+ ```output
+ Name: trident
+ Namespace:
+ Labels: app.kubernetes.io/managed-by=Helm
+ Annotations: meta.helm.sh/release-name: trident
+ meta.helm.sh/release-namespace: trident
+ API Version: trident.netapp.io/v1
+ Kind: TridentOrchestrator
+ Metadata:
+ ...
+ Spec:
+ IPv6: false
+ Autosupport Image: docker.io/netapp/trident-autosupport:23.04
+ Autosupport Proxy: <nil>
+ Disable Audit Log: true
+ Enable Force Detach: false
+ Http Request Timeout: 90s
+ Image Pull Policy: IfNotPresent
+ k8sTimeout: 0
+ Kubelet Dir: <nil>
+ Log Format: text
+ Log Layers: <nil>
+ Log Workflows: <nil>
+ Namespace: trident
+ Probe Port: 17546
+ Silence Autosupport: false
+ Trident Image: docker.io/netapp/trident:23.04.0
+ Windows: true
+ Status:
+ Current Installation Params:
+ IPv6: false
+ Autosupport Hostname:
+ Autosupport Image: docker.io/netapp/trident-autosupport:23.04
+ Autosupport Proxy:
+ Autosupport Serial Number:
+ Debug: false
+ Disable Audit Log: true
+ Enable Force Detach: false
+ Http Request Timeout: 90s
+ Image Pull Policy: IfNotPresent
+ Image Pull Secrets:
+ Image Registry:
+ k8sTimeout: 30
+ Kubelet Dir: /var/lib/kubelet
+ Log Format: text
+ Log Layers:
+ Log Level: info
+ Log Workflows:
+ Probe Port: 17546
+ Silence Autosupport: false
+ Trident Image: docker.io/netapp/trident:23.04.0
+ Message: Trident installed
+ Namespace: trident
+ Status: Installed
+ Version: v23.04.0
+ Events:
+ Type Reason Age From Message
+ - - - -
+ Normal Installing 74s trident-operator.netapp.io Installing Trident
+ Normal Installed 46s trident-operator.netapp.io Trident installed
+ ```
+
+### Create a backend
+
+A backend must be created to instruct Astra Trident about the Azure NetApp Files subscription and where it needs to create volumes. For more information about backends, see [Azure NetApp Files backend configuration options and examples](https://docs.netapp.com/us-en/trident/trident-use/anf-examples.html).
+
+1. Create a file named `backend-secret-smb.yaml` and copy in the following YAML. Change the `Client ID` and `clientSecret` to the correct values for your environment.
+
+ ```yaml
+ apiVersion: v1
+ kind: Secret
+ metadata:
+ name: backend-tbc-anf-secret
+ type: Opaque
+ stringData:
+ clientID: abcde356-bf8e-fake-c111-abcde35613aa
+ clientSecret: rR0rUmWXfNioN1KhtHisiSAnoTherboGuskey6pU
+ ```
+
+2. Create a file named `backend-anf-smb.yaml` and copy in the following YAML. Change the `ClientID`, `clientSecret`, `subscriptionID`, `tenantID`, `location`, and `serviceLevel` to the correct values for your environment. The `tenantID`, `clientID`, and `clientSecret` can be found from an application registration in Azure Active Directory (AD) with sufficient permissions for the Azure NetApp Files service. The application registration includes the Owner or Contributor role predefined by Azure. The Azure location must contain at least one delegated subnet. The `serviceLevel` must match the `serviceLevel` configured for the capacity pool in [Configure Azure NetApp Files for AKS workloads](azure-netapp-files.md#configure-azure-netapp-files-for-aks-workloads).
+
+ ```yaml
+ apiVersion: trident.netapp.io/v1
+ kind: TridentBackendConfig
+ metadata:
+ name: backend-tbc-anf-smb
+ spec:
+ version: 1
+ storageDriverName: azure-netapp-files
+ subscriptionID: 12abc678-4774-fake-a1b2-a7abcde39312
+ tenantID: a7abcde3-edc1-fake-b111-a7abcde356cf
+ location: eastus
+ serviceLevel: Premium
+ credentials:
+ name: backend-tbc-anf-secret
+ nasType: smb
+ ```
+3. Create the secret and backend using the [`kubectl apply`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply) command.
+
+ Create the secret:
+
+ ```bash
+ kubectl apply -f backend-secret.yaml -n trident
+ ```
++
+ The output of the command resembles the following example:
+
+ ```output
+ secret/backend-tbc-anf-secret created
+ ```
+
+
+ Create the backend:
+
+ ```bash
+ kubectl apply -f backend-anf.yaml -n trident
+ ```
++
+ The output of the command resembles the following example:
+
+ ```output
+ tridentbackendconfig.trident.netapp.io/backend-tbc-anf created
+ ```
+
+4. Verify the backend was created by running the following command:
+
+ ```bash
+ kubectl get tridentbackends -n trident
+ ```
+
+ The output of the command resembles the following example:
+
+ ```output
+ NAME BACKEND BACKEND UUID
+ tbe-9shfq backend-tbc-anf-smb 09cc2d43-8197-475f-8356-da7707bae203
+ ```
+
+### Create a secret with the domain credentials for SMB
+
+1. Create a secret on your AKS cluster to access the AD server using the [`kubectl create secret`](https://kubernetes.io/docs/tasks/configmap-secret/managing-secret-using-kubectl/) command. This information will be used by the Kubernetes persistent volume to access the Azure NetApp Files SMB volume. Use the following command, replacing `DOMAIN_NAME\USERNAME` with your domain name and username and `PASSWORD` with your password.
+
+ ```bash
+ kubectl create secret generic smbcreds --from-literal=username=DOMAIN_NAME\USERNAME ΓÇôfrom-literal=password="PASSWORD"
+ ```
+
+2. Verify that the secret has been created.
+
+ ```bash
+ kubectl get secret
+ ```
+
+ The output resembles the following example:
+
+ ```output
+ NAME TYPE DATA AGE
+ smbcreds Opaque 2 2h
+ ```
+
+### Create a storage class
+
+A storage class is used to define how a unit of storage is dynamically created with a persistent volume. To consume Azure NetApp Files volumes, a storage class must be created.
+
+1. Create a file named `anf-storageclass-smb.yaml` and copy in the following YAML.
+
+ ```yaml
+ apiVersion: storage.k8s.io/v1
+ kind: StorageClass
+ metadata:
+ name: anf-sc-smb
+ provisioner: csi.trident.netapp.io
+ allowVolumeExpansion: true
+ parameters:
+ backendType: "azure-netapp-files"
+ trident.netapp.io/nasType: "smb"
+ csi.storage.k8s.io/node-stage-secret-name: "smbcreds"
+ csi.storage.k8s.io/node-stage-secret-namespace: "default"
+ ```
+
+2. Create the storage class using the [`kubectl apply`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply) command:
+
+ ```bash
+ kubectl apply -f anf-storageclass-smb.yaml
+ ```
+
+ The output of the command resembles the following example:
+
+ ```output
+ storageclass/anf-sc-smb created
+ ```
+
+3. Run the [`kubectl get`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#get) command to view the status of the storage class:
+
+ ```bash
+ kubectl get sc anf-sc-smb
+ NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
+ anf-sc-smb csi.trident.netapp.io Delete Immediate true 13s
+ ```
+
+### Create a PVC
+
+A persistent volume claim (PVC) is a request for storage by a user. Upon the creation of a persistent volume claim, Astra Trident automatically creates an Azure NetApp Files SMB share and makes it available for Kubernetes workloads to consume.
+
+1. Create a file named `anf-pvc-smb.yaml` and copy the following YAML. In this example, a 100-GiB volume is created with `ReadWriteMany` access and uses the storage class created in [Create a storage class](#create-a-storage-class).
+
+ ```yaml
+ kind: PersistentVolumeClaim
+ apiVersion: v1
+ metadata:
+ name: anf-pvc-smb
+ spec:
+ accessModes:
+ - ReadWriteMany
+ resources:
+ requests:
+ storage: 100Gi
+ storageClassName: anf-sc-smb
+ ```
+
+2. Create the persistent volume claim with the [`kubectl apply`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply) command:
+
+ ```bash
+ kubectl apply -f anf-pvc-smb.yaml
+ ```
+
+ The output of the command resembles the following example:
+
+ ```output
+ persistentvolumeclaim/anf-pvc-smb created
+ ```
+
+3. To view information about the persistent volume claim, run the [`kubectl get`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#get) command:
+
+ ```bash
+ kubectl get pvc
+ ```
+
+ The output of the command resembles the following example:
+
+ ```output
+ NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
+ anf-pvc-smb Bound pvc-209268f5-c175-4a23-b61b-e34faf5b6239 100Gi RWX anf-sc-smb 5m38s
+ ```
+
+4. To view the persistent volume created by Astra Trident, run the following [`kubectl get`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#get) command:
+
+ ```bash
+ kubectl get pv
+ NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
+ pvc-209268f5-c175-4a23-b61b-e34faf5b6239 100Gi RWX Delete Bound default/anf-pvc-smb anf-sc-smb 5m52s
+ ```
+
+### Use the persistent volume
+
+After the PVC is created, a pod can be spun up to access the Azure NetApp Files volume. The following manifest can be used to define an Internet Information Services (IIS) pod that mounts the Azure NetApp Files SMB share created in the previous step. In this example, the volume is mounted at `/inetpub/wwwroot`.
+
+1. Create a file named `anf-iis-pod.yaml` and copy in the following YAML:
+
+ ```yaml
+ apiVersion: v1
+ kind: Pod
+ metadata:
+ name: iis-pod
+ labels:
+ app: web
+ spec:
+ nodeSelector:
+ "kubernetes.io/os": windows
+ volumes:
+ - name: smb
+ persistentVolumeClaim:
+ claimName: anf-pvc-smb
+ containers:
+ - name: web
+ image: mcr.microsoft.com/windows/servercore/iis:windowsservercore
+ resources:
+ limits:
+ cpu: 1
+ memory: 800M
+ ports:
+ - containerPort: 80
+ volumeMounts:
+ - name: smb
+ mountPath: "/inetpub/wwwroot"
+ readOnly: false
+ ```
+
+2. Create the deployment using the [`kubectl apply`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply) command:
+
+ ```bash
+ kubectl apply -f anf-iis-deploy-pod.yaml
+ ```
+
+ The output of the command resembles the following example:
+
+ ```output
+ pod/iis-pod created
+ ```
+
+ Verify that the pod is running and is mounted via SMB to `/inetpub/wwwroot` by using the [`kubectl describe`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#describe) command:
+
+ ```bash
+ kubectl describe pod iis-pod
+ ```
+
+ The output of the command resembles the following example:
+
+ ```output
+ Name: iis-pod
+ Namespace: default
+ Priority: 0
+ Node: akswin000001/10.225.5.246
+ Start Time: Fri, 05 May 2023 15:16:36 -0400
+ Labels: app=web
+ Annotations: <none>
+ Status: Running
+ IP: 10.225.5.252
+ IPs:
+ IP: 10.225.5.252
+ Containers:
+ web:
+ Container ID: containerd://1e4959f2b49e7ad842b0ec774488a6142ac9152ca380c7ba4d814ae739d5ed3e
+ Image: mcr.microsoft.com/windows/servercore/iis:windowsservercore
+ Image ID: mcr.microsoft.com/windows/servercore/iis@sha256:0f0114d0f6c6ee569e1494953efdecb76465998df5eba951dc760ac5812c7409
+ Port: 80/TCP
+ Host Port: 0/TCP
+ State: Running
+ Started: Fri, 05 May 2023 15:16:44 -0400
+ Ready: True
+ Restart Count: 0
+ Limits:
+ cpu: 1
+ memory: 800M
+ Requests:
+ cpu: 1
+ memory: 800M
+ Environment: <none>
+ Mounts:
+ /inetpub/wwwroot from smb (rw)
+ /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-zznzs (ro)
+ ```
+
+3. Verify that your volume has been mounted on the pod by using [kubectl exec][kubectl-exec] to connect to the pod. And then use the `dir` command in the correct directory to check if the volume is mounted and the size matches the size of the volume you provisioned.
+
+ ```bash
+ kubectl exec -it iis-pod ΓÇô- cmd.exe
+ ```
+
+ The output of the command resembles the following example:
+
+ ```output
+ Microsoft Windows [Version 10.0.20348.1668]
+ (c) Microsoft Corporation. All rights reserved.
+
+ C:\>cd /inetpub/wwwroot
+
+ C:\inetpub\wwwroot>dir
+ Volume in drive C has no label.
+ Volume Serial Number is 86BB-AA55
+
+ Directory of C:\inetpub\wwwroot
+
+ 05/05/2023 01:38 AM <DIR> .
+ 05/05/2023 01:38 AM <DIR> ..
+ 0 File(s) 0 bytes
+ 2 Dir(s) 107,373,862,912 bytes free
+
+ C:\inetpub\wwwroot>exit
+ ```
+
+## Next steps
+
+Astra Trident supports many features with Azure NetApp Files. For more information, see:
+
+* [Expanding volumes][expand-trident-volumes]
+* [On-demand volume snapshots][on-demand-trident-volume-snapshots]
+* [Importing volumes][importing-trident-volumes]
+
+<!-- EXTERNAL LINKS -->
+[astra-trident]: https://docs.netapp.com/us-en/trident/https://docsupdatetracker.net/index.html
+[kubectl-create]: https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#create
+[kubectl-apply]: https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply
+[kubectl-describe]: https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#describe
+[kubectl-exec]: https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#exec
+[astra-control-service]: https://cloud.netapp.com/astra-control
+[kubernetes-csi-driver]: https://kubernetes-csi.github.io/docs/
+[trident-install-guide]: https://docs.netapp.com/us-en/trident/trident-get-started/kubernetes-deploy.html
+[trident-helm-chart]: https://docs.netapp.com/us-en/trident/trident-get-started/kubernetes-deploy-operator.html
+[tridentctl]: https://docs.netapp.com/us-en/trident/trident-get-started/kubernetes-deploy-tridentctl.html
+[trident-backend-install-guide]: https://docs.netapp.com/us-en/trident/trident-use/backends.html
+[kubectl-get]: https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#get
+[expand-trident-volumes]: https://docs.netapp.com/us-en/trident/trident-use/vol-expansion.html
+[on-demand-trident-volume-snapshots]: https://docs.netapp.com/us-en/trident/trident-use/vol-snapshots.html
+[importing-trident-volumes]: https://docs.netapp.com/us-en/trident/trident-use/vol-import.html
+[backend-anf.yaml]: https://raw.githubusercontent.com/NetApp/trident/v23.01.1/trident-installer/sample-input/backends-samples/azure-netapp-files/backend-anf.yaml
+
+<!-- INTERNAL LINKS -->
+[aks-quickstart-cli]: ./learn/quick-kubernetes-deploy-cli.md
+[aks-quickstart-portal]: ./learn/quick-kubernetes-deploy-portal.md
+[aks-quickstart-powershell]: ./learn/quick-kubernetes-deploy-powershell.md
+[anf]: ../azure-netapp-files/azure-netapp-files-introduction.md
+[anf-delegate-subnet]: ../azure-netapp-files/azure-netapp-files-delegate-subnet.md
+[anf-regions]: https://azure.microsoft.com/global-infrastructure/services/?products=netapp&regions=all
+[az-aks-show]: /cli/azure/aks#az_aks_show
+[az-netappfiles-account-create]: /cli/azure/netappfiles/account#az_netappfiles_account_create
+[az-netapp-files-dynamic]: azure-netapp-files-dynamic.md
+[az-netappfiles-pool-create]: /cli/azure/netappfiles/pool#az_netappfiles_pool_create
+[az-netappfiles-volume-create]: /cli/azure/netappfiles/volume#az_netappfiles_volume_create
+[az-netappfiles-volume-show]: /cli/azure/netappfiles/volume#az_netappfiles_volume_show
+[az-network-vnet-subnet-create]: /cli/azure/network/vnet/subnet#az_network_vnet_subnet_create
+[install-azure-cli]: /cli/azure/install-azure-cli
+[use-tags]: use-tags.md
+[azure-ad-app-registration]: ../active-directory/develop/howto-create-service-principal-portal.md
aks Azure Netapp Files https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/azure-netapp-files.md
Title: Provision Azure NetApp Files volumes on Azure Kubernetes Service
-description: Learn how to provision Azure NetApp Files volumes on an Azure Kubernetes Service cluster.
+ Title: Configure Azure NetApp Files for Azure Kubernetes Service
+description: Learn how to configure Azure NetApp Files for an Azure Kubernetes Service cluster.
Previously updated : 05/07/2023 Last updated : 05/08/2023
-# Provision Azure NetApp Files volumes on Azure Kubernetes Service
+# Configure Azure NetApp Files for Azure Kubernetes Service
-A persistent volume represents a piece of storage that has been provisioned for use with Kubernetes pods. A persistent volume can be used by one or many pods, and can be dynamically or statically provisioned. This article shows you how to create [Azure NetApp Files][anf] volumes to be used by pods on an Azure Kubernetes Service (AKS) cluster.
+A persistent volume represents a piece of storage that has been provisioned for use with Kubernetes pods. A persistent volume can be used by one or many pods, and it can be statically or dynamically provisioned. This article shows you how to configure [Azure NetApp Files][anf] to be used by pods on an Azure Kubernetes Service (AKS) cluster.
-[Azure NetApp Files][anf] is an enterprise-class, high-performance, metered file storage service running on Azure. Kubernetes users have two options for using Azure NetApp Files volumes for Kubernetes workloads:
+[Azure NetApp Files][anf] is an enterprise-class, high-performance, metered file storage service running on Azure and supports volumes using [NFS](azure-netapp-files-nfs.md) (NFSv3 or NFSv4.1), [SMB](azure-netapp-files-smb.md), and [dual-protocol](azure-netapp-files-dual-protocol.md) (NFSv3 and SMB, or NFSv4.1 and SMB). Kubernetes users have two options for using Azure NetApp Files volumes for Kubernetes workloads:
-* Create Azure NetApp Files volumes **statically**. In this scenario, the creation of volumes is external to AKS. Volumes are created using the Azure CLI or from the Azure portal, and are then exposed to Kubernetes by the creation of a `PersistentVolume`. Statically created Azure NetApp Files volumes have many limitations (for example, inability to be expanded, needing to be over-provisioned, and so on). Statically created volumes are not recommended for most use cases.
-* Create Azure NetApp Files volumes **on-demand**, orchestrating through Kubernetes. This method is the **preferred** way to create multiple volumes directly through Kubernetes, and is achieved using [Astra Trident][astra-trident]. Astra Trident is a CSI-compliant dynamic storage orchestrator that helps provision volumes natively through Kubernetes.
+* Create Azure NetApp Files volumes **statically**. In this scenario, the creation of volumes is external to AKS. Volumes are created using the Azure CLI or from the Azure portal, and are then exposed to Kubernetes by the creation of a `PersistentVolume`. Statically created Azure NetApp Files volumes have many limitations (for example, inability to be expanded, needing to be over-provisioned, and so on). Statically created volumes aren't recommended for most use cases.
+* Create Azure NetApp Files volumes **dynamically**, orchestrating through Kubernetes. This method is the **preferred** way to create multiple volumes directly through Kubernetes, and is achieved using [Astra Trident][astra-trident]. Astra Trident is a CSI-compliant dynamic storage orchestrator that helps provision volumes natively through Kubernetes.
+
+> [!NOTE]
+> Dual-protocol volumes can only be created **statically**. For more information on using dual-protocol volumes with Azure Kubernetes Service, see [Provision Azure NetApp Files dual-protocol volumes for Azure Kubernetes Service](azure-netapp-files-dual-protocol.md).
Using a CSI driver to directly consume Azure NetApp Files volumes from AKS workloads is the recommended configuration for most use cases. This requirement is accomplished using Astra Trident, an open-source dynamic storage orchestrator for Kubernetes. Astra Trident is an enterprise-grade storage orchestrator purpose-built for Kubernetes, and fully supported by NetApp. It simplifies access to storage from Kubernetes clusters by automating storage provisioning.
The following considerations apply when you use Azure NetApp Files:
* Your AKS cluster must be [in a region that supports Azure NetApp Files][anf-regions]. * The Azure CLI version 2.0.59 or higher installed and configured. Run `az --version` to find the version. If you need to install or upgrade, see [Install Azure CLI][install-azure-cli]. * After the initial deployment of an AKS cluster, you can choose to provision Azure NetApp Files volumes statically or dynamically.
-* To use dynamic provisioning with Azure NetApp Files, install and configure [Astra Trident][astra-trident] version 19.07 or higher.
+* To use dynamic provisioning with Azure NetApp Files with Network File System (NFS), install and configure [Astra Trident][astra-trident] version 19.07 or higher. To use dynamic provisioning with Azure NetApp Files with Secure Message Block (SMB), install and configure Astra Trident version 22.10 or higher. Dynamic provisioning for SMB shares is only supported on windows worker nodes.
+* Before you deploy Azure NetApp Files SMB volumes, you must identify the AD DS integration requirements for Azure NetApp Files to ensure that Azure NetApp Files is well connected to AD DS. For more information, see [Understand guidelines for Active Directory Domain Services site design and planning](../azure-netapp-files/understand-guidelines-active-directory-domain-service-site.md). Both the AKS cluster and Azure NetApp Files must have connectivity to the same AD.
+
+## Configure Azure NetApp Files for AKS workloads
+
+This section describes how to set up Azure NetApp Files for AKS workloads. It's applicable for all scenarios within this article.
-## Configure Azure NetApp Files
+1. Define variables for later usage. Replace *myresourcegroup*, *mylocation*, *myaccountname*, *mypool1*, *poolsize*, *premium*, *myvnet*, *myANFSubnet*, and *myprefix* with appropriate values for your environment.
-1. Register the *Microsoft.NetApp* resource provider by running the following command:
+ ```azurecli-interactive
+ RESOURCE_GROUP="myresourcegroup"
+ LOCATION="mylocation"
+ ANF_ACCOUNT_NAME="myaccountname"
+ POOL_NAME="mypool1"
+ SIZE="poolsize" # size in TiB
+ SERVICE_LEVEL="Premium" # valid values are Standard, Premium and Ultra
+ VNET_NAME="myvnet"
+ SUBNET_NAME="myANFSubnet"
+ ADDRESS_PREFIX="myprefix"
+ ```
+
+2. Register the *Microsoft.NetApp* resource provider by running the following command:
```azurecli-interactive az provider register --namespace Microsoft.NetApp --wait
The following considerations apply when you use Azure NetApp Files:
> [!NOTE] > This operation can take several minutes to complete.
-2. When you create an Azure NetApp account for use with AKS, you can create the account in an existing resource group or create a new one in the same region as the AKS cluster.
-The following command creates an account named *myaccount1* in the *myResourceGroup* resource group and *eastus* region:
+3. Create a new account by using the command [`az netappfiles account create`](/cli/azure/netappfiles/account#az-netappfiles-account-create). When you create an Azure NetApp account for use with AKS, you can create the account in an existing resource group or create a new one in the same region as the AKS cluster.
```azurecli-interactive az netappfiles account create \
- --resource-group myResourceGroup \
- --location eastus \
- --account-name myaccount1
+ --resource-group $RESOURCE_GROUP \
+ --location $LOCATION \
+ --account-name $ANF_ACCOUNT_NAME
```
-3. Create a new capacity pool by using [az netappfiles pool create][az-netappfiles-pool-create]. The following example creates a new capacity pool named *mypool1* with 4 TB in size and *Premium* service level:
+4. Create a new capacity pool by using the command [`az netappfiles pool create`][az-netappfiles-pool-create]. Replace the variables shown in the command with your Azure NetApp Files information. The `account_name` should be the same as created in Step 3.
```azurecli-interactive az netappfiles pool create \
- --resource-group myResourceGroup \
- --location eastus \
- --account-name myaccount1 \
- --pool-name mypool1 \
- --size 4 \
- --service-level Premium
+ --resource-group $RESOURCE_GROUP \
+ --location $LOCATION \
+ --account-name $ANF_ACCOUNT_NAME \
+ --pool-name $POOL_NAME \
+ --size $SIZE \
+ --service-level $SERVICE_LEVEL
```
-4. Create a subnet to [delegate to Azure NetApp Files][anf-delegate-subnet] using [az network vnet subnet create][az-network-vnet-subnet-create]. Specify the resource group hosting the existing virtual network for your AKS cluster.
+5. Create a subnet to [delegate to Azure NetApp Files][anf-delegate-subnet] using the command [`az network vnet subnet create`][az-network-vnet-subnet-create]. Specify the resource group hosting the existing virtual network for your AKS cluster. Replace the variables shown in the command with your Azure NetApp Files information.
> [!NOTE] > This subnet must be in the same virtual network as your AKS cluster.
- > Ensure that the `address-prefixes` are set correctly and without any conflicts
```azurecli-interactive
- RESOURCE_GROUP=myResourceGroup
- VNET_NAME=$(az network vnet list --resource-group $RESOURCE_GROUP --query [].name -o tsv)
- VNET_ID=$(az network vnet show --resource-group $RESOURCE_GROUP --name $VNET_NAME --query "id" -o tsv)
- SUBNET_NAME=MyNetAppSubnet
az network vnet subnet create \ --resource-group $RESOURCE_GROUP \ --vnet-name $VNET_NAME \ --name $SUBNET_NAME \ --delegations "Microsoft.NetApp/volumes" \
- --address-prefixes 10.225.0.0/24
- ```
-
- Volumes can either be provisioned statically or dynamically. Both options are covered further in the next sections.
-
-## Provision Azure NetApp Files volumes statically
-
-1. Create a volume using the [az netappfiles volume create][az-netappfiles-volume-create] command. Update `RESOURCE_GROUP`, `LOCATION`, `ANF_ACCOUNT_NAME` (Azure NetApp account name), `POOL_NAME`, and `SERVICE_LEVEL` with the correct values.
-
- ```azurecli-interactive
- RESOURCE_GROUP=myResourceGroup
- LOCATION=eastus
- ANF_ACCOUNT_NAME=myaccount1
- POOL_NAME=mypool1
- SERVICE_LEVEL=Premium
- VNET_NAME=$(az network vnet list --resource-group $RESOURCE_GROUP --query [].name -o tsv)
- VNET_ID=$(az network vnet show --resource-group $RESOURCE_GROUP --name $VNET_NAME --query "id" -o tsv)
- SUBNET_NAME=MyNetAppSubnet
- SUBNET_ID=$(az network vnet subnet show --resource-group $RESOURCE_GROUP --vnet-name $VNET_NAME --name $SUBNET_NAME --query "id" -o tsv)
- VOLUME_SIZE_GiB=100 # 100 GiB
- UNIQUE_FILE_PATH="myfilepath2" # Note that file path needs to be unique within all ANF Accounts
-
- az netappfiles volume create \
- --resource-group $RESOURCE_GROUP \
- --location $LOCATION \
- --account-name $ANF_ACCOUNT_NAME \
- --pool-name $POOL_NAME \
- --name "myvol1" \
- --service-level $SERVICE_LEVEL \
- --vnet $VNET_ID \
- --subnet $SUBNET_ID \
- --usage-threshold $VOLUME_SIZE_GiB \
- --file-path $UNIQUE_FILE_PATH \
- --protocol-types "NFSv3"
- ```
-
-### Create the persistent volume
-
-1. List the details of your volume using [az netappfiles volume show][az-netappfiles-volume-show]
-
- ```azurecli-interactive
- az netappfiles volume show \
- --resource-group $RESOURCE_GROUP \
- --account-name $ANF_ACCOUNT_NAME \
- --pool-name $POOL_NAME \
- --volume-name "myvol1" -o JSON
- ```
-
- The following output resembles the output of the previous command:
-
- ```output
- {
- ...
- "creationToken": "myfilepath2",
- ...
- "mountTargets": [
- {
- ...
- "ipAddress": "10.0.0.4",
- ...
- }
- ],
- ...
- }
- ```
-
-2. Create a `pv-nfs.yaml` defining a persistent volume by copying the following manifest. Replace `path` with the *creationToken* and `server` with *ipAddress* from the previous step.
-
- ```yaml
-
- apiVersion: v1
- kind: PersistentVolume
- metadata:
- name: pv-nfs
- spec:
- capacity:
- storage: 100Gi
- accessModes:
- - ReadWriteMany
- mountOptions:
- - vers=3
- nfs:
- server: 10.0.0.4
- path: /myfilepath2
- ```
-
-3. Create the persistent volume using the [kubectl apply][kubectl-apply] command:
-
- ```bash
- kubectl apply -f pv-nfs.yaml
- ```
-
-4. Verify the *Status* of the PersistentVolume is *Available* using the [kubectl describe][kubectl-describe] command:
-
- ```bash
- kubectl describe pv pv-nfs
- ```
-
-### Create a persistent volume claim
-
-1. Create a `pvc-nfs.yaml` defining a PersistentVolume by copying the following manifest:
-
- ```yaml
- apiVersion: v1
- kind: PersistentVolumeClaim
- metadata:
- name: pvc-nfs
- spec:
- accessModes:
- - ReadWriteMany
- storageClassName: ""
- resources:
- requests:
- storage: 1Gi
- ```
-
-2. Create the persistent volume claim using the [kubectl apply][kubectl-apply] command:
-
- ```bash
- kubectl apply -f pvc-nfs.yaml
- ```
-
-3. Verify the *Status* of the persistent volume claim is *Bound* using the [kubectl describe][kubectl-describe] command:
-
- ```bash
- kubectl describe pvc pvc-nfs
- ```
-
-### Mount with a pod
-
-1. Create a `nginx-nfs.yaml` defining a pod that uses the persistent volume claim by using the following manifest:
-
- ```yaml
- kind: Pod
- apiVersion: v1
- metadata:
- name: nginx-nfs
- spec:
- containers:
- - image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
- name: nginx-nfs
- command:
- - "/bin/sh"
- - "-c"
- - while true; do echo $(date) >> /mnt/azure/outfile; sleep 1; done
- volumeMounts:
- - name: disk01
- mountPath: /mnt/azure
- volumes:
- - name: disk01
- persistentVolumeClaim:
- claimName: pvc-nfs
- ```
-
-2. Create the pod using the [kubectl apply][kubectl-apply] command:
-
- ```bash
- kubectl apply -f nginx-nfs.yaml
- ```
-
-3. Verify the pod is *Running* using the [kubectl describe][kubectl-describe] command:
-
- ```bash
- kubectl describe pod nginx-nfs
- ```
-
-4. Verify your volume has been mounted on the pod by using [kubectl exec][kubectl-exec] to connect to the pod, and then use `df -h` to check if the volume is mounted.
-
- ```bash
- kubectl exec -it nginx-nfs -- sh
- ```
-
- ```output
- / # df -h
- Filesystem Size Used Avail Use% Mounted on
- ...
- 10.0.0.4:/myfilepath2 100T 384K 100T 1% /mnt/azure
- ...
- ```
-
-## Provision Azure NetApp Files volumes dynamically
-
-### Install and configure Astra Trident
-
-To dynamically provision volumes, you need to install Astra Trident. Astra Trident is NetApp's dynamic storage provisioner that is purpose-built for Kubernetes. Simplify the consumption of storage for Kubernetes applications using Astra Trident's industry-standard [Container Storage Interface (CSI)][kubernetes-csi-driver] driver. Astra Trident deploys on Kubernetes clusters as pods and provides dynamic storage orchestration services for your Kubernetes workloads.
-
-Before proceeding to the next section, you need to:
-
-1. **Install Astra Trident**. Trident can be installed using the Trident operator (manually or using [Helm][trident-helm-chart]) or [`tridentctl`][tridentctl]. The instructions provided later in this article explain how Astra Trident can be installed using the operator. To learn more about these installation methods and how they work, see the [Install Guide][trident-install-guide].
-
-2. **Create a backend**. To instruct Astra Trident about the Azure NetApp Files subscription and where it needs to create volumes, a backend is created. This step requires details about the account that was created in the previous step.
-
-#### Install Astra Trident using the operator
-
-This section walks you through the installation of Astra Trident using the operator.
-
-1. Run the [kubectl create][kubectl-create] command to create the *trident* namespace:
-
- ```bash
- kubectl create ns trident
+ --address-prefixes $ADDRESS_PREFIX
```
-2. Run the [kubectl apply][kubectl-apply] command to deploy the Trident operator using the bundle file:
+## Statically or dynamically provision Azure NetApp Files volumes for NFS or SMB
- ```bash
- kubectl apply -f https://raw.githubusercontent.com/NetApp/trident/v23.01.1/deploy/bundle_pre_1_25.yaml -n trident
- ```
- ```bash
- kubectl apply -f https://raw.githubusercontent.com/NetApp/trident/v23.01.1/deploy/bundle_post_1_25.yaml -n trident
- ```
-
- The output of the command resembles the following example:
-
- ```output
- serviceaccount/trident-operator created
- clusterrole.rbac.authorization.k8s.io/trident-operator created
- clusterrolebinding.rbac.authorization.k8s.io/trident-operator created
- deployment.apps/trident-operator created
- podsecuritypolicy.policy/tridentoperatorpods created
- ```
-
-3. Run the following command to create a `TridentOrchestrator` to install Astra Trident.
-
- ```bash
- kubectl apply -f https://raw.githubusercontent.com/NetApp/trident/v23.01.1/deploy/crds/tridentorchestrator_cr.yaml
- ```
-
- The output of the command resembles the following example:
-
- ```output
- tridentorchestrator.trident.netapp.io/trident created
- ```
-
- The operator installs by using the parameters provided in the `TridentOrchestrator` spec. You can learn about the configuration parameters and example backends from the [Trident install guide][trident-install-guide] and [backend guide][trident-backend-install-guide].
-
-4. To confirm Astra Trident was installed successfully, run the following [kubectl describe][kubectl-describe] command:
-
- ```bash
- kubectl describe torc trident
- ```
-
- The output of the command resembles the following example:
-
- ```output
- Name: trident
- Namespace:
- Labels: <none>
- Annotations: <none>
- API Version: trident.netapp.io/v1
- Kind: TridentOrchestrator
- ...
- Spec:
- Debug: true
- Namespace: trident
- Status:
- Current Installation Params:
- IPv6: false
- Autosupport Hostname:
- Autosupport Image: netapp/trident-autosupport:23.01
- Autosupport Proxy:
- Autosupport Serial Number:
- Debug: true
- Enable Node Prep: false
- Image Pull Secrets:
- Image Registry:
- k8sTimeout: 30
- Kubelet Dir: /var/lib/kubelet
- Log Format: text
- Silence Autosupport: false
- Trident Image: netapp/trident:23.01.1
- Message: Trident installed
- Namespace: trident
- Status: Installed
- Version: v23.01.1
- Events:
- Type Reason Age From Message
- - - - -
- Normal Installing 74s trident-operator.netapp.io Installing Trident
- Normal Installed 67s trident-operator.netapp.io Trident installed
- ```
-
-### Create a backend
-
-1. Before creating a backend, you need to update [backend-anf.yaml][backend-anf.yaml] to include details about the Azure NetApp Files subscription, such as:
-
- * `subscriptionID` for the Azure subscription where Azure NetApp Files will be enabled.
- * `tenantID`, `clientID`, and `clientSecret` from an [App Registration][azure-ad-app-registration] in Azure Active Directory (AD) with sufficient permissions for the Azure NetApp Files service. The App Registration includes the `Owner` or `Contributor` role that's predefined by Azure.
- * An Azure location that contains at least one delegated subnet.
-
- In addition, you can choose to provide a different service level. Azure NetApp Files provides three [service levels](../azure-netapp-files/azure-netapp-files-service-levels.md): Standard, Premium, and Ultra.
-
-2. After Astra Trident is installed, create a backend that points to your Azure NetApp Files subscription by running the following command.
-
- ```bash
- kubectl apply -f backend-anf.yaml -n trident
- ```
-
- The output of the command resembles the following example:
-
- ```output
- secret/backend-tbc-anf-secret created
- tridentbackendconfig.trident.netapp.io/backend-tbc-anf created
- ```
-
- 3. To confirm backend was set with correct credentials and sufficient permissions, run the following [kubectl describe][kubectl-describe] command:
- ```bash
- kubectl describe tridentbackendconfig.trident.netapp.io/backend-tbc-anf -n trident
- ```
-
-### Create a StorageClass
-
-A storage class is used to define how a unit of storage is dynamically created with a persistent volume. To consume Azure NetApp Files volumes, a storage class must be created.
-
-1. Create a file named `anf-storageclass.yaml` and copy in the following manifest:
-
- ```yaml
- apiVersion: storage.k8s.io/v1
- kind: StorageClass
- metadata:
- name: azure-netapp-files
- provisioner: csi.trident.netapp.io
- parameters:
- backendType: "azure-netapp-files"
- fsType: "nfs"
- ```
-
-2. Create the storage class using the [kubectl apply][kubectl-apply] command:
-
- ```bash
- kubectl apply -f anf-storageclass.yaml
- ```
-
- The output of the command resembles the following example:
-
- ```output
- storageclass/azure-netapp-files created
- ```
-
-3. Run the [kubectl get][kubectl-get] command to view the status of the storage class:
-
- ```bash
- kubectl get sc
- NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
- azure-netapp-files csi.trident.netapp.io Delete Immediate false 3s
- ```
-
-### Create a persistent volume claim
-
-A persistent volume claim (PVC) is a request for storage by a user. Upon the creation of a persistent volume claim, Astra Trident automatically creates an Azure NetApp Files volume and makes it available for Kubernetes workloads to consume.
-
-1. Create a file named `anf-pvc.yaml` and copy the following manifest. In this example, a 1-TiB volume is created that with *ReadWriteMany* access.
-
- ```yaml
- kind: PersistentVolumeClaim
- apiVersion: v1
- metadata:
- name: anf-pvc
- spec:
- accessModes:
- - ReadWriteMany
- resources:
- requests:
- storage: 1Ti
- storageClassName: azure-netapp-files
- ```
-
-2. Create the persistent volume claim with the [kubectl apply][kubectl-apply] command:
-
- ```bash
- kubectl apply -f anf-pvc.yaml
- ```
-
- The output of the command resembles the following example:
-
- ```output
- persistentvolumeclaim/anf-pvc created
- ```
-
-3. To view information about the persistent volume claim, run the [kubectl get][kubectl-get] command:
-
- ```bash
- kubectl get pvc
- ```
-
- The output of the command resembles the following example:
-
- ```bash
- kubectl get pvc -n trident
- NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
- anf-pvc Bound pvc-bffa315d-3f44-4770-86eb-c922f567a075 1Ti RWO azure-netapp-files 62s
- ```
-
-### Use the persistent volume
-
-After the PVC is created, a pod can be spun up to access the Azure NetApp Files volume. The following manifest can be used to define an NGINX pod that mounts the Azure NetApp Files volume created in the previous step. In this example, the volume is mounted at `/mnt/data`.
-
-1. Create a file named `anf-nginx-pod.yaml` and copy the following manifest:
-
- ```yml
- kind: Pod
- apiVersion: v1
- metadata:
- name: nginx-pod
- spec:
- containers:
- - name: nginx
- image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
- resources:
- requests:
- cpu: 100m
- memory: 128Mi
- limits:
- cpu: 250m
- memory: 256Mi
- volumeMounts:
- - mountPath: "/mnt/data"
- name: volume
- volumes:
- - name: volume
- persistentVolumeClaim:
- claimName: anf-pvc
- ```
-
-2. Create the pod using the [kubectl apply][kubectl-apply] command:
-
- ```bash
- kubectl apply -f anf-nginx-pod.yaml
- ```
-
- The output of the command resembles the following example:
-
- ```output
- pod/nginx-pod created
- ```
-
- Kubernetes has created a pod with the volume mounted and accessible within the `nginx` container at `/mnt/data`. You can confirm by checking the event logs for the pod using [kubectl describe][kubectl-describe] command:
-
- ```bash
- kubectl describe pod nginx-pod
- ```
-
- The output of the command resembles the following example:
-
- ```output
- [...]
- Volumes:
- volume:
- Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
- ClaimName: anf-pvc
- ReadOnly: false
- default-token-k7952:
- Type: Secret (a volume populated by a Secret)
- SecretName: default-token-k7952
- Optional: false
- [...]
- Events:
- Type Reason Age From Message
- - - - -
- Normal Scheduled 15s default-scheduler Successfully assigned trident/nginx-pod to brameshb-non-root-test
- Normal SuccessfulAttachVolume 15s attachdetach-controller AttachVolume.Attach succeeded for volume "pvc-bffa315d-3f44-4770-86eb-c922f567a075"