Поделиться через


Получение необходимых значений для проверки подлинности приложения при предоставлении доступа к Базе данных SQL Azure из кода

Применимо к: База данных SQL Azureбазе данных SQL в Fabric

Чтобы создать База данных SQL Azure из кода и управлять ими, необходимо зарегистрировать приложение с помощью идентификатора Microsoft Entra (ранее — Azure Active Directory). Приложение должно быть зарегистрировано в том же клиенте Microsoft Entra, что и ресурс База данных SQL Azure.

Создание субъекта-службы для доступа к ресурсам из приложения

В следующих примерах создается приложение Microsoft Entra и субъект-служба, необходимые для проверки подлинности приложения C#. Сценарий выводит значения, необходимые для предыдущего примера на C#. Дополнительные сведения см. в статье Использование Azure PowerShell для создания субъекта-службы и доступа к ресурсам.

Внимание

Модуль PowerShell Azure Resource Manager (AzureRM) был признан устаревшим 29 февраля 2024 г. Все будущие разработки должны использовать модуль Az.Sql. Пользователям рекомендуется перейти с AzureRM на модуль Az PowerShell, чтобы обеспечить продолжение поддержки и обновлений. Модуль AzureRM больше не обслуживается и не поддерживается. Аргументы команд в модуле Az PowerShell и в модулях AzureRM существенно идентичны. Дополнительные сведения о совместимости см. в статье "Знакомство с новым модулем Az PowerShell".

# sign in to Azure
Connect-AzAccount

# for multiple subscriptions, uncomment and set to the subscription you want to work with
#$subscriptionId = "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}"
#Set-AzContext -SubscriptionId $subscriptionId

$appName = "{app-name}" # display name for your app, must be unique in your directory
$uri = "http://{app-name}" # does not need to be a real uri
$secret = "{app-password}"

# create an AAD app
$azureAdApplication = New-AzADApplication -DisplayName $appName -HomePage $Uri -IdentifierUris $Uri -Password $secret

# create a Service Principal for the app
$svcprincipal = New-AzADServicePrincipal -ApplicationId $azureAdApplication.ApplicationId

Start-Sleep -s 15 # to avoid a PrincipalNotFound error, pause here for 15 seconds

# if you still get a PrincipalNotFound error, then rerun the following until successful.
$roleassignment = New-AzRoleAssignment -RoleDefinitionName Contributor -ServicePrincipalName $azureAdApplication.ApplicationId.Guid

# output the values we need for our C# application to successfully authenticate
Write-Output "Copy these values into the C# sample app"

Write-Output "_subscriptionId:" (Get-AzContext).Subscription.SubscriptionId
Write-Output "_tenantId:" (Get-AzContext).Tenant.TenantId
Write-Output "_applicationId:" $azureAdApplication.ApplicationId.Guid
Write-Output "_applicationSecret:" $secret