Аутентификация между службами в 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.

Предварительные требования

Создание приложения .NET

  1. В Visual Studio откройте меню Файл и выберите Создать, а затем — Проект.

  2. Выберите Console App (.NET Framework) (Консольное приложение (.NET Framework)), а затем нажмите кнопкуДалее.

  3. В окнеИмя проекта введите CreateADLApplication, а затем выберите Создать.

  4. Добавьте пакеты NuGet в проект.

    1. В обозревателе решений щелкните правой кнопкой мыши имя проекта и выберите пункт Управление пакетами NuGet.

    2. На вкладке Диспетчер пакетов NuGet в поле Источник пакета выберите nuget.org и установите флажок Включить предварительные выпуски.

    3. Найдите и установите следующие пакеты NuGet:

      • Microsoft.Azure.Management.DataLake.Store. В этом руководстве используется предварительная версия 2.1.3.

      • Microsoft.Rest.ClientRuntime.Azure.Authentication. В этом руководстве используется версия 2.2.12.

        Добавление источника NuGet

    4. Закройте Диспетчер пакетов NuGet.

  5. Откройте файл 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-го поколения см. в следующих статьях.