Uwierzytelnianie firmy Microsoft w usłudze Entra przy użyciu zestawu SPEECH SDK

W przypadku uzyskiwania dostępu do usługi Speech SDK dostępne są trzy metody uwierzytelniania: klucze usługi, token oparty na kluczach i identyfikator Entra firmy Microsoft. W tym artykule opisano sposób konfigurowania zasobu usługi Mowa i tworzenia obiektu konfiguracji zestawu Speech SDK do używania identyfikatora Entra firmy Microsoft do uwierzytelniania.

W tym artykule pokazano, jak używać uwierzytelniania firmy Microsoft w usłudze Speech SDK. Dowiedz się, jak odbywa się:

  • Tworzenie zasobu usługi Mowa
  • Konfigurowanie zasobu usługi Mowa na potrzeby uwierzytelniania entra firmy Microsoft
  • Uzyskiwanie tokenu dostępu firmy Microsoft Entra
  • Utwórz odpowiedni obiekt konfiguracji zestawu SDK.

Aby dowiedzieć się więcej na temat tokenów dostępu firmy Microsoft, w tym okresu istnienia tokenu, odwiedź stronę Tokeny dostępu w Platforma tożsamości Microsoft.

Tworzenie zasobu usługi Mowa

Aby utworzyć zasób usługi Mowa w witrynie Azure Portal, zobacz Pobieranie kluczy dla zasobu

Konfigurowanie zasobu usługi Mowa na potrzeby uwierzytelniania entra firmy Microsoft

Aby skonfigurować zasób usługi Mowa na potrzeby uwierzytelniania w usłudze Microsoft Entra, utwórz niestandardową nazwę domeny i przypisz role.

Tworzenie niestandardowej nazwy domeny

Wykonaj następujące kroki, aby utworzyć niestandardową nazwę poddomeny dla usług Azure AI dla zasobu usługi Mowa.

Uwaga

Po włączeniu niestandardowej nazwy domeny operacja nie jest odwracalna. Jedynym sposobem powrotu do nazwy regionalnej jest utworzenie nowego zasobu usługi Mowa.

Jeśli zasób usługi Mowa zawiera wiele skojarzonych modeli niestandardowych i projektów utworzonych za pośrednictwem usługi Speech Studio, zdecydowanie zalecamy wypróbowanie konfiguracji z zasobem testowym przed zmodyfikowaniem zasobu używanego w środowisku produkcyjnym.

Aby utworzyć niestandardową nazwę domeny przy użyciu witryny Azure Portal, wykonaj następujące kroki:

  1. Przejdź do witryny Azure Portal i zaloguj się na swoje konto platformy Azure.

  2. Wybierz wymagany zasób usługi Mowa.

  3. W grupie Zarządzanie zasobami w okienku po lewej stronie wybierz pozycję Sieć.

  4. Na karcie Zapory i sieci wirtualne wybierz pozycję Generuj niestandardową nazwę domeny. Zostanie wyświetlony nowy panel po prawej stronie z instrukcjami tworzenia unikatowej niestandardowej poddomeny dla zasobu.

  5. W panelu Generuj niestandardową nazwę domeny wprowadź niestandardową nazwę domeny. Pełna domena niestandardowa będzie wyglądać następująco: https://{your custom name}.cognitiveservices.azure.com.

    Pamiętaj, że po utworzeniu niestandardowej nazwy domeny nie można jej zmienić.

    Po wprowadzeniu niestandardowej nazwy domeny wybierz pozycję Zapisz.

  6. Po zakończeniu operacji w grupie Zarządzanie zasobami wybierz pozycję Klucze i punkt końcowy. Upewnij się, że nowa nazwa punktu końcowego zasobu rozpoczyna się w następujący sposób: https://{your custom name}.cognitiveservices.azure.com.

Przypisywanie ról

