从C#应用程序访问应用程序失败

从C#应用程序访问应用程序失败,c#,azure,C#,Azure,我在Azure门户->应用程序注册下注册了一个小应用程序。我正在尝试使用密钥访问 var context = new AuthenticationContext("https://login.windows.net/" + MyConstants.tenantID); ClientCredential cc = new ClientCredential(MyConstants.applicationId, MyConstants.authenticationKey); Authenticatio

我在Azure门户->应用程序注册下注册了一个小应用程序。我正在尝试使用密钥访问

var context = new AuthenticationContext("https://login.windows.net/" + MyConstants.tenantID);
ClientCredential cc = new ClientCredential(MyConstants.applicationId, MyConstants.authenticationKey);
AuthenticationResult result = context.AcquireTokenAsync("https://management.azure.com/", cc).Result;
ServiceClientCredentials cred = new TokenCredentials(result.AccessToken);
client = new DataFactoryManagementClient(cred)
{
    SubscriptionId = MyConstants.subscriptionId
};
如何获取
身份验证密钥

我尝试使用客户端机密,但它不起作用

var context = new AuthenticationContext("https://login.windows.net/" + MyConstants.tenantID);
ClientCredential cc = new ClientCredential(MyConstants.applicationId, MyConstants.authenticationKey);
AuthenticationResult result = context.AcquireTokenAsync("https://management.azure.com/", cc).Result;
ServiceClientCredentials cred = new TokenCredentials(result.AccessToken);
client = new DataFactoryManagementClient(cred)
{
    SubscriptionId = MyConstants.subscriptionId
};
“Microsoft.IdentityModel.Clients.ActiveDirectory.AdalServiceException:AADSTS700016:在目录‘e2454f92-2891-4670-9402-f17f4cef17de’中未找到标识符为‘270d74fc-4085-43ff-ab1e-e2dba48461e0’的应用程序。”。如果应用程序尚未由租户的管理员安装或租户中的任何用户同意,则可能发生这种情况。您可能向错误的租户发送了身份验证请求

跟踪ID:cee6d534-7d75-4fcb-a5e9-0d93ab88af00\r\n相关ID:3b74b95e-a33a-410d-9e4e-82eef4a81817 时间戳:2019-11-11 10:51:43Z-->Microsoft.IdentityModel.Clients.ActiveDirectory.AdalServiceException:响应状态代码不表示成功:400(BADDRequest)


根据您提供的错误,您使用的应用程序id在租户中不存在,或者您没有完成管理内容。如果要使用客户端凭据流获取访问令牌和调用API,请参阅。具体步骤如下。 1.注册Azure广告应用程序

  • 为应用程序分配RABC角色。 因为您想要创建Azure数据工厂,所以可以将
    数据工厂参与者角色
    角色分配给应用程序。有关更多详细信息,请参阅

    a。单击要授予访问权限的订阅

    b。单击访问控制(IAM)

    c。单击“角色分配”选项卡以查看此订阅的所有角色分配

    d。单击添加>添加角色分配以打开添加角色分配窗格。

  • 代码

  • 字符串tenantID=”“;
    字符串applicationId=“”;
    字符串authenticationKey=“”;
    字符串subscriptionId=“”;
    var context=新的AuthenticationContext(“https://login.windows.net/“+租户);
    ClientCredential cc=新的ClientCredential(applicationId,authenticationKey);
    AuthenticationResult=context.AcquireTokenAsync(
    "https://management.azure.com/“,cc)。结果;
    ServiceClientCredentials cred=新令牌凭据(result.AccessToken);
    var客户端=新的DataFactoryManagementClient(cred){
    SubscriptionId=SubscriptionId};
    
    请在实际格式化代码和提取错误方面做一些努力,这样下次错误消息表明密钥可能不是问题所在时,代码就不会像一堵未格式化的文本墙。它抱怨您使用的应用程序ID不存在,或者应用程序尚未正确配置。是的,这可以通过在Azure上重新创建应用程序然后使用应用程序来实现Keys@RashidQuamar据我了解,你的问题已经解决了。如果是的话,你能接受这个答案吗?
    string tenantID = "<your tenant ID>";
    string applicationId = "<your application ID>";
    string authenticationKey = "<your client secret for the application>";
    string subscriptionId = "<your subscription ID where the data factory resides>";
    var context = new AuthenticationContext("https://login.windows.net/" + tenantID);
    ClientCredential cc = new ClientCredential(applicationId, authenticationKey);
    AuthenticationResult result = context.AcquireTokenAsync(
        "https://management.azure.com/", cc).Result;
    ServiceClientCredentials cred = new TokenCredentials(result.AccessToken);
    var client = new DataFactoryManagementClient(cred) {
        SubscriptionId = subscriptionId };