Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a csomag közös kódot tartalmaz az Azure Communication Service kódtárakhoz.
Kezdő lépések
Előfeltételek
- Egy Azure-előfizetés.
- Egy meglévő Communication Services-erőforrás. Ha létre kell hoznia az erőforrást, használhatja az Azure Portal, az Az Azure PowerShellvagy az Azure CLI.
- A csomag telepítése után @azure/identity
Telepítése
npm install @azure/communication-common
npm install @azure/identity
Böngésző támogatás
JavaScript-csomag
Ahhoz, hogy ezt az ügyfélkódtárat a böngészőben használhassa, először egy kötegelőt kell használnia. Ennek módjáról további információt a csomagküldő dokumentációbantalál.
Főbb fogalmak
CommunicationTokenCredential és AzureCommunicationTokenCredential
Ez CommunicationTokenCredential egy olyan felület, amely a felhasználó hitelesítésére szolgál a kommunikációs szolgáltatásokkal, például a csevegéssel vagy a hívással.
Ez AzureCommunicationTokenCredential kényelmes módot kínál az említett felületet megvalósító hitelesítő adatok létrehozására, és lehetővé teszi a beépített automatikus frissítési logika előnyeinek kihasználását.
A forgatókönyvtől függően érdemes lehet inicializálni a AzureCommunicationTokenCredential következővel:
- statikus token (alkalmas rövid életű kliensek számára, pl. egyszeri csevegőüzenetek küldésére) vagy
- visszahívási funkció, amely folyamatos hitelesítési állapotot biztosít a kommunikáció során (ideális pl. hosszú hívási munkamenetekhez).
- egy Entra felhasználói jogkivonat beszerzésére alkalmas jogkivonat. A TokenCredential felület bármilyen implementációját biztosíthatja. Olyan forgatókönyvekhez alkalmas, ahol Entra felhasználói hozzáférési jogkivonatokra van szükség a Communication Services hitelesítéshez.
A konstruktoron vagy a jogkivonat-frissítő visszahívásán keresztül megadott AzureCommunicationTokenCredential jogkivonatok a Azure Communication Identity kódtár használatával szerezhetők be.
Példák
Hitelesítő adatok létrehozása statikus jogkivonattal
Rövid élettartamú ügyfelek esetén a jogkivonat lejáratkor történő frissítése nem szükséges, és statikus AzureCommunicationTokenCredential jogkivonattal példányosítható.
import { AzureCommunicationTokenCredential } from "@azure/communication-common";
const tokenCredential = new AzureCommunicationTokenCredential(
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjM2MDB9.adM-ddBZZlQ1WlN3pdPBOF5G4Wh9iZpxNP_fSvpF4cWs",
);
Hitelesítő adatok létrehozása visszahívással
Itt feltételezzük, hogy van egy függvényünk fetchTokenFromMyServerForUser , amely hálózati kérést küld egy JWT-jogkivonat karakterlánc lekérésére egy felhasználó számára. Átadjuk a hitelesítő adatoknak, hogy lekérjünk egy tokent Bob számára a saját szerverünkről. A kiszolgáló az Azure Communication Identity kódtárat használja a jogkivonatok kiadásához. A fetchTokenFromMyServerForUser függvénynek mindig érvényes jogkivonatot kell visszaadnia (a jövőben beállított lejárati dátummal).
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"),
});
Hitelesítő adatok létrehozása proaktív frissítéssel
Az igaz beállítás refreshProactively akkor hívja meg a függvényt tokenRefresher , amikor a jogkivonat közel van a lejárathoz.
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,
});
Hitelesítő adatok létrehozása proaktív frissítéssel és kezdeti jogkivonattal
Az átadás initialToken egy opcionális optimalizálás az első hívás tokenRefresherkihagyásához. Ezzel elválaszthatja a rendszerindítást az alkalmazástól a későbbi jogkivonat-frissítési ciklusoktól.
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",
});
Hitelesítő adatok létrehozása egy Entra felhasználói jogkivonat beszerzésére alkalmas jogkivonat-hitelesítő adatokkal
Olyan forgatókönyvek esetén, amikor egy Entra-felhasználó használható a Communication Services, inicializálnia kell a TokenCredential felület bármely implementációját, és meg kell adnia a EntraCommunicationTokenCredentialOptions.
Ezzel együtt meg kell adnia a Azure Communication Services erőforrás URI-ját és az Entra felhasználói jogkivonathoz szükséges hatóköröket. Ezek a hatókörök határozzák meg a jogkivonatnak megadott engedélyeket.
Ezt a megközelítést kell használni egy Teams-licenccel rendelkező Entra-felhasználó engedélyezéséhez a Teams telefonbővíthetőségi funkcióinak használatára a Azure Communication Services erőforráson keresztül.
Ehhez meg kell adni a hatókört https://auth.msft.communication.azure.com/TeamsExtension.ManageCalls .
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);
Az Entra-felhasználók számára az Azure Communication Services használatára vonatkozó egyéb forgatókönyvek jelenleg csak előzetes verziójú szakaszban vannak, és nem használhatók éles környezetben.
Ezeknek a forgatókönyveknek a hatóköre a következő formátumot https://communication.azure.com/clients/<ACS Scope>követi: . Ha nincs megadva adott hatókör, az alapértelmezett hatókör a következőre https://communication.azure.com/clients/.defaultlesz állítva: .
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);
Hibaelhárítás
-
Érvénytelen jogkivonat megadva: Győződjön meg arról, hogy a
AzureCommunicationTokenCredentialkonstruktornak vagy atokenRefreshervisszahívásnak átadott jogkivonat csupasz JWT-jogkivonat-sztring. Ha például a Azure Communication Identity kódtárat vagy a REST API-t használja a jogkivonat beszerzéséhez, győződjön meg arról, hogy csak a válaszobjektum részét adja áttoken.
Fakitermelés
A naplózás engedélyezése segíthet a hibákról szóló hasznos információk feltárásában. A HTTP-kérések és válaszok naplójának megtekintéséhez állítsa a környezeti változót a AZURE_LOG_LEVEL következőre info: . Alternatívaként a naplózás futásidőben is engedélyezhető a setLogLevel hívásával a @azure/logger.
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
Következő lépések
Közreműködés
Ha hozzá szeretne járulni ehhez a kódtárhoz, olvassa el a közreműködői útmutatót, amelyből többet is megtudhat a kód összeállításáról és teszteléséről.
Kapcsolódó projektek
Azure SDK for JavaScript