Skip to content

Managed Identity Authentication

This recipe demonstrates how to authenticate with Azure Communication Services (ACS) using Azure Managed Identities with the JavaScript SDK.

This recipe walks these steps in order:

flowchart TD
    START["Managed Identity Authentication"]
    N1["Prerequisites"]
    N2["DefaultAzureCredential with ACS"]
    N3["Client Examples"]
    START --> N1
    N1 --> N2
    N2 --> N3

Prerequisites

  • Azure Managed Identity enabled on your compute resource.
  • Appropriate RBAC roles assigned (e.g., Cognitive Services User).

DefaultAzureCredential with ACS

The @azure/identity package provides the DefaultAzureCredential class.

npm install @azure/identity

System-Assigned Managed Identity

const { CommunicationIdentityClient } = require("@azure/communication-identity");
const { DefaultAzureCredential } = require("@azure/identity");

// Get the endpoint from an environment variable
const endpoint = process.env.COMMUNICATION_SERVICES_ENDPOINT;

// Initialize the client
const client = new CommunicationIdentityClient(endpoint, new DefaultAzureCredential());

async function main() {
  const user = await client.createUser();
  console.log(`Created user with managed identity: ${user.communicationUserId}`);
}

main();

User-Assigned Managed Identity

const { CommunicationIdentityClient } = require("@azure/communication-identity");
const { DefaultAzureCredential } = require("@azure/identity");

const endpoint = process.env.COMMUNICATION_SERVICES_ENDPOINT;
const userAssignedClientId = "<your-user-assigned-identity-client-id>";

// Specify the user-assigned identity client ID
const credential = new DefaultAzureCredential({
  managedIdentityClientId: userAssignedClientId
});

const client = new CommunicationIdentityClient(endpoint, credential);

Client Examples

SMS Client

const { SmsClient } = require("@azure/communication-sms");
const { DefaultAzureCredential } = require("@azure/identity");

const endpoint = process.env.COMMUNICATION_SERVICES_ENDPOINT;
const smsClient = new SmsClient(endpoint, new DefaultAzureCredential());

Email Client

const { EmailClient } = require("@azure/communication-email");
const { DefaultAzureCredential } = require("@azure/identity");

const endpoint = process.env.COMMUNICATION_SERVICES_ENDPOINT;
const emailClient = new EmailClient(endpoint, new DefaultAzureCredential());

See Also

Sources