다음을 통해 공유


빠른 시작: Microsoft Entra ID를 사용한 인증

Microsoft Entra ID를 사용하여 Azure Communication Services를 시작하세요. Communication Services ID 및 SMS SDK는 Microsoft Entra 인증을 지원합니다.

이 빠른 시작에서는 Active Directory를 지원하는 Azure 환경에서 ID 및 SMS SDK에 대한 액세스 권한을 부여하는 방법을 보여 줍니다. 또한 작업에 대한 서비스 주체를 만들어 개발 환경에서 코드를 테스트하는 방법을 설명합니다.

필수 조건

추가 필수 구성 요소

설정

다른 Azure 리소스에 Active Directory를 사용하는 경우 관리 ID를 사용해야 합니다. Azure 리소스의 관리 ID를 사용하도록 설정하는 방법을 알아보려면 다음 문서 중 하나를 참조하세요.

개발 환경에서 등록된 애플리케이션 인증

개발 환경에서 웹 브라우저를 통한 Single Sign-On 또는 로그인을 지원하지 않는 경우 등록된 애플리케이션을 사용하여 개발 환경에서 인증할 수 있습니다.

Microsoft Entra 등록 애플리케이션 만들기

Azure CLI에서 등록된 애플리케이션을 만들려면 작업을 수행하려는 Azure 계정에 로그인해야 합니다. 해당 작업을 하기 위해 az login 명령을 사용하여 브라우저에 자격 증명을 입력합니다. CLI에서 Azure 계정에 로그인한 후에는 az ad sp create-for-rbac 명령을 호출하여 등록된 애플리케이션과 서비스 주체를 만들 수 있습니다.

다음 예제에서는 Azure CLI를 사용하여 새 등록된 애플리케이션을 만듭니다.

az ad sp create-for-rbac --name <application-name> --role Contributor --scopes /subscriptions/<subscription-id>

az ad sp create-for-rbac 명령은 JSON 형식으로 서비스 주체 속성 목록을 반환합니다. 이러한 값을 복사하여 다음 단계에서 필요한 환경 변수를 만드는 데 사용할 수 있습니다.

{
    "appId": "generated-app-ID",
    "displayName": "service-principal-name",
    "name": "http://service-principal-uri",
    "password": "generated-password",
    "tenant": "tenant-ID"
}

Important

Azure 역할 할당을 전파하는 데 몇 분 정도 걸릴 수 있습니다.

환경 변수 설정

Azure ID SDK는 런타임의 세 가지 환경 변수에서 값을 읽어 애플리케이션을 인증합니다. 다음 표에서는 각 환경 변수에 대해 설정할 값을 설명합니다.

환경 변수
AZURE_CLIENT_ID 생성된 JSON의 appId
AZURE_TENANT_ID 생성된 JSON의 tenant
AZURE_CLIENT_SECRET 생성된 JSON의 password

Important

환경 변수를 설정한 후 콘솔 창을 닫았다가 다시 엽니다. Visual Studio 또는 다른 개발 환경을 사용하는 경우 새 환경 변수를 등록하기 위해 다시 시작해야 할 수 있습니다.

이러한 변수가 설정되면 코드에서 DefaultAzureCredential 개체를 사용하여 선택한 서비스 클라이언트에 인증할 수 있습니다.

참고 항목

GitHub에서 이 빠른 시작에 대한 최종 코드 칮기

설정

새 C# 애플리케이션 만들기

콘솔 창(예: cmd, PowerShell 또는 Bash)에서 dotnet new 명령을 사용하여 ActiveDirectoryQuickstart라는 새 콘솔 앱을 만듭니다. 이 명령은 Program.cs라는 단일 소스 파일을 사용하여 간단한 "Hello World" C# 프로젝트를 만듭니다.

dotnet new console -o ActiveDirectoryAuthenticationQuickstart

디렉터리를 새로 만든 앱 폴더로 변경하고 dotnet build 명령을 사용하여 애플리케이션을 컴파일합니다.

cd ActiveDirectoryAuthenticationQuickstart
dotnet build

SDK 패키지 설치

dotnet add package Azure.Communication.Identity
dotnet add package Azure.Communication.Sms
dotnet add package Azure.Identity

SDK 패키지 사용

다음 using 지시문을 Program.cs에 추가하여 Azure ID 및 Azure Storage SDK를 사용합니다.

using Azure.Identity;
using Azure.Communication.Identity;
using Azure.Communication.Sms;
using Azure.Core;
using Azure;

