Add Microsoft Azure Entra ID as a social connection
You will learn the following:
- Use Microsoft Azure Entra ID to authenticate users with OAuth.
- Protect your app from the nOAuth exploit.
Before you start
Enabling OAuth with Microsoft Azure Entra ID (formerly Active Directory) allows your users to sign up and sign in to your Clerk app with their Microsoft account.
Configure for your development instance
For development instances, Clerk uses preconfigured shared OAuth credentials and redirect URIs—no other configuration is needed.
- In the Clerk Dashboard, navigate to the SSO Connections page.
- Select Add connection and select For all users.
- In the Choose provider dropdown, select Microsoft.
- Select Add connection.
Configure for your production instance
For production instances, you must provide custom credentials, which involves generating your own Client ID and Client Secret using your Microsoft Entra ID account.
To make the setup process easier, it's recommended to keep two browser tabs open: one for your Clerk Dashboard and one for your Microsoft Azure portal.
- On the homepage of the Microsoft Azure portal, in the Azure services section, select Microsoft Entra ID.
- In the sidebar, open the Manage dropdown and select App registrations.
- Select New Registration. You'll be redirected to the Register an application page.
- Complete the form as follows:
- Under Name, enter your app name.
- Under Supported account types, select Accounts in any organizational directory (Any Microsoft Entra ID tenant – Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox).
- Under Redirect URI (Optional), select Web.
- Select Register to submit the form.
Get your client ID and client secret
Once your Microsoft Entra ID app is created, or once you select your app from the Microsoft Azure portal, you'll be redirected to its Overview.
- From your app's overview, save the Application (client) ID somewhere secure. You'll need it to connect your Microsoft Entra ID app to your Clerk app.
- Under Client credentials, select Add a certificate or secret to generate a Client Secret. You'll be redirected to the Certificate & secrets page.
- Select New client secret. In the modal that opens, enter a description and set an expiration time for your secret.
- Save the new client secret's Value somewhere secure. You'll add this and your client ID to your Clerk app later. Keep this page open.
Connect your Entra ID app and get your redirect URI
- In the Clerk Dashboard, navigate to the SSO Connections page.
- Select Add connection and select For all users.
- In the Choose provider dropdown, select Microsoft.
- Ensure that both Enable for sign-up and sign-in and Use custom credentials are toggled on. Then:
- Under Client ID, paste the value you copied from Application (client) ID in the Microsoft Azure portal.
- Under Client Secret, paste the client secret value you generated.
- Save the Redirect URI somewhere secure.
- Select Add connection.
Enable OpenID
To connect your Clerk app to your Microsoft app, set the Redirect URI in your Microsoft Azure portal.
- Navigate back to the Microsoft Azure portal.
- In the sidebar, open the Manage dropdown and select Authentication.
- Select Add a platform.
- Select Web.
- In the Redirect URIs field and the Front-channel logout URL field, paste the Redirect URI you copied from the Clerk Dashboard.
- Under Implicit grant and hybrid flows, check both Access tokens and ID tokens.
- Select Configure to save the changes.
Test your OAuth
The simplest way to test your OAuth is to visit your Clerk app's Account Portal, which is available for all Clerk apps out-of-the-box.
- In the Clerk Dashboard, navigate to the Account Portal page.
- Next to the Sign-in URL, select Visit. The URL should resemble:
- For development –
https://your-domain.accounts.dev/sign-in
- For production –
https://accounts.your-domain.com/sign-in
- Sign in with your Microsoft account.
Secure your app against the nOAuth vulnerability
nOAuth is an exploit in Microsoft Entra ID OAuth apps that can lead to account takeovers via email address spoofing. Clerk mitigates this risk by enforcing stricter checks on verified email addresses.
For further security, Microsoft offers an optional xms_edov
claim, which provides additional context to determine whether the returned email is verified.
To enable this optional claim, you must:
- In the Microsoft Azure portal, navigate to your app.
- In the sidebar, select Token configuration.
- Select Add optional claim.
- For the Token type, select ID. Then, in the table that opens, enable the
email
andxms_pdl
claims. - At the bottom of the modal, select Add. A new modal will prompt you to turn on the Microsoft Graph email permission. Enable it, then select Add to complete the form.
- Repeat the previous steps for Token type, but select Access instead of ID. The Optional claims list should now show two claims for
email
and two forxms_pdl
: one each for ID and Access. - In the sidebar, go to Manifest.
- In the text editor, search for
"acceptMappedClaims"
and set its value fromnull
totrue
. - Search for
"optionalClaims"
, where you'll find theidToken
andaccessToken
arrays. Each array has an object with the namexms_pdl
. Change the name toxms_edov
. - At the top of the page, select Save.
- In the sidebar, navigate back to Token configuration and confirm that the Optional claims list includes two claims for
email
and two forxms_edov
: one each for ID and Access.
With these steps complete, Microsoft will send the xms_edov
claim in the token, which Clerk will use to determine whether the email is verified, even when used with Microsoft Entra ID.
Limitations
- Currently, Clerk supports only the
common
tenant type, which allows sign-ins both from organization members and public Microsoft users.- The option to selecting the desired tenant type (
common
,organizations
,consumers
or specific tenant ID) will be available in an upcoming version of Clerk.
- The option to selecting the desired tenant type (
- Only credentials of type
secret
are supported (not thecertificate
type).
Feedback
Last updated on