【问题标题】:Get credentials for DataFactoryManagementClient获取 DataFactoryManagementClient 的凭据
【发布时间】:2020-07-31 23:16:21
【问题描述】:

我有生成凭据以传递给 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 对象。

有什么办法吗?

【问题讨论】:

  • 您好,如果我的回复对您有帮助,请采纳,谢谢。

标签: azure-functions azure-data-factory azure-managed-identity


【解决方案1】:

如果你想用DataFactoryManagementClient使用azure函数的系统分配标识,你可以使用AzureServiceTokenProvider,当你发布你的代码到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);
        }
    }
}

【讨论】:

    猜你喜欢
    • 2011-05-09
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 2021-01-17
    • 2015-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多