> ## Documentation Index
> Fetch the complete documentation index at: https://docs.altoura.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Azure App Registration

> Register a multitenant Microsoft Entra ID application for the Altoura Teams app — expose the API, authorize Teams clients, grant Microsoft Graph and ACS permissions, and create a client secret.

This guide walks through registering the multitenant Microsoft Entra ID application used by the Altoura Teams integration. It covers creating the registration, exposing an API with the `access_as_user` scope, authorizing trusted client applications, granting the required Microsoft Graph and Azure Communication Services (ACS) permissions, and creating a client secret.

<Note>
  **Which app is this?** This registration is the multitenant Entra ID app used only for Teams meeting verification (Teams SSO) and the associated Microsoft Graph access. It is separate from the single-tenant Entra ID app that handles sign-in to the Altoura Frontline application itself — see [Data Security & FAQ](/frontline/administration/remote-expert-it-admin/data-security) for details.
</Note>

<Note>
  Replace placeholder values such as `<clientId>` and `<your entraid name>` with the values that match your environment. For customer-hosted deployments, deploy the [Azure Communication Services (ACS) resource](/frontline/administration/remote-expert-it-admin/deploy-acs-resource) separately.
</Note>

<Steps>
  <Step title="Create a New App Registration">
    In the Azure portal, navigate to **Microsoft Entra ID → App registrations** and click **+ New registration**.

    <Frame>
      <img src="https://mintcdn.com/altoura-785c3552/HhZQY2b4kA6oBKtL/frontline/images/overview/administration/azure-app-reg-step-01-new-registration.png?fit=max&auto=format&n=HhZQY2b4kA6oBKtL&q=85&s=ae7fdbc2fcbea1f406ab0ca95e61ce4c" alt="Azure portal App registrations page with the New registration button highlighted" noZoom width="2048" height="834" data-path="frontline/images/overview/administration/azure-app-reg-step-01-new-registration.png" />
    </Frame>
  </Step>

  <Step title="Configure Name, Account Types, and Redirect URI">
    Fill in the registration form, then click **Register**:

    * **Name:** Teams Multi Tenant App
    * **Supported account types:** Multiple Entra ID tenants
      * Select **Allow all tenants**
    * **Redirect URI Platform:** Web
    * **Redirect URI URL:** `https://portal.altoura.com/user/auth/callback`

    <Frame>
      <img src="https://mintcdn.com/altoura-785c3552/HhZQY2b4kA6oBKtL/frontline/images/overview/administration/azure-app-reg-step-02-register-application-form.png?fit=max&auto=format&n=HhZQY2b4kA6oBKtL&q=85&s=b9141bb55ca8d61663a09574ffac93e4" alt="Register an application form with name, supported account types, and redirect URI" noZoom width="1782" height="1582" data-path="frontline/images/overview/administration/azure-app-reg-step-02-register-application-form.png" />
    </Frame>
  </Step>

  <Step title="Add an Application ID URI">
    Open the newly created app registration, go to **Expose an API**, and click **Add** next to **Application ID URI**.

    <Frame>
      <img src="https://mintcdn.com/altoura-785c3552/HhZQY2b4kA6oBKtL/frontline/images/overview/administration/azure-app-reg-step-03-expose-api-add-application-id-uri.png?fit=max&auto=format&n=HhZQY2b4kA6oBKtL&q=85&s=0118523cfccbc609cbe54d045c94e2b8" alt="Expose an API page with the Add link next to Application ID URI" noZoom width="2048" height="932" data-path="frontline/images/overview/administration/azure-app-reg-step-03-expose-api-add-application-id-uri.png" />
    </Frame>
  </Step>

  <Step title="Set the Application ID URI">
    Set the URI so the Remote Expert web app domain (`remote-expert-web.altoura.com`) sits between `api://` and the client ID, then click **Save**:

    ```
    api://remote-expert-web.altoura.com/<clientId>
    ```

    <Frame>
      <img src="https://mintcdn.com/altoura-785c3552/HhZQY2b4kA6oBKtL/frontline/images/overview/administration/azure-app-reg-step-04-edit-application-id-uri.png?fit=max&auto=format&n=HhZQY2b4kA6oBKtL&q=85&s=74998f0951a0a056059fca0fac6cabe5" alt="Editing the Application ID URI with the Remote Expert web app domain" noZoom width="1146" height="1650" data-path="frontline/images/overview/administration/azure-app-reg-step-04-edit-application-id-uri.png" />
    </Frame>
  </Step>

  <Step title="Add a Scope">
    On the **Expose an API** page, click **+ Add a scope**.

    <Frame>
      <img src="https://mintcdn.com/altoura-785c3552/HhZQY2b4kA6oBKtL/frontline/images/overview/administration/azure-app-reg-step-05-add-a-scope.png?fit=max&auto=format&n=HhZQY2b4kA6oBKtL&q=85&s=21d8ce583584979f576c4b6a6b35e7bd" alt="Expose an API page with the Add a scope button" noZoom width="2048" height="986" data-path="frontline/images/overview/administration/azure-app-reg-step-05-add-a-scope.png" />
    </Frame>
  </Step>

  <Step title="Define the access_as_user Scope">
    Fill in the scope details and click **Add scope**:

    | Field                      | Value            |
    | -------------------------- | ---------------- |
    | Scope name                 | `access_as_user` |
    | Who can consent?           | Admins and users |
    | Admin consent display name | Access as user   |
    | Admin consent description  | Access as user   |
    | User consent display name  | Access as user   |
    | State                      | Enabled          |

    <Frame>
      <img src="https://mintcdn.com/altoura-785c3552/HhZQY2b4kA6oBKtL/frontline/images/overview/administration/azure-app-reg-step-06-add-scope-form.png?fit=max&auto=format&n=HhZQY2b4kA6oBKtL&q=85&s=3f5941efc8f3bb4c04eab9015f666344" alt="Add a scope form filled in for the access_as_user scope" noZoom width="1186" height="1640" data-path="frontline/images/overview/administration/azure-app-reg-step-06-add-scope-form.png" />
    </Frame>
  </Step>

  <Step title="Add a Client Application">
    Still on the **Expose an API** page, click **+ Add a client application**.

    <Frame>
      <img src="https://mintcdn.com/altoura-785c3552/HhZQY2b4kA6oBKtL/frontline/images/overview/administration/azure-app-reg-step-07-add-a-client-application.png?fit=max&auto=format&n=HhZQY2b4kA6oBKtL&q=85&s=f11fabbbc8e091eb9a570609c96abde2" alt="Expose an API page with the Add a client application button" noZoom width="2048" height="858" data-path="frontline/images/overview/administration/azure-app-reg-step-07-add-a-client-application.png" />
    </Frame>
  </Step>

  <Step title="Authorize the Trusted Client Applications">
    Add each Microsoft Teams client ID, check the box next to the **access\_as\_user** scope, and click **Add application**. Repeat for both:

    * `5e3ce6c0-2b1f-4285-8d4b-75ee78787346` (Teams web)
    * `1fec8e78-bce4-4aaf-ab1b-5451cc387264` (Teams desktop / mobile)

    <Frame>
      <img src="https://mintcdn.com/altoura-785c3552/HhZQY2b4kA6oBKtL/frontline/images/overview/administration/azure-app-reg-step-08-add-client-application-client-id.png?fit=max&auto=format&n=HhZQY2b4kA6oBKtL&q=85&s=f6fde29e319e7519741551ec503cc1fc" alt="Add a client application panel with a Client ID entered and the authorized scope checked" noZoom width="1166" height="1636" data-path="frontline/images/overview/administration/azure-app-reg-step-08-add-client-application-client-id.png" />
    </Frame>
  </Step>

  <Step title="Open API Permissions">
    In the left menu, click **API permissions**, then click **+ Add a permission**.

    <Frame>
      <img src="https://mintcdn.com/altoura-785c3552/HhZQY2b4kA6oBKtL/frontline/images/overview/administration/azure-app-reg-step-09-api-permissions-add-permission.png?fit=max&auto=format&n=HhZQY2b4kA6oBKtL&q=85&s=1e4e83a6482f21f0b990905667aa73b5" alt="API permissions page with the Add a permission button" noZoom width="2048" height="814" data-path="frontline/images/overview/administration/azure-app-reg-step-09-api-permissions-add-permission.png" />
    </Frame>
  </Step>

  <Step title="Select Microsoft Graph">
    In the **Request API permissions** pane, select **Microsoft Graph**.

    <Frame>
      <img src="https://mintcdn.com/altoura-785c3552/HhZQY2b4kA6oBKtL/frontline/images/overview/administration/azure-app-reg-step-10-select-microsoft-graph.png?fit=max&auto=format&n=HhZQY2b4kA6oBKtL&q=85&s=6b23c31399a548ccde04196e1c468df7" alt="Request API permissions pane with Microsoft Graph selected" noZoom width="2048" height="814" data-path="frontline/images/overview/administration/azure-app-reg-step-10-select-microsoft-graph.png" />
    </Frame>
  </Step>

  <Step title="Choose Delegated Permissions">
    Select **Delegated permissions**.

    <Frame>
      <img src="https://mintcdn.com/altoura-785c3552/HhZQY2b4kA6oBKtL/frontline/images/overview/administration/azure-app-reg-step-11-select-delegated-permissions.png?fit=max&auto=format&n=HhZQY2b4kA6oBKtL&q=85&s=5bdf33040d3731ad7e74a090d28edd8a" alt="Microsoft Graph permission type selection with Delegated permissions chosen" noZoom width="2048" height="814" data-path="frontline/images/overview/administration/azure-app-reg-step-11-select-delegated-permissions.png" />
    </Frame>
  </Step>

  <Step title="Select the Required Microsoft Graph Permissions">
    Search for and select each permission listed below. **All are delegated permissions.**

    | Permission                                | Type      | Description                                       | Admin consent required |
    | ----------------------------------------- | --------- | ------------------------------------------------- | ---------------------- |
    | Chat.ReadWrite                            | Delegated | Read and write the user's chat messages           | No                     |
    | Contacts.Read                             | Delegated | Read the user's contacts (expert search)          | No                     |
    | offline\_access                           | Delegated | Maintain access / silent token renewal            | No                     |
    | OnlineMeetings.ReadWrite                  | Delegated | Read and create the user's online meetings        | No                     |
    | openid                                    | Delegated | Sign the user in                                  | No                     |
    | profile                                   | Delegated | View the user's basic profile                     | No                     |
    | TeamsAppInstallation.ReadWriteSelfForChat | Delegated | Allow the Teams app to manage itself in chats     | Yes                    |
    | User.Read                                 | Delegated | Sign in and read the user's profile               | No                     |
    | User.Read.All                             | Delegated | Read all users' full profiles (as signed-in user) | Yes                    |

    <Note>
      An application-level `User.Read.All` is **not required** and is not used by the Remote Expert integration. If a screenshot shows it, it can be omitted.
    </Note>

    <Frame>
      <img src="https://mintcdn.com/altoura-785c3552/HhZQY2b4kA6oBKtL/frontline/images/overview/administration/azure-app-reg-step-12-select-microsoft-graph-permissions.png?fit=max&auto=format&n=HhZQY2b4kA6oBKtL&q=85&s=ee021b3d52d2abe76d7ac0ec10007132" alt="Selecting the required Microsoft Graph permissions" noZoom width="2048" height="814" data-path="frontline/images/overview/administration/azure-app-reg-step-12-select-microsoft-graph-permissions.png" />
    </Frame>
  </Step>

  <Step title="Add the Selected Permissions">
    Click **Add permissions** to add all the selected Microsoft Graph permissions to the configured permissions list.

    <Frame>
      <img src="https://mintcdn.com/altoura-785c3552/HhZQY2b4kA6oBKtL/frontline/images/overview/administration/azure-app-reg-step-13-configured-microsoft-graph-permissions.png?fit=max&auto=format&n=HhZQY2b4kA6oBKtL&q=85&s=78ae080d59778411ddf270d6a64c9892" alt="Configured Microsoft Graph permissions list" noZoom width="2048" height="814" data-path="frontline/images/overview/administration/azure-app-reg-step-13-configured-microsoft-graph-permissions.png" />
    </Frame>
  </Step>

  <Step title="Add Azure Communication Services Permission">
    Click **+ Add a permission** again and this time select **Azure Communication Services**.

    <Frame>
      <img src="https://mintcdn.com/altoura-785c3552/HhZQY2b4kA6oBKtL/frontline/images/overview/administration/azure-app-reg-step-14-select-azure-communication-services.png?fit=max&auto=format&n=HhZQY2b4kA6oBKtL&q=85&s=0f0d991d70d9b1be223f4cf506866b63" alt="Request API permissions pane with Azure Communication Services selected" noZoom width="2048" height="948" data-path="frontline/images/overview/administration/azure-app-reg-step-14-select-azure-communication-services.png" />
    </Frame>
  </Step>

  <Step title="Select Teams ACS Permissions">
    Under **Delegated permissions**, select:

    * **Teams.ManageCalls** — Manage calls in Teams (real-time session)
    * **Teams.ManageChats** — Manage chats in Teams (real-time session)

    Click **Add permissions**.

    <Frame>
      <img src="https://mintcdn.com/altoura-785c3552/HhZQY2b4kA6oBKtL/frontline/images/overview/administration/azure-app-reg-step-15-teams-managecalls-managechats.png?fit=max&auto=format&n=HhZQY2b4kA6oBKtL&q=85&s=8c06419e31ec79970ed098c7c3f253d1" alt="Azure Communication Services delegated permissions Teams.ManageCalls and Teams.ManageChats" noZoom width="1620" height="1634" data-path="frontline/images/overview/administration/azure-app-reg-step-15-teams-managecalls-managechats.png" />
    </Frame>
  </Step>

  <Step title="Grant Admin Consent">
    Back on the **API permissions** page, click **Grant admin consent for `<your entraid name>`** to grant tenant-wide admin consent for all the configured permissions.

    All permissions should now show **Granted** under the **Status** column.

    <Frame>
      <img src="https://mintcdn.com/altoura-785c3552/HhZQY2b4kA6oBKtL/frontline/images/overview/administration/azure-app-reg-step-16-grant-admin-consent.png?fit=max&auto=format&n=HhZQY2b4kA6oBKtL&q=85&s=6b8f6a9b3b9d879dbfdaaada5a4a66f4" alt="API permissions page after granting admin consent, with all permissions showing Granted" noZoom width="2048" height="814" data-path="frontline/images/overview/administration/azure-app-reg-step-16-grant-admin-consent.png" />
    </Frame>
  </Step>

  <Step title="Open Certificates & Secrets">
    In the left menu, click **Certificates & secrets**, switch to the **Client secrets** tab, and click **+ New client secret**.

    <Frame>
      <img src="https://mintcdn.com/altoura-785c3552/HhZQY2b4kA6oBKtL/frontline/images/overview/administration/azure-app-reg-step-17-certificates-secrets-new-client-secret.png?fit=max&auto=format&n=HhZQY2b4kA6oBKtL&q=85&s=1a91f01a6da942604868947e55770c5c" alt="Certificates & secrets page with the Client secrets tab and New client secret button" noZoom width="1960" height="788" data-path="frontline/images/overview/administration/azure-app-reg-step-17-certificates-secrets-new-client-secret.png" />
    </Frame>
  </Step>

  <Step title="Create the Client Secret">
    In the **Add a client secret** panel, provide a description, choose an expiry duration, and click **Add**.

    | Field       | Value                                                  |
    | ----------- | ------------------------------------------------------ |
    | Description | Teams secret                                           |
    | Expires     | Recommended: 180 days (6 months) or as per your policy |

    <Frame>
      <img src="https://mintcdn.com/altoura-785c3552/HhZQY2b4kA6oBKtL/frontline/images/overview/administration/azure-app-reg-step-18-add-a-client-secret.png?fit=max&auto=format&n=HhZQY2b4kA6oBKtL&q=85&s=41d39f9e304a5e3f9f1e7bd621e0eb52" alt="Add a client secret panel with a description and expiry duration" noZoom width="1140" height="1634" data-path="frontline/images/overview/administration/azure-app-reg-step-18-add-a-client-secret.png" />
    </Frame>
  </Step>

  <Step title="Copy the Secret Value">
    Copy the secret **Value** immediately — it is shown only once and cannot be retrieved later. Store it securely (for example, in Key Vault).

    Altoura will provide a secure, time-limited sharing link (restricted access, one-time or limited viewing) for you to submit the value — never send it via plain email or chat.

    <Warning>
      If you navigate away from this page without copying the secret, you will need to delete it and create a new one.
    </Warning>

    <Frame>
      <img src="https://mintcdn.com/altoura-785c3552/HhZQY2b4kA6oBKtL/frontline/images/overview/administration/azure-app-reg-step-19-copy-client-secret-value.png?fit=max&auto=format&n=HhZQY2b4kA6oBKtL&q=85&s=6f38493a0ece8431510981ff79164490" alt="Client secret created, with the secret Value ready to copy" noZoom width="2024" height="438" data-path="frontline/images/overview/administration/azure-app-reg-step-19-copy-client-secret-value.png" />
    </Frame>
  </Step>
</Steps>

## Summary

After completing all steps, the app registration will have:

* A multitenant configuration with the correct Redirect URI.
* An Application ID URI of the form `api://remote-expert-web.altoura.com/<clientId>`.
* An exposed `access_as_user` scope.
* Two authorized Teams client applications.
* Delegated Microsoft Graph permissions for chat, contacts, meetings, profile, and Teams app installation.
* Azure Communication Services delegated permissions `Teams.ManageCalls` and `Teams.ManageChats`.
* Admin consent granted tenant-wide.
* A client secret value stored securely.

Next, [share the required details with Altoura](/frontline/administration/remote-expert-it-admin/share-details-with-altoura) so they can generate your tenant-specific Teams app package.
