Bagikan melalui


Mulai cepat: Mengautentikasi menggunakan ID Microsoft Entra

Mulai menggunakan Azure Communication Services dengan menggunakan ID Microsoft Entra. Identitas Communication Services dan SDK SMS mendukung autentikasi Microsoft Entra.

Mulai cepat ini menunjukkan cara mengotorisasi akses ke Identitas dan SDK SMS dari lingkungan Azure yang mendukung Direktori Aktif. Panduan ini juga menjelaskan cara menguji kode Anda dalam lingkungan pengembangan dengan membuat perwakilan layanan untuk pekerjaan Anda.

Prasyarat

Prasyarat Tambahan

Persiapan

Saat menggunakan Direktori Aktif untuk Sumber Daya Azure lainnya, Anda harus menggunakan Identitas terkelola. Untuk mempelajari cara mengaktifkan identitas terkelola untuk Azure Resources, lihat salah satu artikel berikut:

Autentikasi aplikasi terdaftar di lingkungan pengembangan

Jika lingkungan pengembangan Anda tidak mendukung akses menyeluruh atau masuk melalui browser web, Maka Anda dapat menggunakan aplikasi terdaftar untuk mengautentikasi dari lingkungan pengembangan.

Membuat Aplikasi terdaftar Microsoft Entra

Untuk membuat aplikasi terdaftar dari Azure CLI, Anda harus masuk ke akun Azure tempat Anda ingin operasi berlangsung. Untuk melakukan ini, Anda dapat menggunakan az login perintah dan memasukkan informasi masuk Anda di browser. Setelah Anda masuk ke akun Azure Anda dari CLI, kita dapat memanggil az ad sp create-for-rbac perintah untuk membuat aplikasi terdaftar dan perwakilan layanan.

Contoh berikut menggunakan Azure CLI untuk membuat aplikasi terdaftar baru:

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

az ad sp create-for-rbac Perintah akan menghasilkan daftar properti perwakilan layanan dalam format JSON. Salin nilai-nilai ini sehingga dapat Anda gunakan untuk membuat variabel lingkungan yang diperlukan di langkah berikutnya.

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

Penting

Penetapan peran Azure mungkin memerlukan waktu hingga lima menit untuk disebarluaskan.

Atur variabel lingkungan

Azure Identity SDK membaca nilai dari tiga variabel lingkungan pada waktu runtime untuk mengautentikasi aplikasi. Tabel berikut menjelaskan nilai yang akan ditetapkan untuk setiap variabel lingkungan.

Variabel lingkungan Nilai
AZURE_CLIENT_ID appId nilai dari JSON yang dihasilkan
AZURE_TENANT_ID tenant nilai dari JSON yang dihasilkan
AZURE_CLIENT_SECRET password nilai dari JSON yang dihasilkan

Penting

Setelah Anda mengatur variabel lingkungan, tutup dan buka kembali jendela konsol Anda. Jika Anda menggunakan Visual Studio atau lingkungan pengembangan lain, Anda mungkin perlu memulai ulang agar dapat mendaftarkan variabel lingkungan baru.

Setelah variabel ini ditetapkan, Anda harus dapat menggunakan objek DefaultAzureCredential dalam kode Anda untuk mengautentikasi ke klien layanan pilihan Anda.

Catatan

Temukan kode final untuk mulai cepat ini di GitHub

Menyiapkan

Membuat aplikasi C# baru

Di jendela konsol (seperti cmd, PowerShell, atau Bash), gunakan perintah dotnet new untuk membuat aplikasi konsol baru dengan nama ActiveDirectoryQuickstart. Perintah ini membuat proyek C# "Halo Dunia" sederhana dengan satu file sumber: Program.cs.

dotnet new console -o ActiveDirectoryAuthenticationQuickstart

Ubah direktori Anda ke folder aplikasi yang baru dibuat dan gunakan perintah dotnet build untuk mengompilasi aplikasi Anda.

cd ActiveDirectoryAuthenticationQuickstart
dotnet build

Menginstal paket SDK

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