DefaultAzureCredential 만들기

이 빠른 시작에서는 DefaultAzureCredential을 사용합니다. 이 자격 증명은 프로덕션 환경과 개발 환경에 적합합니다. 각 작업에 필요하므로 Program.cs 클래스 내에서 만들겠습니다. 파일의 맨 위에 다음을 추가합니다.

private DefaultAzureCredential credential = new DefaultAzureCredential();

서비스 주체를 사용하여 토큰 발급

이제 생성된 자격 증명을 사용하는 코드를 추가하여 VoIP 액세스 토큰을 발급합니다. 나중에 이 코드를 호출합니다.

public AccessToken CreateIdentityAndGetTokenAsync(Uri resourceEndpoint)
{
    var client = new CommunicationIdentityClient(resourceEndpoint, this.credential);
    var result = client.CreateUserAndToken(scopes: new[] { CommunicationTokenScope.VoIP });
    var (user, token) = response.Value;
    return token;
}

서비스 주체와 SMS 보내기

서비스 주체를 사용하는 또 다른 예로, 동일한 자격 증명을 사용하여 SMS를 보내는 다음 코드를 추가합니다.

public SmsSendResult SendSms(Uri resourceEndpoint, string from, string to, string message)
{
    SmsClient smsClient = new SmsClient(resourceEndpoint, this.credential);
    SmsSendResult sendResult = smsClient.Send(
            from: from,
            to: to,
            message: message,
            new SmsSendOptions(enableDeliveryReport: true) // optional
        );

    return sendResult;
}

Main 메서드 쓰기

Program.cs에는 이미 Main 메서드가 있어야 합니다. 이전에 만든 코드를 호출하여 서비스 주체를 사용하는 방법을 보여 주는 코드를 추가해 보겠습니다.

static void Main(string[] args)
{
    // You can find your endpoint and access key from your resource in the Azure portal
    // e.g. "https://<RESOURCE_NAME>.communication.azure.com";
    Uri endpoint = new("https://<RESOURCENAME>.communication.azure.com/");

    // We need an instance of the program class to use within this method.
    Program instance = new();

    Console.WriteLine("Retrieving new Access Token, using Service Principals");
    AccessToken response = instance.CreateIdentityAndGetTokenAsync(endpoint);
    Console.WriteLine($"Retrieved Access Token: {response.Token}");

    Console.WriteLine("Sending SMS using Service Principals");

    // You will need a phone number from your resource to send an SMS.
    SmsSendResult result = instance.SendSms(endpoint, "<Your Azure Communication Services Phone Number>", "<The Phone Number you'd like to send the SMS to.>", "Hello from using Service Principals");
    Console.WriteLine($"Sms id: {result.MessageId}");
    Console.WriteLine($"Send Result Successful: {result.Successful}");
}

최종 Program.cs 파일은 다음과 같이 표시됩니다.

class Program
     {
          private DefaultAzureCredential credential = new DefaultAzureCredential();
          static void Main(string[] args)
          {
               // You can find your endpoint and access key from your resource in the Azure portal
               // e.g. "https://<RESOURCE_NAME>.communication.azure.com";
               Uri endpoint = new("https://acstestingrifox.communication.azure.com/");

               // We need an instance of the program class to use within this method.
               Program instance = new();

               Console.WriteLine("Retrieving new Access Token, using Service Principals");
               AccessToken response = instance.CreateIdentityAndGetTokenAsync(endpoint);
               Console.WriteLine($"Retrieved Access Token: {response.Token}");

               Console.WriteLine("Sending SMS using Service Principals");

               // You will need a phone number from your resource to send an SMS.
               SmsSendResult result = instance.SendSms(endpoint, "<Your Azure Communication Services Phone Number>", "<The Phone Number you'd like to send the SMS to.>", "Hello from Service Principals");
               Console.WriteLine($"Sms id: {result.MessageId}");
               Console.WriteLine($"Send Result Successful: {result.Successful}");
          }
          public AccessToken CreateIdentityAndGetTokenAsync(Uri resourceEndpoint)
          {
               var client = new CommunicationIdentityClient(resourceEndpoint, this.credential);
               var result = client.CreateUserAndToken(scopes: new[] { CommunicationTokenScope.VoIP });
               var (user, token) = response.Value;
               return token;
          }
          public SmsSendResult SendSms(Uri resourceEndpoint, string from, string to, string message)
          {
               SmsClient smsClient = new SmsClient(resourceEndpoint, this.credential);
               SmsSendResult sendResult = smsClient.Send(
                    from: from,
                    to: to,
                    message: message,
                    new SmsSendOptions(enableDeliveryReport: true) // optional
               );

               return sendResult;
          }
    }

