Бөлісу құралы:


Проверка подлинности Microsoft Entra с помощью пакета SDK службы "Речь"

При использовании пакета SDK службы "Речь" для доступа к службе "Речь" доступны три метода проверки подлинности: ключи службы, маркер на основе ключей и идентификатор Microsoft Entra. В этой статье описывается настройка ресурса "Речь" и создание объекта конфигурации пакета SDK службы "Речь" для использования идентификатора Microsoft Entra для проверки подлинности.

В этой статье показано, как использовать проверку подлинности Microsoft Entra с пакетом SDK службы "Речь". Узнайте следующие темы:

  • создавать ресурс службы "Речь";
  • Настройка ресурса службы "Речь" для проверки подлинности Microsoft Entra
  • Получение маркера доступа Microsoft Entra
  • создавать соответствующий объект конфигурации пакета SDK.

Дополнительные сведения о маркерах доступа Microsoft Entra, включая время существования маркеров, посетите маркеры доступа в платформа удостоверений Майкрософт.

создавать ресурс службы "Речь";

Сведения о создании ресурса службы "Речь" на портале Azure см. в статье Получение ключей для ресурса

Настройка ресурса службы "Речь" для проверки подлинности Microsoft Entra

Чтобы настроить ресурс службы "Речь" для проверки подлинности Microsoft Entra, создайте имя личного домена и назначьте роли.

Создание пользовательского доменного имени

Выполните следующие действия, чтобы создать пользовательское имя поддомена для служб ИИ Azure для ресурса "Речь".

Внимание

Операция включения имени личного домена необратима. Единственный способ вернуться к региональному имени — создать новый ресурс "Речь".

Если у вашего ресурса "Речь" много связанных пользовательских моделей и проектов создано с помощью Speech Studio, настоятельно рекомендуется выполнить настройку с помощью тестового ресурса, прежде чем изменять ресурс, используемый в рабочей среде.

Чтобы создать имя личного домена на портале Azure, выполните следующие действия:

  1. Откройте портал Azure и войдите в свою учетную запись Azure.

  2. Выберите необходимый ресурс "Речь".

  3. В группе Управление ресурсами на левой панели выберите Сеть.

  4. На вкладке Брандмауэры и виртуальные сети выберите Создать пользовательское доменное имя. Справа появится новая панель с инструкциями по созданию уникального пользовательского поддомена для ресурса.

  5. На панели Создание пользовательского доменного имени введите пользовательское доменное имя. Полное имя вашего личного домена будет выглядеть так: https://{your custom name}.cognitiveservices.azure.com.

    Помните, что после создания пользовательского доменного имени его нельзя изменить.

    Указав пользовательское доменное имя, нажмите кнопку Сохранить.

  6. После завершения операции в группе Управление ресурсами выберите Ключи и конечная точка. Убедитесь, что имя новой конечной точки ресурса начинается так: https://{your custom name}.cognitiveservices.azure.com.

Назначение ролей

Для проверки подлинности Microsoft Entra с помощью ресурсов службы "Речь" необходимо назначить роль "Участник речи Cognitive Services" или "Пользователь службы распознавания речи Cognitive Services".

Роли можно назначить пользователю или приложению с помощью портала Azure или PowerShell.

Получение маркера доступа Microsoft Entra

Чтобы получить маркер доступа Microsoft Entra в C#, используйте клиентская библиотека удостоверений Azure.

Ниже приведен пример использования удостоверения Azure для получения маркера доступа Microsoft Entra из интерактивного браузера:

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;

Для контекста маркера необходимо задать значение https://cognitiveservices.azure.com/.default".

Чтобы получить маркер доступа Microsoft Entra в C++, используйте клиентская библиотека удостоверений Azure.

Ниже приведен пример использования удостоверения Azure для получения маркера доступа Microsoft Entra с идентификатором клиента, идентификатором клиента и учетными данными секрета клиента:

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

Для контекста маркера необходимо задать значение https://cognitiveservices.azure.com/.default".

Чтобы получить маркер доступа Microsoft Entra на Java, используйте клиентская библиотека удостоверений Azure.

Ниже приведен пример использования удостоверения Azure для получения маркера доступа Microsoft Entra из браузера:

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

Для контекста маркера необходимо задать значение https://cognitiveservices.azure.com/.default".

Чтобы получить маркер доступа Microsoft Entra в Python, используйте клиентская библиотека удостоверений Azure.

Ниже приведен пример использования удостоверения Azure для получения маркера доступа Microsoft Entra из интерактивного браузера:

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

Найдите примеры, которые получают маркер доступа Microsoft Entra в платформа удостоверений Майкрософт примерах кода.

Для языков программирования, для которых клиентская библиотека платформы удостоверений Майкрософт недоступна, можно запрашивать маркер доступа напрямую.

Получение идентификатора ресурса службы "Речь"

Вам нужен идентификатор ресурса службы "Речь" для вызова пакета SDK с помощью проверки подлинности Microsoft Entra.

Примечание.

Для распознавания намерений используйте идентификатор ресурса прогнозирования LUIS.

Чтобы получить идентификатор ресурса на портале Azure, выполните следующие действия.

  1. Откройте портал Azure и войдите в свою учетную запись Azure.
  2. Выберите ресурс службы "Речь".
  3. В группе Управление ресурсами на левой панели выберите Свойства.
  4. Скопируйте Идентификатор ресурса.

Создание объекта конфигурации пакета SDK службы "Речь"

С помощью маркера доступа Microsoft Entra теперь можно создать объект конфигурации пакета SDK службы "Речь".

Метод предоставления маркера и метод создания соответствующего объекта пакета SDK Config службы "Речь" зависит от используемого объекта.

SpeechRecognizer, SpeechSynthesizer, IntentRecognizer, ConversationTranscriber

Для SpeechRecognizer, SpeechSynthesizerIntentRecognizerConversationTranscriber объекты, создайте маркер авторизации из идентификатора ресурса и маркера доступа Microsoft Entra, а затем используйте его для создания SpeechConfig объекта.

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

TranslationRecognizerДля этого создайте маркер авторизации из идентификатора ресурса и маркера доступа Microsoft Entra, а затем используйте его для создания SpeechTranslationConfig объекта.

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)

DialogServiceConnector

DialogServiceConnection Для объекта создайте маркер авторизации из идентификатора ресурса и маркера доступа Microsoft Entra, а затем используйте его для создания CustomCommandsConfig или 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);

В настоящее время DialogServiceConnector не поддерживается в Python

VoiceProfileClient

Чтобы использовать VoiceProfileClient проверку подлинности Microsoft Entra, используйте имя личного домена, созданное выше.

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

Объект VoiceProfileClient недоступен в пакете SDK службы "Речь" для Python.

Примечание.

Проверка ConversationTranslator подлинности Microsoft Entra не поддерживается.