Menggunakan paket SDK

Tambahkan arahan using berikut ke Program.cs untuk menggunakan Azure Identity dan Azure Storage SDK.

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

Membuat DefaultAzureCredential

Kita akan menggunakan DefaultAzureCredential untuk mulai cepat ini. Info masuk ini cocok untuk lingkungan produksi dan pengembangan. Karena dibutuhkan untuk setiap operasi, mari kita buat di dalam kelas Program.cs. Tambahkan berikut ini ke bagian atas file .

private DefaultAzureCredential credential = new DefaultAzureCredential();

Menerbitkan token dengan perwakilan layanan

Sekarang kita akan menambahkan kode yang menggunakan info masuk yang dibuat, untuk mengeluarkan Token Akses VoIP. Kami akan memanggil kode ini nanti.

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;
}

Kirim SMS dengan perwakilan layanan

Sebagai contoh lain dalam menggunakan perwakilan layanan, kami akan menambahkan kode ini yang menggunakan info masuk yang sama untuk mengirim 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;
}

Menulis Metode utama

Program.cs Anda seharusnya sudah memiliki metode Main, mari tambahkan beberapa kode yang akan memanggil kode yang kita buat sebelumnya untuk mendemonstrasikan penggunaan perwakilan layanan:

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}");
}

File Program.cs terakhir Anda akan terlihat seperti ini:

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;
          }
    }

Jalankan program

Anda seharusnya sekarang dapat menjalankan aplikasi Anda, menggunakan dotnet run dari folder aplikasi Anda. Outputnya harus menyerupai berikut ini:

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

Catatan

Temukan kode final untuk mulai cepat ini di GitHub

Menyiapkan

Membuat aplikasi Node.js baru

Buka terminal atau jendela perintah buat direktori baru untuk aplikasi Anda, dan navigasikan ke sana.

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

Jalankan npm init -y untuk membuat file package.json dengan pengaturan default.

npm init -y

Menginstal paket SDK

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

Buat file baru

Buka file baru dengan editor teks dan simpan sebagai index.js, kita akan menempatkan kode di dalam file ini.

Menggunakan paket SDK

Tambahkan instruksi require berikut ke bagian atas index.js untuk menggunakan SDK Azure Identity dan Azure Storage.

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

Membuat DefaultAzureCredential

Kita akan menggunakan DefaultAzureCredential untuk mulai cepat ini. Info masuk ini cocok untuk lingkungan produksi dan pengembangan. Karena diperlukan untuk setiap operasi, mari kita membuatnya di bagian atas file index.js.

    const credential = new DefaultAzureCredential();

Membuat identitas dan keluarkan token dengan perwakilan layanan

Selanjutnya, kita akan menulis fungsi yang membuat identitas baru dan mengeluarkan token untuk identitas ini, kita akan menggunakannya nanti untuk menguji pengaturan perwakilan layanan kita.

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

Kirim SMS dengan perwakilan layanan

Sekarang, mari kita tulis fungsi yang menggunakan perwakilan layanan untuk mengirim 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
    );
}

Menulis fungsi utama

Dengan fungsi yang dibuat, sekarang kita dapat menulis fungsi utama untuk memanggilnya dan mendemonstrasikan penggunaan Perwakilan Layanan:

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();

File index.js akhir tersebut akan terlihat seperti ini:

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();

Jalankan program

Setelah semuanya selesai, Anda dapat menjalankan file dengan memasukkan node index.js dari direktori proyek Anda. Jika semuanya berjalan dengan baik, Anda akan melihat sesuatu yang mirip dengan yang berikut ini.

    $ 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

Prasyarat tambahan untuk Java

Untuk Java, Anda juga memerlukan:

Catatan

Temukan kode final untuk mulai cepat ini di GitHub

Menyiapkan

Membuat aplikasi Java baru

Buka jendela perintah atau terminal Anda. Arahkan ke direktori tempat Anda ingin membuat aplikasi Java. Jalankan perintah di bawah ini untuk menghasilkan proyek Java dari templat maven-arketipe-quickstart.

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