프로그램 실행

이제 애플리케이션 폴더에서 dotnet run을 사용하여 애플리케이션을 실행할 수 있습니다. 출력은 다음과 유사합니다.

Retrieving new Access Token, using Service Principals
Retrieved Access Token: ey....
Sending SMS using Service Principals
Sms id: Outgoing_..._noam
Send Result Successful: True

참고 항목

GitHub에서 이 빠른 시작에 대한 최종 코드 칮기

설정

새 Node.js 애플리케이션 만들기

터미널 또는 명령 창을 열어 앱에 대한 새 디렉터리를 만들고 해당 디렉터리로 이동합니다.

mkdir active-directory-authentication-quickstart && cd active-directory-authentication-quickstart

npm init -y를 실행하여 기본 설정으로 package.json 파일을 만듭니다.

npm init -y

SDK 패키지 설치

npm install @azure/communication-identity
npm install @azure/communication-common
npm install @azure/communication-sms
npm install @azure/identity

새 파일 만들기

텍스트 편집기를 사용하여 새 파일을 열고 index.js로 저장하면 이 파일 내에 코드가 배치됩니다.

SDK 패키지 사용

다음 require 지시문을 index.js 위에 추가하여 Azure ID 및 Azure Storage SDK를 사용합니다.

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

DefaultAzureCredential 만들기

이 빠른 시작에서는 DefaultAzureCredential을 사용합니다. 이 자격 증명은 프로덕션 환경과 개발 환경에 적합합니다. 각 작업에 필요하므로 index.js 파일 위에서 만들겠습니다.

    const credential = new DefaultAzureCredential();

ID 만들기 및 서비스 주체로 토큰 발급

다음으로, 새 ID 만들고 이 ID에 대한 토큰을 발급하는 함수를 작성합니다. 나중에 이를 사용하여 서비스 주체 설정을 테스트합니다.

async function createIdentityAndIssueToken(resourceEndpoint) {
    const client = new CommunicationIdentityClient(resourceEndpoint, credential);
    return await client.createUserAndToken(["chat"]);
}

서비스 주체와 SMS 보내기

이제 서비스 주체를 사용하여 SMS를 전송하는 함수를 작성해 보겠습니다.

async function sendSms(resourceEndpoint, fromNumber, toNumber, message) {
    const smsClient = new SmsClient(resourceEndpoint, credential);
    const sendRequest = {
        from: fromNumber,
        to: [toNumber],
        message: message
    };
    return await smsClient.send(
        sendRequest,
        {} //Optional SendOptions
    );
}

main 함수 작성

함수를 만든 후에는 주요 함수를 작성하여 이를 호출하고 서비스 주체의 사용을 보여줄 수 있습니다.

async function main() {
    // You can find your endpoint and access key from your resource in the Azure portal
    // e.g. "https://<RESOURCE_NAME>.communication.azure.com";
    const endpoint = "https://<RESOURCE_NAME>.communication.azure.com/"

    
    console.log("Retrieving new Access Token, using Service Principals");
    const result = await createIdentityAndIssueToken(endpoint);
    console.log(`Retrieved Access Token: ${result.token}`);

    console.log("Sending SMS using Service Principals");

    // You will need a phone number from your resource to send an SMS.
    const smsResult = await sendSms(endpoint, "<FROM NUMBER>", "<TO NUMBER>", "Hello from Service Principals");
    console.log(`SMS ID: ${smsResult[0].messageId}`);
    console.log(`Send Result Successful: ${smsResult[0].successful}`);
}

main();

최종 index.js 파일은 다음과 같이 표시됩니다.

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

const credential = new DefaultAzureCredential();

async function createIdentityAndIssueToken(resourceEndpoint) {
    const client = new CommunicationIdentityClient(resourceEndpoint, credential);
    return await client.createUserAndToken(["chat"]);
}

async function sendSms(resourceEndpoint, fromNumber, toNumber, message) {
    const smsClient = new SmsClient(resourceEndpoint, credential);
    const sendRequest = {
        from: fromNumber,
        to: [toNumber],
        message: message
    };
    return await smsClient.send(
        sendRequest,
        {} //Optional SendOptions
    );
}

