Получить учетные данные для DataFactoryManagementClient - PullRequest
0 голосов
/ 01 августа 2020

У меня есть код, который генерирует учетные данные для передачи DataFactoryManagementClient. Он использует регистрацию приложения для получения учетных данных, поскольку я запустил его в консольном приложении.

    public DataFactoryClient(string tenantId, string subscriptionId, string applicationId, string clientSecret)
    {
        AuthenticationContext context = new AuthenticationContext("https://login.windows.net/" + tenantId);
        ClientCredential clientCredential = new ClientCredential(applicationId, clientSecret);
        AuthenticationResult result = context.AcquireTokenAsync(
            "https://management.azure.com/", clientCredential).Result;
        ServiceClientCredentials credentials = new TokenCredentials(result.AccessToken);
        client = new DataFactoryManagementClient(credentials)
        {
            SubscriptionId = subscriptionId
        };
    }

Я переместил код в функцию Azure, теперь я хочу избавиться от регистрации приложения и просто используйте управляемую идентификацию, назначенную автоматически (я включил ее). Я не могу понять, как это сделать ... DataFactoryManagementClient ожидает объект ServiceClientCredentials, но у меня есть объект ManagedIdentityCredential.

Есть ли способ сделать это?

1 Ответ

0 голосов
/ 03 августа 2020

Если вы хотите использовать назначенный системой идентификатор функции azure с DataFactoryManagementClient, вы можете использовать AzureServiceTokenProvider, когда вы публикуете sh свой код в azure функция, она будет использовать присвоенный системой идентификатор вашей функции автоматически.

Примечание: При использовании кода создайте строку подключения AzureServicesAuthConnectionString для сначала ваше приложение-функция, чтобы использовать идентификатор, назначенный системой, его значение должно быть RunAs=App.

Образец (я тестирую его локально, чтобы получить ADF, он автоматически использует учетную запись VS для авторизации, в функции azure используется идентификатор, присвоенный системой):

using Microsoft.Azure.Management.DataFactory;
using Microsoft.Azure.Services.AppAuthentication;
using Microsoft.Rest;

namespace ConsoleApp11
{
    class Program
    {
        static void Main(string[] args)
        {
            AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
            string accessToken = azureServiceTokenProvider.GetAccessTokenAsync("https://management.azure.com/").Result;
            string subscriptionId = "xxxxxxxx";
            ServiceClientCredentials credentials = new TokenCredentials(accessToken);
            var client = new DataFactoryManagementClient(credentials)
            {
                SubscriptionId = subscriptionId
            };
            var a = client.Factories.Get("group-name","joyfactory");
            System.Console.WriteLine(a);
        }
    }
}

введите описание изображения здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...