|
| 1 | +--- |
| 2 | +title: Enable Microsoft Entra ID token for Actionable Messages |
| 3 | +description: Learn how to enable Microsoft Entra ID tokens for Actionable Messages |
| 4 | +author: vermaanimesh |
| 5 | +ms.topic: how-to |
| 6 | +ms.service: outlook |
| 7 | +ms.subservice: o365-connectors |
| 8 | +ms.date: 11/17/2025 |
| 9 | +ms.author: vermaanimesh |
| 10 | +ms.localizationpriority: high |
| 11 | +--- |
| 12 | + |
| 13 | +# Enable Microsoft Entra ID token for Actionable Messages |
| 14 | + |
| 15 | +<!-- cSpell:ignore vermaanimesh --> |
| 16 | + |
| 17 | +> [!IMPORTANT] |
| 18 | +> Actionable Messages (AM) are moving from EAT (External Access Token) to Microsoft Entra ID token authentication. Partners using EAT tokens must update their integration to support AAD tokens for requests from the AM service. Starting November 21st 2025 we will **stop** accepting new registrations with EAT (External Access Token). |
| 19 | +
|
| 20 | +## Register an app in Azure |
| 21 | + |
| 22 | +> [!NOTE] |
| 23 | +> If you already have an app registration in Azure, skip to the next step. |
| 24 | +
|
| 25 | +1. Sign in to the Microsoft Entra admin center. |
| 26 | +1. If you have access to multiple tenants, use the Settings icon to switch to the desired tenant via **Directories + subscriptions**. |
| 27 | +1. Go to **Identity** > **Applications** > **App registrations** and select **New registration**. |
| 28 | +1. Enter a display name for your application. |
| 29 | +1. Specify who can use the application in the **Supported account types** section: |
| 30 | + - **Accounts in any organizational directory** (Any Microsoft Entra ID tenant - Multitenant): For partners doing a Global scope AM registration. |
| 31 | + - **Accounts in this organizational directory only:** For Single Tenant App (Org and test scope registration). |
| 32 | +1. Leave **Redirect URI (optional)** blank. |
| 33 | +1. Select **Register** to complete the registration. |
| 34 | + |
| 35 | +## Register a new AM provider |
| 36 | + |
| 37 | +- Register a new provider using Actionable Messages (office.com), or use the **Migrate to MSEntra** button on your existing registration to create a copy. |
| 38 | +- Fill in the **MsEntra Auth** section with: |
| 39 | + - **MsEntra Application ID** |
| 40 | + - **AppIdUri** (auto-generated; must be allowlisted in your app as shown in the next section). |
| 41 | + |
| 42 | + :::image type="content" source="images/enabling-entra-token-for-actionable-messages/new-provider.jpg" alt-text="A screenshot of the new provider form fields"::: |
| 43 | + |
| 44 | +- Approval and onboarding of the AM registration remain unchanged. |
| 45 | + |
| 46 | +> [!TIP] |
| 47 | +> Use this new registration to test the AAD token scenario end-to-end. Gradually move traffic to the new registration once validated. |
| 48 | +
|
| 49 | +## Expose an API and pre-authorize the Actions app |
| 50 | + |
| 51 | +1. Select the **Expose an API** option from left navigation pane of the registered app |
| 52 | +1. Add URI under the **Application ID URI** option. Use the **AppIdUri** generated in the provider registration. Example format: |
| 53 | +`api://auth-am-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` |
| 54 | + |
| 55 | + :::image type="content" source="images/enabling-entra-token-for-actionable-messages/expose-an-api.jpg" alt-text="A screenshot of the 'Expose an API' form in the Entra admin portal"::: |
| 56 | + |
| 57 | +1. Add the scope for this app under **Add a scope section** (e.g., Global.Test). |
| 58 | + |
| 59 | +1. Choose a value for **Who can consent?**. |
| 60 | + |
| 61 | + - **Admins and users:** Consent from either works. |
| 62 | + - **Admins only (Recommended):** Only admin approval works. |
| 63 | + |
| 64 | + Once the Admin has authorized, consent is for the whole tenant and won't be prompted again. |
| 65 | + |
| 66 | +1. Go to **Add a client application** and authorize Action app ID `48af08dc-f6d2-435f-b2a7-069abd99c086` to the scopes created above. |
| 67 | + |
| 68 | +## Validate the AAD token |
| 69 | + |
| 70 | +Upon receiving the token in the request from Actions service, partners should perform validation. For details on validating tokens, see [Access tokens in the Microsoft identity platform](/entra/identity-platform/access-tokens). |
| 71 | + |
| 72 | +There are also [code samples for Microsoft identity platform authentication and authorization](/entra/identity-platform/sample-v2-code?tabs=framework) for validation in your preferred language/framework. |
| 73 | + |
| 74 | +### Sample token |
| 75 | + |
| 76 | +```json |
| 77 | +{ |
| 78 | + "alg": "RS256", |
| 79 | + "kid": "27643737-6767-4678-9714-96485a53e23b", |
| 80 | + "typ": "JWT" |
| 81 | +}.{ |
| 82 | + "aud": "https://graph.microsoft.com/", |
| 83 | + "iss": "https://login.microsoftonline.com/1234567890", |
| 84 | + "iat": 1673495600, |
| 85 | + "nbf": 1673495600, |
| 86 | + "exp": 1673499200, |
| 87 | + "aio": "AWQAm/8TAAAAbIRXVv66AlGAbTpvmfbtyMHZVpuhGjjasLVHf73tIlZI6dtwBFJQFCXUTDLxNnopKxopumbIJAMd3LqIQ==", |
| 88 | + "azp": "1234567890-abcdefghijklmnopqrstuv", |
| 89 | + "amr": [ |
| 90 | + "pwd" |
| 91 | + ], |
| 92 | + "family_name": "Doe", |
| 93 | + "given_name": "John", |
| 94 | + "groups": [ |
| 95 | + "Admins", |
| 96 | + "Users" |
| 97 | + ], |
| 98 | + "preferred_username": "john.doe@contoso.com", |
| 99 | + "sub": "AUCeKGQXBnSqpWfTYEk0li8TyNul1QSuSxcPplBAwaQ", |
| 100 | + "tid": "1234567890", |
| 101 | + "uti": "yvEyycOza9zpyjmgkdDqA", |
| 102 | + "ver": "2.0" |
| 103 | +}.[Signature] |
| 104 | +``` |
| 105 | + |
| 106 | +## Get approval from admins |
| 107 | + |
| 108 | +For a Global scope actionable message registration to work in any tenant, the tenant admin must consent to the app hosting the target URL. Admins can grant consent using the [Actionable Email Developer Dashboard](https://outlook.office.com/connectors/oam/admin) page. |
| 109 | + |
| 110 | +1. Go to the Actionable Email Developer Dashboard and select the **Consent 3P Apps** button (top right). |
| 111 | + |
| 112 | + :::image type="content" source="images/enabling-entra-token-for-actionable-messages/consent-third-party-apps.png" alt-text="A screenshot of the Actionable Email Developer Dashboard showing the 'Consent 3P Apps' button"::: |
| 113 | + |
| 114 | +1. The Admin Consent Dashboard will open, listing all 3P providers. Apps that need consent show an **Approve** button. |
| 115 | + |
| 116 | + :::image type="content" source="images/enabling-entra-token-for-actionable-messages/actionable-message-dashboard.png" alt-text="AM Email Dashboard"::: |
| 117 | + |
| 118 | +1. Select a provider row to review details. |
| 119 | +1. Select **Approve** to trigger the consent flow. Sign in and review the requested permissions. |
| 120 | +1. Ensure **Consent on behalf of your organization** is selected for tenant-wide consent. |
| 121 | +1. Select **Accept** to grant consent. The Microsoft Entra app is now authorized in your tenant. The browser redirects back to the dashboard where the app status is **Approved**. |
| 122 | + |
| 123 | + :::image type="content" source="images/enabling-entra-token-for-actionable-messages/permission.png" alt-text="User permission screen"::: |
| 124 | + |
| 125 | +1. If status remains **Approving**, use the **Refresh** button to update. |
| 126 | + |
| 127 | +1. Use the search bar to find a provider by **Name, Provider ID,** or **Microsoft Entra ID**. |
| 128 | + |
| 129 | + :::image type="content" source="images/enabling-entra-token-for-actionable-messages/search-bar.png" alt-text="Search bar in AM portal"::: |
| 130 | + |
| 131 | +1. To remove consent, open Azure Portal and select **Enterprise Applications**. Search for the app's service principal, and delete it in **Properties**. |
| 132 | + |
| 133 | + :::image type="content" source="images/enabling-entra-token-for-actionable-messages/service-principal-azure-portal.png" alt-text="Azure portal screen"::: |
0 commit comments