async function main() {
    // You can find your endpoint and access key from your resource in the Azure portal
    // e.g. "https://<RESOURCE_NAME>.communication.azure.com";
    const endpoint = "https://<RESOURCE_NAME>.communication.azure.com/"

    
    console.log("Retrieving new Access Token, using Service Principals");
    const result = await createIdentityAndIssueToken(endpoint);
    console.log(`Retrieved Access Token: ${result.token}`);

    console.log("Sending SMS using Service Principals");

    // You will need a phone number from your resource to send an SMS.
    const smsResult = await sendSms(endpoint, "<FROM NUMBER>", "<TO NUMBER>", "Hello from Service Principals");
    console.log(`SMS ID: ${smsResult[0].messageId}`);
    console.log(`Send Result Successful: ${smsResult[0].successful}`);
}

main();

프로그램 실행

모든 작업이 완료되면 프로젝트의 디렉터리에서 node index.js를 입력하여 파일을 실행할 수 있습니다. 모든 것이 순조롭게 진행되면 다음과 같은 페이지가 표시됩니다.

    $ node index.js
    Retrieving new Access Token, using Service Principals
    Retrieved Access Token: ey...Q
    Sending SMS using Service Principals
    SMS ID: Outgoing_2021040602194...._noam
    Send Result Successful: true

Java에 대한 추가 필수 구성 요소

Java의 경우 다음도 필요합니다.

참고 항목

GitHub에서 이 빠른 시작에 대한 최종 코드 칮기

설정

새 Java 애플리케이션 만들기

터미널 또는 명령 창을 엽니다. Java 애플리케이션을 만들 디렉터리로 이동합니다. 아래 명령을 실행하여 maven-archetype-quickstart 템플릿에서 Java 프로젝트를 생성합니다.

mvn archetype:generate -DgroupId=com.communication.quickstart -DartifactId=communication-quickstart -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false

'생성' 작업에서 artifactId와 동일한 이름으로 디렉터리를 만들었습니다. 이 디렉터리 아래에서 src/main/java 디렉터리는 프로젝트 소스 코드를 포함하고, src/test/java directory는 테스트 원본을 포함하고, pom.xml 파일은 프로젝트의 프로젝트 개체 모델 또는 POM입니다.

패키지 설치

텍스트 편집기에서 pom.xml 파일을 엽니다. 종속성 그룹에 다음 종속성 요소를 추가합니다.

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-communication-identity</artifactId>
    <version>[1.4.0,)</version>
</dependency>
<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-communication-sms</artifactId>
    <version>1.0.0</version>
</dependency>
<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-identity</artifactId>
    <version>1.2.3</version>
</dependency>

SDK 패키지 사용

Azure ID 및 Azure Communication SDK를 사용하려면 다음 import 지시문을 코드에 추가합니다.

import com.azure.communication.common.*;
import com.azure.communication.identity.*;
import com.azure.communication.identity.models.*;
import com.azure.communication.sms.*;
import com.azure.communication.sms.models.*;
import com.azure.core.credential.*;
import com.azure.identity.*;

import java.util.*;

DefaultAzureCredential 만들기

이 빠른 시작에서는 DefaultAzureCredential을 사용합니다. 이 자격 증명은 프로덕션 환경과 개발 환경에 적합합니다. 각 작업에 필요하므로 App.java 클래스 내에서 만들겠습니다. App.java 클래스의 맨 위에 다음을 추가합니다.

private TokenCredential credential = new DefaultAzureCredentialBuilder().build();

서비스 주체를 사용하여 토큰 발급

이제 생성된 자격 증명을 사용하는 코드를 추가하여 VoIP 액세스 토큰을 발급합니다. 나중에 이 코드를 호출합니다.

    public AccessToken createIdentityAndGetTokenAsync(String endpoint) {
          CommunicationIdentityClient communicationIdentityClient = new CommunicationIdentityClientBuilder()
                    .endpoint(endpoint)
                    .credential(this.credential)
                    .buildClient();

          CommunicationUserIdentifierAndToken result =  communicationIdentityClient.createUserAndToken(new ArrayList<>(Arrays.asList(CommunicationTokenScope.CHAT)));
          return result.getUserToken();
    }

서비스 주체와 SMS 보내기

서비스 주체를 사용하는 또 다른 예로, 동일한 자격 증명을 사용하여 SMS를 보내는 다음 코드를 추가합니다.

     public SmsSendResult sendSms(String endpoint, String from, String to, String message) {
          SmsClient smsClient = new SmsClientBuilder()
                    .endpoint(endpoint)
                    .credential(this.credential)
                    .buildClient();

          // Send the message and check the response for a message id
          return smsClient.send(from, to, message);
     }

