Share via


Microsoft Entra-verificatie met de Speech SDK

Wanneer u de Speech SDK gebruikt voor toegang tot de Speech-service, zijn er drie verificatiemethoden beschikbaar: servicesleutels, een sleuteltoken en Microsoft Entra-id. In dit artikel wordt beschreven hoe u een Speech-resource configureert en een Speech SDK-configuratieobject maakt voor het gebruik van Microsoft Entra ID voor verificatie.

In dit artikel wordt beschreven hoe u Microsoft Entra-verificatie gebruikt met de Speech SDK. U leert het volgende:

  • Een spraakresource maken
  • De Spraak-resource configureren voor Microsoft Entra-verificatie
  • Een Microsoft Entra-toegangstoken ophalen
  • Maak het juiste SDK-configuratieobject.

Voor meer informatie over Microsoft Entra-toegangstokens, inclusief levensduur van tokens, gaat u naar Access-tokens in het Microsoft Identity Platform.

Een spraakresource maken

Als u een Spraak-resource wilt maken in Azure Portal, raadpleegt u De sleutels voor uw resource ophalen

De Spraak-resource configureren voor Microsoft Entra-verificatie

Als u uw Spraak-resource voor Microsoft Entra-verificatie wilt configureren, maakt u een aangepaste domeinnaam en wijst u rollen toe.

Een aangepaste domeinnaam maken

Volg deze stappen om een aangepaste subdomeinnaam te maken voor Azure AI-services voor uw Speech-resource.

Let op

Wanneer u een aangepaste domeinnaam inschakelt, is de bewerking niet omkeerbaar. De enige manier om terug te gaan naar de regionale naam is door een nieuwe Spraak-resource te maken.

Als uw Speech-resource veel aangepaste modellen en projecten bevat die zijn gemaakt via Speech Studio, raden we u ten zeerste aan om de configuratie uit te voeren met een testresource voordat u de resource die in productie wordt gebruikt, wijzigt.

Voer de volgende stappen uit om een aangepaste domeinnaam te maken met behulp van Azure Portal:

  1. Ga naar Azure Portal en meld u aan bij uw account.

  2. Selecteer de vereiste spraakresource.

  3. Selecteer Netwerken in de groep Resourcebeheer in het linkerdeelvenster.

  4. Selecteer Op het tabblad Firewalls en virtuele netwerken de optie Aangepaste domeinnaam genereren. Er wordt een nieuw rechterdeelvenster weergegeven met instructies voor het maken van een uniek aangepast subdomein voor uw resource.

  5. Voer in het deelvenster Aangepaste domeinnaam genereren een aangepaste domeinnaam in. Uw volledige aangepaste domein ziet er als volgt uit: https://{your custom name}.cognitiveservices.azure.com.

    Nadat u een aangepaste domeinnaam hebt gemaakt, kan deze niet meer worden gewijzigd.

    Nadat u uw aangepaste domeinnaam hebt ingevoerd, selecteert u Opslaan.

  6. Nadat de bewerking is voltooid, selecteert u sleutels en eindpunt in de resourcebeheergroep. Controleer of de naam van het nieuwe eindpunt van uw resource op deze manier wordt gestart: https://{your custom name}.cognitiveservices.azure.com.

Rollen toewijzen

Voor Microsoft Entra-verificatie met Spraakresources moet u de rol Cognitive Services Speech Contributor of Cognitive Services Speech User toewijzen.

U kunt rollen toewijzen aan de gebruiker of toepassing met behulp van Azure Portal of PowerShell.

Een Microsoft Entra-toegangstoken ophalen

Als u een Microsoft Entra-toegangstoken in C# wilt ophalen, gebruikt u de Azure Identity-clientbibliotheek.

Hier volgt een voorbeeld van het gebruik van Azure Identity om een Microsoft Entra-toegangstoken op te halen vanuit een interactieve 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;

De tokencontext moet worden ingesteld op 'https://cognitiveservices.azure.com/.default".

Als u een Microsoft Entra-toegangstoken in C++wilt ophalen, gebruikt u de Azure Identity-clientbibliotheek.

Hier volgt een voorbeeld van het gebruik van Azure Identity om een Microsoft Entra-toegangstoken op te halen met uw tenant-id, client-id en referenties voor clientgeheimen:

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

De tokencontext moet worden ingesteld op 'https://cognitiveservices.azure.com/.default".

Als u een Microsoft Entra-toegangstoken in Java wilt ophalen, gebruikt u de Azure Identity-clientbibliotheek.

Hier volgt een voorbeeld van het gebruik van Azure Identity om een Microsoft Entra-toegangstoken op te halen vanuit een 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();

De tokencontext moet worden ingesteld op 'https://cognitiveservices.azure.com/.default".

Gebruik de Azure Identity-clientbibliotheek om een Microsoft Entra-toegangstoken in Python op te halen.

Hier volgt een voorbeeld van het gebruik van Azure Identity om een Microsoft Entra-toegangstoken op te halen vanuit een interactieve browser:

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

Zoek voorbeelden die een Microsoft Entra-toegangstoken ophalen in codevoorbeelden van het Microsoft Identity Platform.

Voor programmeertalen waar een Clientbibliotheek van Microsoft Identity Platform niet beschikbaar is, kunt u rechtstreeks een toegangstoken aanvragen.

De spraakresource-id ophalen

U hebt uw Spraak-resource-id nodig om SDK-aanroepen te doen met behulp van Microsoft Entra-verificatie.

Notitie

Voor intentieherkenning gebruikt u uw LUIS-voorspellingsresource-id.

De resource-id ophalen in Azure Portal:

  1. Ga naar Azure Portal en meld u aan bij uw account.
  2. Selecteer een spraakresource.
  3. Selecteer Eigenschappen in de groep Resourcebeheer in het linkerdeelvenster.
  4. De resource-id kopiëren

Het Speech SDK-configuratieobject maken

Met een Microsoft Entra-toegangstoken kunt u nu een Speech SDK-configuratieobject maken.

De methode voor het opgegeven token en de methode voor het maken van het bijbehorende Speech SDK-object Config verschilt per object dat u gebruikt.

SpeechRecognizer, SpeechSynthesizer, IntentRecognizer, ConversationTranscriber

Voor SpeechRecognizer, SpeechSynthesizer, IntentRecognizerConversationTranscriber objecten, bouwt u het autorisatietoken op basis van de resource-id en het Microsoft Entra-toegangstoken en gebruikt u het vervolgens om een SpeechConfig object te maken.

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

Bouw voor het TranslationRecognizerautorisatietoken het autorisatietoken op basis van de resource-id en het Microsoft Entra-toegangstoken en gebruik het vervolgens om een SpeechTranslationConfig object te maken.

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

Bouw voor het DialogServiceConnection object het autorisatietoken op basis van de resource-id en het Microsoft Entra-toegangstoken en gebruik het vervolgens om een CustomCommandsConfig of een BotFrameworkConfig object te maken.

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 wordt momenteel niet ondersteund in Python

VoiceProfileClient

Als u de VoiceProfileClient verificatie met Microsoft Entra wilt gebruiken, gebruikt u de aangepaste domeinnaam die hierboven is gemaakt.

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

De VoiceProfileClient is niet beschikbaar met de Speech SDK voor Python.

Notitie

Microsoft ConversationTranslator Entra-verificatie wordt niet ondersteund.