W przypadku uwierzytelniania firmy Microsoft z zasobami usługi Mowa należy przypisać rolę współautora mowy usług Cognitive Services lub użytkownika usługi Mowa w usługach Cognitive Services.

Role można przypisać do użytkownika lub aplikacji przy użyciu witryny Azure Portal lub programu PowerShell.

Uzyskiwanie tokenu dostępu firmy Microsoft Entra

Aby uzyskać token dostępu firmy Microsoft Entra w języku C#, użyj biblioteki klienta tożsamości platformy Azure.

Oto przykład użycia tożsamości platformy Azure do uzyskania tokenu dostępu firmy Microsoft Entra z przeglądarki interaktywnej:

TokenRequestContext context = new Azure.Core.TokenRequestContext(new string[] { "https://cognitiveservices.azure.com/.default" });
InteractiveBrowserCredential browserCredential = new InteractiveBrowserCredential();
var browserToken = browserCredential.GetToken(context);
string aadToken = browserToken.Token;

Kontekst tokenu musi być ustawiony na "https://cognitiveservices.azure.com/.default".

Aby uzyskać token dostępu firmy Microsoft Entra w języku C++, użyj biblioteki klienta tożsamości platformy Azure.

Oto przykład użycia tożsamości platformy Azure w celu uzyskania tokenu dostępu firmy Microsoft Entra z identyfikatorem dzierżawy, identyfikatorem klienta i poświadczeniami wpisu tajnego klienta:

const std::string tenantId = "Your Tenant ID";
const std::string clientId = "Your Client ID";
const std::string clientSecret = "Your Client Secret";
const std::string tokenContext = "https://cognitiveservices.azure.com/.default";

Azure::Identity::ClientSecretCredential cred(tenantId,
    clientId,
    clientSecret,
    Azure::Identity::ClientSecretCredentialOptions());

Azure::Core::Credentials::TokenRequestContext context;
context.Scopes.push_back(tokenContext);

auto token = cred.GetToken(context, Azure::Core::Context());

Kontekst tokenu musi być ustawiony na "https://cognitiveservices.azure.com/.default".

Aby uzyskać token dostępu firmy Microsoft Entra w języku Java, użyj biblioteki klienta tożsamości platformy Azure.

Oto przykład użycia tożsamości platformy Azure do uzyskania tokenu dostępu firmy Microsoft Entra z przeglądarki:

TokenRequestContext context = new TokenRequestContext();
context.addScopes("https://cognitiveservices.azure.com/.default");

InteractiveBrowserCredentialBuilder builder = new InteractiveBrowserCredentialBuilder();
InteractiveBrowserCredential browserCredential = builder.build();

AccessToken browserToken = browserCredential.getToken(context).block();
String token = browserToken.getToken();

Kontekst tokenu musi być ustawiony na "https://cognitiveservices.azure.com/.default".

Aby uzyskać token dostępu firmy Microsoft Entra w języku Java, użyj biblioteki klienta tożsamości platformy Azure.

Oto przykład użycia tożsamości platformy Azure do uzyskania tokenu dostępu firmy Microsoft Entra z przeglądarki interaktywnej:

from azure.identity import  InteractiveBrowserCredential
ibc = InteractiveBrowserCredential()
aadToken = ibc.get_token("https://cognitiveservices.azure.com/.default")

Znajdź przykłady, które pobierają token dostępu firmy Microsoft Entra w przykładach kodu Platforma tożsamości Microsoft.

W przypadku języków programowania, w których biblioteka klienta Platforma tożsamości Microsoft jest niedostępna, można bezpośrednio zażądać tokenu dostępu.

Pobieranie identyfikatora zasobu usługi Mowa

Potrzebujesz identyfikatora zasobu usługi Mowa, aby wykonywać wywołania zestawu SDK przy użyciu uwierzytelniania firmy Microsoft Entra.

Uwaga

W przypadku rozpoznawania intencji użyj identyfikatora zasobu przewidywania usługi LUIS.