Main 메서드 쓰기

App.java에는 이미 Main 메서드가 있어야 합니다. 이전에 만든 코드를 호출하여 서비스 주체를 사용하는 방법을 보여 주는 코드를 추가해 보겠습니다.

    public static void main(String[] args) {
          App instance = new App();
          // You can find your endpoint and access key from your resource in the Azure portal
          // e.g. "https://<RESOURCE_NAME>.communication.azure.com";
          String endpoint = "https://<RESOURCE_NAME>.communication.azure.com/";

          System.out.println("Retrieving new Access Token, using Service Principals");
          AccessToken token = instance.createIdentityAndGetTokenAsync(endpoint);
          System.out.println("Retrieved Access Token: "+ token.getToken());

          System.out.println("Sending SMS using Service Principals");
          // You will need a phone number from your resource to send an SMS.
          SmsSendResult result = instance.sendSms(endpoint, "<FROM NUMBER>", "<TO NUMBER>", "Hello from Service Principals");
          System.out.println("Sms id: "+ result.getMessageId());
          System.out.println("Send Result Successful: "+ result.isSuccessful());
    }

최종 App.java는 다음과 같아야 합니다.

package com.communication.quickstart;

import com.azure.communication.common.*;
import com.azure.communication.identity.*;
import com.azure.communication.identity.models.*;
import com.azure.communication.sms.*;
import com.azure.communication.sms.models.*;
import com.azure.core.credential.*;
import com.azure.identity.*;

import java.util.*;

public class App 
{

    private TokenCredential credential = new DefaultAzureCredentialBuilder().build();

    public SmsSendResult sendSms(String endpoint, String from, String to, String message) {
          SmsClient smsClient = new SmsClientBuilder()
               .endpoint(endpoint)
               .credential(this.credential)
               .buildClient();

          // Send the message and check the response for a message id
          return smsClient.send(from, to, message);
    }
    
    public AccessToken createIdentityAndGetTokenAsync(String endpoint) {
          CommunicationIdentityClient communicationIdentityClient = new CommunicationIdentityClientBuilder()
                    .endpoint(endpoint)
                    .credential(this.credential)
                    .buildClient();

          CommunicationUserIdentifierAndToken result =  communicationIdentityClient.createUserAndToken(new ArrayList<>(Arrays.asList(CommunicationTokenScope.CHAT)));
          return result.getUserToken();
    }

    public static void main(String[] args) {
          App instance = new App();
          // You can find your endpoint and access key from your resource in the Azure portal
          // e.g. "https://<RESOURCE_NAME>.communication.azure.com";
          String endpoint = "https://<RESOURCE_NAME>.communication.azure.com/";

          System.out.println("Retrieving new Access Token, using Service Principals");
          AccessToken token = instance.createIdentityAndGetTokenAsync(endpoint);
          System.out.println("Retrieved Access Token: "+ token.getToken());

          System.out.println("Sending SMS using Service Principals");
          // You will need a phone number from your resource to send an SMS.
          SmsSendResult result = instance.sendSms(endpoint, "<FROM NUMBER>", "<TO NUMBER>", "Hello from Service Principals");
          System.out.println("Sms id: "+ result.getMessageId());
          System.out.println("Send Result Successful: "+ result.isSuccessful());
    }
}

코드 실행

pom.xml 파일이 포함된 디렉터리로 이동한 후 다음 mvn 명령을 사용하여 프로젝트를 컴파일합니다.

mvn compile

그런 다음, 패키지를 빌드합니다.

mvn package

다음 mvn 명령을 실행하여 앱을 실행합니다.

mvn exec:java -Dexec.mainClass="com.communication.quickstart.App" -Dexec.cleanupDaemonThreads=false

최종 출력은 다음과 유사합니다.

Retrieving new Access Token, using Service Principals
Retrieved Access Token: ey..A
Sending SMS using using Service Principals
Sms id: Outgoing_202104...33f8ae1f_noam
Send Result Successful: true

참고 항목

GitHub에서 이 빠른 시작에 대한 최종 코드 칮기

설정

새 Python 애플리케이션 만들기

터미널 또는 명령 창을 열어 앱에 대한 새 디렉터리를 만들고 해당 디렉터리로 이동합니다.

mkdir active-directory-authentication-quickstart && cd active-directory-authentication-quickstart

SDK 패키지 설치

pip install azure-identity
pip install azure-communication-identity
pip install azure-communication-sms

