Аутентификация между службами в Azure Data Lake Storage 1-го поколения с помощью пакета SDK для .NET
В этой статье описывается, как использовать пакет SDK для .NET для аутентификации между службами в Azure Data Lake Storage 1-го поколения. Дополнительные сведения об аутентификации пользователей в Azure Data Lake Storage 1-го поколения с помощью пакета SDK для .NET см. в статье Аутентификация пользователя в Azure Data Lake Storage 1-го поколения с помощью пакета SDK для .NET.
Предварительные требования
Visual Studio 2013 или более поздней версии. В инструкциях ниже используется Visual Studio 2019.
Подписка Azure. См. страницу бесплатной пробной версии Azure.
Создайте веб-приложение Microsoft Entra ID. Необходимо выполнить действия, описанные в статье Проверка подлинности между службами с помощью Data Lake Storage 1-го поколения с помощью Microsoft Entra ID.
Создание приложения .NET
В Visual Studio откройте меню Файл и выберите Создать, а затем — Проект.
Выберите Console App (.NET Framework) (Консольное приложение (.NET Framework)), а затем нажмите кнопкуДалее.
В окнеИмя проекта введите
CreateADLApplication
, а затем выберите Создать.Добавьте пакеты NuGet в проект.
В обозревателе решений щелкните правой кнопкой мыши имя проекта и выберите пункт Управление пакетами NuGet.
На вкладке Диспетчер пакетов NuGet в поле Источник пакета выберите nuget.org и установите флажок Включить предварительные выпуски.
Найдите и установите следующие пакеты NuGet:
Microsoft.Azure.Management.DataLake.Store
. В этом руководстве используется предварительная версия 2.1.3.Microsoft.Rest.ClientRuntime.Azure.Authentication
. В этом руководстве используется версия 2.2.12.
Закройте Диспетчер пакетов NuGet.
Откройте файл Program.cs, удалите существующий код и включите следующие инструкции, чтобы добавить ссылки на пространства имен.
using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Collections.Generic;
using System.Security.Cryptography.X509Certificates; // Required only if you are using an Azure AD application created with certificates
using Microsoft.Rest;
using Microsoft.Rest.Azure.Authentication;
using Microsoft.Azure.Management.DataLake.Store;
using Microsoft.Azure.Management.DataLake.Store.Models;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
Аутентификация между службами с помощью секрета клиента
Добавьте следующий фрагмент кода в клиентское приложение .NET. Замените значения заполнителей значениями, полученными из веб-приложения Microsoft Entra (указано в качестве необходимого компонента). Этот фрагмент кода позволяет выполнять проверку подлинности приложения в неинтерактивном режиме с помощью Data Lake Storage 1-го поколения с помощью секрета или ключа клиента для Microsoft Entra веб-приложения.
private static void Main(string[] args)
{
// Service principal / application authentication with client secret / key
// Use the client ID of an existing AAD "Web App" application.
string TENANT = "<AAD-directory-domain>";
string CLIENTID = "<AAD_WEB_APP_CLIENT_ID>";
System.Uri ARM_TOKEN_AUDIENCE = new System.Uri(@"https://management.core.windows.net/");
System.Uri ADL_TOKEN_AUDIENCE = new System.Uri(@"https://datalake.azure.net/");
string secret_key = "<AAD_WEB_APP_SECRET_KEY>";
var armCreds = GetCreds_SPI_SecretKey(TENANT, ARM_TOKEN_AUDIENCE, CLIENTID, secret_key);
var adlCreds = GetCreds_SPI_SecretKey(TENANT, ADL_TOKEN_AUDIENCE, CLIENTID, secret_key);
}
В предыдущем фрагменте используется вспомогательная функция GetCreds_SPI_SecretKey
. Код этой функции см. на этой странице GitHub.
Аутентификация между службами с помощью сертификата
Добавьте следующий фрагмент кода в клиентское приложение .NET. Замените значения заполнителей значениями, полученными из веб-приложения Microsoft Entra (указано в качестве необходимого компонента). Этот фрагмент кода позволяет выполнять проверку подлинности приложения в неинтерактивном режиме с помощью Data Lake Storage 1-го поколения с помощью сертификата для Microsoft Entra веб-приложения. Инструкции по созданию приложения Microsoft Entra см. в статье Создание субъекта-службы с сертификатами.
private static void Main(string[] args)
{
// Service principal / application authentication with certificate
// Use the client ID and certificate of an existing AAD "Web App" application.
string TENANT = "<AAD-directory-domain>";
string CLIENTID = "<AAD_WEB_APP_CLIENT_ID>";
System.Uri ARM_TOKEN_AUDIENCE = new System.Uri(@"https://management.core.windows.net/");
System.Uri ADL_TOKEN_AUDIENCE = new System.Uri(@"https://datalake.azure.net/");
var cert = new X509Certificate2(@"d:\cert.pfx", "<certpassword>");
var armCreds = GetCreds_SPI_Cert(TENANT, ARM_TOKEN_AUDIENCE, CLIENTID, cert);
var adlCreds = GetCreds_SPI_Cert(TENANT, ADL_TOKEN_AUDIENCE, CLIENTID, cert);
}
В предыдущем фрагменте используется вспомогательная функция GetCreds_SPI_Cert
. Код этой функции см. на этой странице GitHub.
Дальнейшие действия
В этой статье описывается, как использовать аутентификацию между службами, чтобы реализовать аутентификацию в Data Lake Storage 1-го поколения с помощью пакета SDK для .NET. Дополнительные сведения об использовании пакета SDK для .NET для работы с Data Lake Storage 1-го поколения см. в следующих статьях.