Aby uzyskać identyfikator zasobu w witrynie Azure Portal:

  1. Przejdź do witryny Azure Portal i zaloguj się na swoje konto platformy Azure.
  2. Wybierz zasób usługi Mowa.
  3. W grupie Zarządzanie zasobami w okienku po lewej stronie wybierz pozycję Właściwości.
  4. Kopiowanie identyfikatora zasobu

Tworzenie obiektu konfiguracji zestawu SPEECH SDK

Za pomocą tokenu dostępu firmy Microsoft Entra można teraz utworzyć obiekt konfiguracji zestawu Speech SDK.

Metoda podawania tokenu i metoda konstruowania odpowiedniego obiektu zestawu SPEECH SDK Config różni się w zależności od używanego obiektu.

SpeechRecognizer, SpeechSynthesizer, IntentRecognizer, ConversationTranscriber

W przypadku SpeechRecognizerobiektów , ConversationTranscriberSpeechSynthesizerIntentRecognizer, skompiluj token autoryzacji na podstawie identyfikatora zasobu i tokenu dostępu Firmy Microsoft Entra, a następnie użyj go do utworzenia SpeechConfig obiektu.

string resourceId = "Your Resource ID";
string aadToken = "Your Azure AD access token";
string region =  "Your Speech Region";

// You need to include the "aad#" prefix and the "#" (hash) separator between resource ID and AAD access token.
var authorizationToken = $"aad#{resourceId}#{aadToken}";
var speechConfig = SpeechConfig.FromAuthorizationToken(authorizationToken, region);
std::string resourceId = "Your Resource ID";
std::string aadToken = "Your Azure AD access token";
std::string region = "Your Speech Region";

// You need to include the "aad#" prefix and the "#" (hash) separator between resource ID and AAD access token.
auto authorizationToken = "aad#" + resourceId + "#" + aadToken;
auto speechConfig = SpeechConfig::FromAuthorizationToken(authorizationToken, region);
String resourceId = "Your Resource ID";
String region = "Your Region";

// You need to include the "aad#" prefix and the "#" (hash) separator between resource ID and AAD access token.
String authorizationToken = "aad#" + resourceId + "#" + token;
SpeechConfig speechConfig = SpeechConfig.fromAuthorizationToken(authorizationToken, region);
resourceId = "Your Resource ID"
region = "Your Region"
# You need to include the "aad#" prefix and the "#" (hash) separator between resource ID and AAD access token.
authorizationToken = "aad#" + resourceId + "#" + aadToken.token
speechConfig = SpeechConfig(auth_token=authorizationToken, region=region)

TranslationRecognizer

W przypadku elementu TranslationRecognizerutwórz token autoryzacji na podstawie identyfikatora zasobu i tokenu dostępu Firmy Microsoft Entra, a następnie użyj go do utworzenia SpeechTranslationConfig obiektu.

string resourceId = "Your Resource ID";
string aadToken = "Your Azure AD access token";
string region =  "Your Speech Region";

// You need to include the "aad#" prefix and the "#" (hash) separator between resource ID and AAD access token.
var authorizationToken = $"aad#{resourceId}#{aadToken}";
var speechConfig = SpeechTranslationConfig.FromAuthorizationToken(authorizationToken, region);
std::string resourceId = "Your Resource ID";
std::string aadToken = "Your Azure AD access token";
std::string region = "Your Speech Region";

// You need to include the "aad#" prefix and the "#" (hash) separator between resource ID and AAD access token.
auto authorizationToken = "aad#" + resourceId + "#" + aadToken;
auto speechConfig = SpeechTranslationConfig::FromAuthorizationToken(authorizationToken, region);
String resourceId = "Your Resource ID";
String region = "Your Region";