새 파일 만들기

authentication.py라는 생성된 폴더에서 새 파일을 열고 저장합니다. 이 파일에 코드를 넣을 것입니다.

SDK 패키지 사용

파일의 맨 위에 다음 import 문을 추가하여 설치한 SDK를 사용합니다.

from azure.identity import DefaultAzureCredential
from azure.communication.identity import CommunicationIdentityClient
from azure.communication.sms import SmsClient

DefaultAzureCredential 만들기

DefaultAzureCredential을 사용하겠습니다. 이 자격 증명은 프로덕션 환경과 개발 환경에 적합합니다. 이 빠른 시작에서 사용할 것이므로 파일 맨 위에 만들겠습니다.

     credential = DefaultAzureCredential()

ID 만들기 및 서비스 주체로 토큰 발급

이제 생성된 자격 증명을 사용하는 코드를 추가하여 VoIP 액세스 토큰을 발급합니다. 나중에 이 코드를 호출합니다.

def create_identity_and_get_token(resource_endpoint):
     client = CommunicationIdentityClient(resource_endpoint, credential)
     user, token_response = client.create_user_and_token(scopes=["voip"])

     return token_response

서비스 주체와 SMS 보내기

서비스 주체를 사용하는 또 다른 예로, 동일한 자격 증명을 사용하여 SMS를 보내는 다음 코드를 추가합니다.

def send_sms(resource_endpoint, from_phone_number, to_phone_number, message_content):
     sms_client = SmsClient(resource_endpoint, credential)

     sms_client.send(
          from_=from_phone_number,
          to_=[to_phone_number],
          message=message_content,
          enable_delivery_report=True  # optional property
     )

기본 코드 작성

생성된 함수를 사용하여 이전에 작성한 함수를 호출하는 기본 코드를 작성할 수 있습니다.

# You can find your endpoint and access key from your resource in the Azure portal
# e.g. "https://<RESOURCE_NAME>.communication.azure.com";
endpoint = "https://<RESOURCE_NAME>.communication.azure.com/"

print("Retrieving new Access Token, using Service Principals");
result = create_identity_and_get_token(endpoint);
print(f'Retrieved Access Token: {result.token}');

print("Sending SMS using Service Principals");

# You will need a phone number from your resource to send an SMS.
sms_result = send_sms(endpoint, "<FROM_NUMBER>", "<TO_NUMBER>", "Hello from Service Principals");
print(f'SMS ID: {sms_result[0].message_id}');
print(f'Send Result Successful: {sms_result[0].successful}');

최종 authentication.py 파일은 다음과 같습니다.

from azure.identity import DefaultAzureCredential
from azure.communication.identity import CommunicationIdentityClient
from azure.communication.sms import SmsClient

credential = DefaultAzureCredential()

def create_identity_and_get_token(resource_endpoint):
     client = CommunicationIdentityClient(resource_endpoint, credential)
     user, token_response = client.create_user_and_token(scopes=["voip"])

     return token_response

def send_sms(resource_endpoint, from_phone_number, to_phone_number, message_content):
     sms_client = SmsClient(resource_endpoint, credential)

     response = sms_client.send(
          from_=from_phone_number,
          to=[to_phone_number],
          message=message_content,
          enable_delivery_report=True  # optional property
     )
     return response

# You can find your endpoint and access key from your resource in the Azure portal
# e.g. "https://<RESOURCE_NAME>.communication.azure.com";
endpoint = "https://<RESOURCE_NAME>.communication.azure.com/"

print("Retrieving new Access Token, using Service Principals");
result = create_identity_and_get_token(endpoint);
print(f'Retrieved Access Token: {result.token}');

print("Sending SMS using Service Principals");

# You will need a phone number from your resource to send an SMS.
sms_result = send_sms(endpoint, "<FROM_NUMBER>", "<TO_NUMBER>", "Hello from Service Principals");
print(f'SMS ID: {sms_result[0].message_id}');
print(f'Send Result Successful: {sms_result[0].successful}');

프로그램 실행

모든 작업이 완료되면 프로젝트의 디렉터리에서 python authentication.py를 입력하여 파일을 실행할 수 있습니다. 모든 것이 순조롭게 진행되면 다음과 같은 페이지가 표시됩니다.

    $ python authentication.py
    Retrieving new Access Token, using Service Principals
    Retrieved Access Token: ey...Q
    Sending SMS using using Service Principals
    SMS ID: Outgoing_2021040602194...._noam
    Send Result Successful: true

다음 단계