Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu paket, Azure İletişim Hizmeti kitaplıkları için ortak kod içerir.
Başlangıç Yapmak
Önkoşullar
- Bir Azure aboneliği.
- Mevcut bir İletişim Hizmetleri kaynağı. Kaynağı oluşturmanız gerekiyorsa Azure Portal, Azure PowerShellveya Azure CLIkullanabilirsiniz.
- Paketin yüklenmesi @azure/identity .
Yükleniyor
npm install @azure/communication-common
npm install @azure/identity
Tarayıcı desteği
JavaScript Paketi
Bu istemci kitaplığını tarayıcıda kullanmak için önce bir paketleyici kullanmanız gerekir. Bunun nasıl yapılacağının ayrıntıları için lütfen
Temel kavramlar
CommunicationTokenCredential ve AzureCommunicationTokenCredential
Sohbet CommunicationTokenCredential veya Arama gibi İletişim Hizmetleri ile bir kullanıcının kimliğini doğrulamak için kullanılan bir arabirimdir.
Söz AzureCommunicationTokenCredential konusu arayüzü uygulayan bir kimlik bilgisi oluşturmak için uygun bir yol sunar ve yerleşik otomatik yenileme mantığından yararlanmanıza olanak tanır.
Senaryonuza bağlı olarak, ile başlatmak AzureCommunicationTokenCredential isteyebilirsiniz:
- statik bir belirteç (örneğin tek seferlik Sohbet mesajları göndermek için kullanılan kısa ömürlü istemciler için uygundur) veya
- iletişim sırasında sürekli bir kimlik doğrulama durumu sağlayan bir geri arama işlevi (örneğin, uzun Arama oturumları için idealdir).
- bir Entra kullanıcı belirteci alabilen bir belirteç kimlik bilgisi. TokenCredential arabiriminin herhangi bir uygulamasını sağlayabilirsiniz. İletişim Hizmetleri ile kimlik doğrulaması yapmak için Entra kullanıcı erişim belirteçlerinin gerekli olduğu senaryolar için uygundur.
Oluşturucu aracılığıyla veya belirteç yenileyici geri araması aracılığıyla sağlanan AzureCommunicationTokenCredential belirteçler, Azure İletişim Kimliği kitaplığı kullanılarak elde edilebilir.
Örnekler
Statik belirteçle kimlik bilgisi oluşturma
Kısa ömürlü istemciler için, süresi dolduktan sonra belirtecin yenilenmesi gerekli değildir ve AzureCommunicationTokenCredential statik bir belirteçle başlatılabilir.
import { AzureCommunicationTokenCredential } from "@azure/communication-common";
const tokenCredential = new AzureCommunicationTokenCredential(
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjM2MDB9.adM-ddBZZlQ1WlN3pdPBOF5G4Wh9iZpxNP_fSvpF4cWs",
);
Geri arama ile kimlik bilgisi oluşturma
Burada, bir kullanıcı için bir JWT belirteç dizesi almak için bir ağ isteğinde bulunan bir işlevimiz fetchTokenFromMyServerForUser olduğunu varsayıyoruz. Kendi sunucumuzdan Bob için bir belirteç almak için bunu kimlik bilgisine geçiririz. Sunucumuz belirteç vermek için Azure İletişim Kimliği kitaplığını kullanır. İşlevin fetchTokenFromMyServerForUser her zaman geçerli bir belirteç (gelecekte ayarlanmış bir sona erme tarihi olan) döndürmesi gerekir.
import { AzureCommunicationTokenCredential } from "@azure/communication-common";
function fetchTokenFromMyServerForUser(user: string): Promise<string> {
// Your custom implementation to fetch a token for the user
return Promise.resolve("some-unique-token-for-" + user);
}
const tokenCredential = new AzureCommunicationTokenCredential({
tokenRefresher: async () => fetchTokenFromMyServerForUser("bob@contoso.com"),
});
Proaktif yenileme ile kimlik bilgisi oluşturma
true olarak ayarlamak refreshProactively , belirtecin süresi dolmak üzere olduğunda işlevinizi tokenRefresher çağırır.
import { AzureCommunicationTokenCredential } from "@azure/communication-common";
function fetchTokenFromMyServerForUser(user: string): Promise<string> {
// Your custom implementation to fetch a token for the user
return Promise.resolve("some-unique-token-for-" + user);
}
const tokenCredential = new AzureCommunicationTokenCredential({
tokenRefresher: async () => fetchTokenFromMyServerForUser("bob@contoso.com"),
refreshProactively: true,
});
Proaktif yenileme ve ilk belirteç ile bir kimlik bilgisi oluşturun
Geçme initialToken , öğesine yapılan ilk çağrıyı atlamak tokenRefresheriçin isteğe bağlı bir iyileştirmedir. Bunu, uygulamanızdan önyüklemeyi sonraki belirteç yenileme döngülerinden ayırmak için kullanabilirsiniz.
import { AzureCommunicationTokenCredential } from "@azure/communication-common";
function fetchTokenFromMyServerForUser(user: string): Promise<string> {
// Your custom implementation to fetch a token for the user
return Promise.resolve("some-unique-token-for-" + user);
}
const tokenCredential = new AzureCommunicationTokenCredential({
tokenRefresher: async () => fetchTokenFromMyServerForUser("bob@contoso.com"),
refreshProactively: true,
token:
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjM2MDB9.adM-ddBZZlQ1WlN3pdPBOF5G4Wh9iZpxNP_fSvpF4cWs",
});
Entra kullanıcı belirteci alabilen bir belirteç kimlik bilgisine sahip bir kimlik bilgisi oluşturun
Bir Entra kullanıcısının İletişim Hizmetleri ile kullanılabileceği senaryolar için, TokenCredential arabiriminin herhangi bir uygulamasını başlatmanız ve .EntraCommunicationTokenCredentialOptions
Bununla birlikte, Azure İletişim Hizmetleri kaynağının URI'sini ve Entra kullanıcı belirteci için gereken kapsamları sağlamanız gerekir. Bu kapsamlar, belirtece verilen izinleri belirler.
Bu yaklaşımın, Teams lisansına sahip bir Entra kullanıcısını Azure İletişim Hizmetleri kaynağınız aracılığıyla Teams Telefon Genişletilebilirliği özelliklerini kullanma yetkisi vermek için kullanılması gerekir.
Bu, kapsamın sağlanmasını https://auth.msft.communication.azure.com/TeamsExtension.ManageCalls gerektirir.
import { InteractiveBrowserCredential } from "@azure/identity";
import {
EntraCommunicationTokenCredentialOptions,
AzureCommunicationTokenCredential,
} from "@azure/communication-common";
const options = {
tenantId: "<your-tenant-id>",
clientId: "<your-client-id>",
redirectUri: "<your-redirect-uri>",
};
const entraTokenCredential = new InteractiveBrowserCredential(options);
const entraTokenCredentialOptions: EntraCommunicationTokenCredentialOptions = {
resourceEndpoint: "https://<your-resource>.communication.azure.com",
tokenCredential: entraTokenCredential,
scopes: ["https://auth.msft.communication.azure.com/TeamsExtension.ManageCalls"],
};
const credential = new AzureCommunicationTokenCredential(entraTokenCredentialOptions);
Entra kullanıcılarının Azure İletişim Hizmetleri'ni kullanmasına yönelik diğer senaryolar şu anda yalnızca önizleme aşamasındadır ve üretimde kullanılmamalıdır.
Bu senaryoların kapsamları biçimi https://communication.azure.com/clients/<ACS Scope>izler. Belirli kapsamlar sağlanmazsa, varsayılan kapsamlar olarak https://communication.azure.com/clients/.defaultayarlanır.
import { InteractiveBrowserCredential } from "@azure/identity";
import {
EntraCommunicationTokenCredentialOptions,
AzureCommunicationTokenCredential,
} from "@azure/communication-common";
const options = {
tenantId: "<your-tenant-id>",
clientId: "<your-client-id>",
redirectUri: "<your-redirect-uri>",
};
const entraTokenCredential = new InteractiveBrowserCredential(options);
const entraTokenCredentialOptions: EntraCommunicationTokenCredentialOptions = {
resourceEndpoint: "https://<your-resource>.communication.azure.com",
tokenCredential: entraTokenCredential,
scopes: ["https://communication.azure.com/clients/VoIP"],
};
const credential = new AzureCommunicationTokenCredential(entraTokenCredentialOptions);
Sorun giderme
-
Geçersiz belirteç belirtildi: Oluşturucuya veya geri çağırmaya
AzureCommunicationTokenCredentialgeçirdiğiniz belirtecintokenRefresherçıplak bir JWT belirteç dizesi olduğundan emin olun. Örneğin, belirteci almak için Azure İletişim Kimliği kitaplığını veya REST API'sini kullanıyorsanız, yanıt nesnesinin yalnızcatokenbir kısmını geçirdiğinizden emin olun.
Ağaç kesimi
Loglamayı etkinleştirmek, hatalarla ilgili yararlı bilgilerin ortaya çıkmasına yardımcı olabilir. HTTP isteklerinin ve yanıtlarının günlüğünü görmek için ortam değişkenini AZURE_LOG_LEVEL olarak infoayarlayın. Alternatif olarak, çalışma zamanında setLogLevel@azure/logger çağrılarak günlük tutma etkinleştirilebilir.
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
Sonraki Adımlar
Katkıda Bulunmak
Bu kitaplığa katkıda bulunmak istiyorsanız kodu oluşturma ve test etme hakkında daha fazla bilgi edinmek için lütfen katkıda bulunma kılavuzu okuyun.
İlgili projeler
Azure SDK for JavaScript