// You need to include the "aad#" prefix and the "#" (hash) separator between resource ID and AAD access token.
String authorizationToken = "aad#" + resourceId + "#" + token;
SpeechTranslationConfig translationConfig = SpeechTranslationConfig.fromAuthorizationToken(authorizationToken, region);
resourceId = "Your Resource ID"
region = "Your Region"

# You need to include the "aad#" prefix and the "#" (hash) separator between resource ID and AAD access token.
authorizationToken = "aad#" + resourceId + "#" + aadToken.token
translationConfig = SpeechTranslationConfig(auth_token=authorizationToken, region=region)

DialogService Połączenie or

DialogServiceConnection W przypadku obiektu skompiluj token autoryzacji na podstawie identyfikatora zasobu i tokenu dostępu Firmy Microsoft Entra, a następnie użyj go do utworzenia CustomCommandsConfig obiektu lub BotFrameworkConfig .

string resourceId = "Your Resource ID";
string aadToken = "Your Azure AD access token";
string region =  "Your Speech Region";
string appId = "Your app ID";

// You need to include the "aad#" prefix and the "#" (hash) separator between resource ID and AAD access token.
var authorizationToken = $"aad#{resourceId}#{aadToken}";
var customCommandsConfig = CustomCommandsConfig.FromAuthorizationToken(appId, authorizationToken, region);
std::string resourceId = "Your Resource ID";
std::string aadToken = "Your Azure AD access token";
std::string region = "Your Speech Region";
std::string appId = "Your app Id";

// You need to include the "aad#" prefix and the "#" (hash) separator between resource ID and AAD access token.
auto authorizationToken = "aad#" + resourceId + "#" + aadToken;
auto customCommandsConfig = CustomCommandsConfig::FromAuthorizationToken(appId, authorizationToken, region);
String resourceId = "Your Resource ID";
String region = "Your Region";
String appId = "Your AppId";

// You need to include the "aad#" prefix and the "#" (hash) separator between resource ID and AAD access token.
String authorizationToken = "aad#" + resourceId + "#" + token;
CustomCommandsConfig dialogServiceConfig = CustomCommandsConfig.fromAuthorizationToken(appId, authorizationToken, region);

Element DialogService Połączenie or nie jest obecnie obsługiwany w języku Python

VoiceProfileClient

Aby użyć VoiceProfileClient uwierzytelniania z usługą Microsoft Entra, użyj nazwy domeny niestandardowej utworzonej powyżej.

string customDomainName = "Your Custom Name";
string hostName = $"https://{customDomainName}.cognitiveservices.azure.com/";
string token = "Your Azure AD access token";

var config =  SpeechConfig.FromHost(new Uri(hostName));

// You need to include the "aad#" prefix and the "#" (hash) separator between resource ID and AAD access token.
var authorizationToken = $"aad#{resourceId}#{aadToken}";
config.AuthorizationToken = authorizationToken;
std::string customDomainName = "Your Custom Name";
std::string aadToken = "Your Azure AD access token";

auto speechConfig = SpeechConfig::FromHost("https://" + customDomainName + ".cognitiveservices.azure.com/");

// You need to include the "aad#" prefix and the "#" (hash) separator between resource ID and AAD access token.
auto authorizationToken = "aad#" + resourceId + "#" + aadToken;
speechConfig->SetAuthorizationToken(authorizationToken);
String aadToken = "Your Azure AD access token";
String customDomainName = "Your Custom Name";
String hostName = "https://" + customDomainName + ".cognitiveservices.azure.com/";
SpeechConfig speechConfig = SpeechConfig.fromHost(new URI(hostName));

// You need to include the "aad#" prefix and the "#" (hash) separator between resource ID and AAD access token.
String authorizationToken = "aad#" + resourceId + "#" + token;

speechConfig.setAuthorizationToken(authorizationToken);

Zestaw VoiceProfileClient SPEECH SDK dla języka Python nie jest dostępny.

Uwaga

Element ConversationTranslator nie obsługuje uwierzytelniania entra firmy Microsoft.