Share via


Microsoft Entra-Authentifizierung mit Speech SDK

Wenn Sie den Sprach-SDK für den Zugriff auf den Sprachdienst verwenden, stehen drei Authentifizierungsmethoden zur Verfügung: Dienstschlüssel, ein schlüsselbasiertes Token und Microsoft Entra ID. In diesem Artikel wird beschrieben, wie Sie eine Sprach-Ressource konfigurieren und ein Speech-SDK-Konfigurationsobjekt erstellen, um Microsoft Entra ID für die Authentifizierung zu verwenden.

In diesem Artikel erfahren Sie, wie Sie Microsoft Entra-Authentifizierung mit dem Speech-SDK verwenden. Folgendes wird vermittelt:

  • Erstellen einer Speech-Ressource
  • Konfigurieren der Speech-Ressource für die Microsoft Entra-Authentifizierung
  • Erhalten eines Microsoft Entra-Zugriffstokens
  • Erstellen Sie das entsprechende SDK-Konfigurationsobjekt.

Weitere Informationen zu Microsoft Entra-Zugriffstoken, einschließlich der Tokenlebensdauer, finden Sie unter Microsoft Identity Platform – Zugriffstoken.

Erstellen einer Speech-Ressource

Informationen zum Erstellen einer Speech-Ressource im Azure-Portal finden Sie unter Abrufen der Schlüssel für Ihre Ressource

Konfigurieren der Speech-Ressource für die Microsoft Entra-Authentifizierung

Um Ihre Speech-Ressource für Microsoft Entra-Authentifizierung zu konfigurieren, erstellen Sie einen benutzerdefinierten Domänennamen, und weisen Sie Rollen zu.

Erstellen eines benutzerdefinierten Domänennamens

Führen Sie diese Schritte aus, um einen benutzerdefinierten Unterdomänennamen für Azure KI Services für Ihre Speech-Ressource zu erstellen.

Achtung

Wenn Sie einen benutzerdefinierten Domänennamen aktivieren, kann der Vorgang nicht rückgängig gemacht werden. Sie können den regionalen Namen nur wiederherstellen, indem Sie eine neue Speech-Ressource erstellen.

Wenn Ihrer Speech-Ressource viele benutzerdefinierte Modelle und Projekte zugeordnet sind, die über Speech Studio erstellt wurden, wird dringend empfohlen, die Konfiguration mit einer Testressource auszuprobieren und Produktionsressourcen erst im Anschluss zu bearbeiten.

Befolgen Sie diese Schritte, um einen benutzerdefinierten Domänennamen im Azure-Portal zu erstellen:

  1. Navigieren Sie zum Azure-Portal, und melden Sie sich bei Ihrem Azure-Konto an.

  2. Wählen Sie die erforderliche Speech-Ressource aus.

  3. Wählen Sie in der Gruppe Ressourcenverwaltung im linken Bereich die Option Netzwerk aus.

  4. Wählen Sie auf der Registerkarte Firewalls und virtuelle Netzwerke die Option Benutzerdefinierten Domänennamen generieren aus. Dadurch wird rechts ein Panel mit Anweisungen zum Erstellen einer eindeutigen benutzerdefinierten Unterdomäne für Ihre Ressource geöffnet.

  5. Geben Sie im Bereich Benutzerdefinierten Domänennamen generieren einen benutzerdefinierten Domänennamen ein. Ihre vollständige benutzerdefinierte Domäne sieht wie https://{your custom name}.cognitiveservices.azure.com aus.

    Hinweis: Nachdem Sie einen benutzerdefinierten Domänennamen erstellt haben, kann dieser nicht mehr geändert werden.

    Nachdem Sie Ihren benutzerdefinierten Domänennamen eingegeben haben, wählen Sie Speichern aus.

  6. Nachdem der Vorgang abgeschlossen ist, wählen Sie in der Gruppe Ressourcenverwaltung die Option Schlüssel und Endpunkt aus. Vergewissern Sie sich, dass der neue Endpunktname Ihrer Ressource mit https://{your custom name}.cognitiveservices.azure.com beginnt.

Zuweisen von Rollen

Für die Microsoft Entra-Authentifizierung mit Sprachressourcen müssen Sie entweder die Rolle Cognitive Services Sprachmitwirkender oder Cognitive Services Sprachbenutzer zuweisen.

In demAzure-Portal oder PowerShellkönnen Sie dem Benutzer oder der Anwendung Rollen zuweisen.

Erhalten eines Microsoft Entra-Zugriffstokens