Anda akan melihat bahwa tugas 'hasilkan' membuat direktori dengan nama yang sama dengan artifactId. Di direktori ini, direktori src/main/java berisi kode sumber proyek, src/test/java directory berisi sumber pengujian, dan file pom.xml tersebut adalah Project Object Model atau POM proyek.

Pasang paket

Buka file pom.xml di editor teks Anda. Tambahkan elemen dependensi berikut ke grup dependensi.

<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>

Menggunakan paket SDK

Tambahkan arahan import berikut ke kode Anda untuk menggunakan Identitas Azure dan SDK Komunikasi Azure.

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.*;

Membuat DefaultAzureCredential

Kita akan menggunakan DefaultAzureCredential untuk mulai cepat ini. Info masuk ini cocok untuk lingkungan produksi dan pengembangan. Karena dibutuhkan untuk setiap operasi, mari kita buat di dalam kelas App.java. Tambahkan hal berikut ke bagian atas kelas App.java.

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

Menerbitkan token dengan perwakilan layanan

Sekarang kita akan menambahkan kode yang menggunakan info masuk yang dibuat, untuk mengeluarkan Token Akses VoIP. Kami akan memanggil kode ini nanti;

    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();
    }

Kirim SMS dengan perwakilan layanan

Sebagai contoh lain dalam menggunakan perwakilan layanan, kami akan menambahkan kode ini yang menggunakan info masuk yang sama untuk mengirim 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);
     }

Menulis Metode utama

App.java Anda seharusnya sudah memiliki metode Main, mari tambahkan beberapa kode yang akan memanggil kode yang kita buat sebelumnya untuk mendemonstrasikan penggunaan perwakilan layanan:

    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 final Anda akan terlihat seperti ini:

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());
    }
}

Menjalankan kode

Buka direktori yang berisi file pom.xml dan kompilasikan proyek dengan perintah mvn berikut.

mvn compile

Kemudian, bangun paketnya.

mvn package

Jalankan perintah mvn berikut untuk menjalankan aplikasi.

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

Output final harus menyerupai berikut ini:

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

Catatan

Temukan kode final untuk mulai cepat ini di GitHub

Menyiapkan

Membuat aplikasi Python baru

Buka terminal atau jendela perintah buat direktori baru untuk aplikasi Anda, dan navigasikan ke sana.

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

Menginstal paket SDK

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

Buat file baru

Buka dan simpan file baru dalam folder yang Anda buat yang disebut authentication.py, kami akan menempatkan kode kami di dalam file ini.

Menggunakan paket SDK

Tambahkan pernyataan import berikut ke bagian atas file Anda untuk menggunakan SDK yang kita pasang.

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

Membuat DefaultAzureCredential

Kita akan menggunakan DefaultAzureCredential. Info masuk ini cocok untuk lingkungan produksi dan pengembangan. Karena kita akan menggunakannya sepanjang mulai cepat ini kita akan membuatnya di bagian atas file.

     credential = DefaultAzureCredential()

Membuat identitas dan keluarkan token dengan perwakilan layanan

Sekarang kita akan menambahkan kode yang menggunakan info masuk yang dibuat, untuk mengeluarkan Token Akses VoIP. Kita akan memanggil kode ini nanti:

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

Kirim SMS dengan perwakilan layanan

Sebagai contoh lain dalam menggunakan perwakilan layanan, kami akan menambahkan kode ini yang menggunakan info masuk yang sama untuk mengirim 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
     )

Tulis kode utama kita

Dengan fungsi dibuat, kita sekarang dapat menulis kode utama yang akan memanggil fungsi yang telah kita tulis sebelumnya.

# 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}');

File authentication.py final akan terlihat seperti ini:

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}');

Jalankan program

Setelah semuanya selesai, Anda dapat menjalankan file dengan memasukkan python authentication.py dari direktori proyek Anda. Jika semuanya berjalan dengan baik, Anda akan melihat sesuatu yang mirip dengan yang berikut ini.

    $ 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

Langkah berikutnya