Connect your app to Microsoft Azure Active Directory
There are different scenarios in which you might want to integrate with Microsoft Azure AD:
You want to let users into your application from an Azure AD you or your organization controls (e.g. employees in your company).
You want to let users coming from other companies' Azure ADs into your application. You may set up those external directories manually as different connections, or create a multi-tenant application that accepts new directories dynamically.
If you plan on allowing users to login using a Microsoft Azure Active Directory account, either from your company or from external directories, you must register your application through the Microsoft Azure portal. If you don't have a Microsoft Azure account, you can signup for free. You can access the Azure management portal from your Microsoft service, or visit https://manage.windowsazure.com and sign in to Azure using the global administrator account that was used to create the Office 365 organization.
This doc refers to the client steps to connect your client. If you are looking to manage authentication in your application, see Next Steps below.
1. Create a new application
Login to Microsoft Azure and choose Azure Active Directory from the sidebar.
Then under MANAGE, select App registrations.
Then click on the + ADD button to add a new application.
Enter a name for the application, select Web app/API as the Application Type, and for Sign-on URL enter your application URL.
2. Configure the permissions
Once the application has been created, you will have to configure the permissions. Click on the name of the application to open the Settings section.
Click Required permissions.
Then click on Windows Azure Active Directory to change the access levels.
The next step is to modify permissions so your app can read the directory. Under DELEGATED PERMISSIONS check next to Sign in and read user profile and Read directory data.
Click the SAVE button at the top to save these changes.
3. Allowing access from external organizations (optional)
If you want to allow users from external organizations (i.e. other Azure directories) to log in, you will need to enable the Multi-Tenant flag for this application. In the Settings section, click Properties. Locate the Multi-tenanted toggle at the bottom and select Yes. Finally click the SAVE button at the top to save these changes.
4. Create the key
Next you will need to create a key which will be used as the Client Secret in the Auth0 connection. Click on Keys from the Settings menu.
Enter a name for the key and choose the desired duration.
Click on Save and the key will be displayed. Make sure to copy the value of this key before leaving this screen, otherwise you may need to create a new key. This value is used as the Client Secret in the next step.
5. Configure Reply URLs
Next you need to ensure that your Auth0 callback URL is listed in allowed reply URLs for the created application. Navigate to Azure Active Directory -> Apps registrations and select your app. Then click Settings -> Reply URLs and add:
It has the following format
region is omitted if the Auth0 account was created in the US)
Without this step the App consent page will return a "Bad request" error. The fine print in the footer of this error page can be used to identify the exact tenant name and missing callback url.
6. Copy the Client ID and Client Secret to Auth0
Login to your Auth0 Dashboard, and select the Connections > Enterprise menu option. Select Windows Azure AD. In the Configuration tab you will configure global settings, including data about the app registration you just created in Auth0.
For the Client ID, this value is stored as the Application ID in Azure AD.
For the Client Secret use the value that was shown for the key when you created it in the previous step.
Click SAVE when you have finished.
7. Create Connections
After configuring the global settings that link Auth0 to the app registration in Azure AD, you will create one or more connections. Go to Connections->Enterprise and click on the CREATE NEW button next to Microsoft Azure AD.
Set the name of the Microsoft Azure AD Domain and under Domain Aliases put any email domain that corresponds to the connection.
Multi-tenant applications: if you are creating multi-tenant applications where you want to dynamically accept users from new directories, you will setup only one connection and enable the Use Common Endpoint toggle. By enabling this flag, Auth0 will redirect users to Azure's common login endpoint, and Azure itself will be doing Home Realm Discovery based on the domain of the email address.
Then choose the protocol. Open ID Connect is the default, and should be selected in the majority of cases. This is independent of the protocol that your application will use to connect to Auth0.
Click the SAVE button. Auth0 will provide you with an URL that you will need to give to the Azure AD administrator. This URL will allow the administrator to give consent to the application so that users can log in.
Congratulations! You are now ready to accept Microsoft Azure AD users.
Make sure you are in the desired directory to add you application. If you do not have an existing directory you will need to create one.
When granting access, make sure to use an Incognito/InPrivate window and a Global Administrator user.
If you get Access cannot be granted to this service because the service listing is not properly configured by the publisher, try enabling Multi Tenanted in the Windows Azure AD application under Settings -> Properties.
Signing Key Rollover in Azure Active Directory
Signing keys are used by the identity provider to sign the authentication token it issues, and by the consumer application (Auth0 in this case) to validate the authenticity of the generated token.
For security purposes, Azure AD’s signing key rolls on a periodic basis. If this happens, you do not need to take any action. Auth0 will use the new key automatically.
Now that you have a working connection, the next step is to configure your application to use it. You can follow our step-by-step quickstarts or use directly our libraries and API.