Verwenden Sie die Azure Identity Client Library, um ein Microsoft Entra-Zugriffstoken in C# abzurufen.

Hier finden Sie ein Beispiel für die Verwendung von Azure Identity zum Abrufen eines Microsoft Entra Zugriffstokens aus einem interaktiven Browser:

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;

Der Tokenkontext muss auf „https://cognitiveservices.azure.com/.default" festgelegt werden.

Verwenden Sie die Azure Identity Client Library, um ein Microsoft Entra-Zugriffstoken in C++ abzurufen.

Hier finden Sie ein Beispiel für die Verwendung von Azure Identity zum Abrufen eines Microsoft Entra-Zugriffstokens mit Ihrer Mandanten-ID, Client-ID und den Anmeldeinformationen Ihres geheimen Clientschlüssels:

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

Der Tokenkontext muss auf „https://cognitiveservices.azure.com/.default" festgelegt werden.

Verwenden Sie die Azure Identity Client Library, um ein Microsoft Entra-Zugriffstoken in Java abzurufen.

Hier finden Sie ein Beispiel für die Verwendung von Azure Identity zum Abrufen eines Microsoft Entra Zugriffstokens aus einem Browser:

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

Der Tokenkontext muss auf „https://cognitiveservices.azure.com/.default" festgelegt werden.

Verwenden Sie die Azure Identity Client Library, um ein Microsoft Entra-Zugriffstoken in Java abzurufen.

Hier finden Sie ein Beispiel für die Verwendung von Azure Identity zum Abrufen eines Microsoft Entra Zugriffstokens aus einem interaktiven Browser:

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

Beispiele zum Abrufen eines Microsoft Entra Zugriffstokens finden Sie in Microsoft Identity Platform Codebeispielen.

Für Programmiersprachen, in Microsoft Identity Platform Clientbibliothek nicht verfügbar ist, können Sie direkt ein Zugriffstoken anfordern.

Erhalten der Sprachressourcen-ID

Sie benötigen Ihre Speech-Ressourcen-ID, um SDK-Aufrufe mithilfe Microsoft Entra-Authentifizierung tätigen zu können.

Hinweis

Für eine Sprechabsichtserkennung verwenden Sie Ihre LUIS-Vorhersage-Ressourcen-ID.

So erhalten Sie die Ressourcen-ID im Azure-Portal:

  1. Navigieren Sie zum Azure-Portal, und melden Sie sich bei Ihrem Azure-Konto an.
  2. Wählen Sie eine Sprachressource aus.
  3. Wählen Sie in der Gruppe Ressourcenverwaltung im linken Bereich die Option Eigenschaften aus.
  4. Kopieren Sie die Ressourcen-ID

Erstellen des Sprach-SDK-Konfigurationsobjekts

Mit einem Microsoft Entra Zugriffstoken können Sie jetzt ein Speech-SDK-Konfigurationsobjekt erstellen.

Die Methode zum Bereitstellen des Tokens und die Methode zum Erstellen des entsprechenden Sprach-SDK-Objekts Config variieren je nach dem Objekt, das Sie verwenden.

SpeechRecognizer, SpeechSynthesizer, IntentRecognizer, ConversationTranscriber

Erstellen Sie für Objekte vom Typ SpeechRecognizer, SpeechSynthesizer, IntentRecognizer und ConversationTranscriber das Autorisierungstoken aus der Ressourcen-ID und dem Microsoft Entra-Zugriffstoken, und verwenden Sie es dann, um ein SpeechConfig-Objekt zu erstellen.

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

Erstellen Sie für TranslationRecognizer das Autorisierungstoken aus der Ressourcen-ID und dem Microsoft Entra-Zugriffstoken, und verwenden Sie es dann, um ein SpeechTranslationConfig-Objekt zu erstellen.

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

Erstellen Sie für das DialogServiceConnection-Objekt das Autorisierungstoken aus der Ressourcen-ID und dem Azure AD-Zugriffstoken, und verwenden Sie es dann, um ein CustomCommandsConfig- oder ein BotFrameworkConfig-Objekt zu erstellen.

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 wird in Python derzeit nicht unterstützt

VoiceProfileClient

Verwenden Sie den oben erstellten benutzerdefinierten Domänennamen, um VoiceProfileClient mit der Microsoft Entra-Authentifizierung zu verwenden.

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 ist nicht mit dem Sprach-SDK für Python verfügbar.

Hinweis

ConversationTranslator unterstützt die Microsoft Entra-Authentifizierung nicht.