2017-04-05 104 views
1

我是Azure Data Lake Analytics的新手,正在将存储过程提交到Azure Data Lake Analytics之前将C#批量作业转换为使用服务进行服务身份验证。azure数据湖授权

public void AuthenticateADLUser()    
{ 
    //Connect to ADL 

    // Service principal/appplication authentication with client secret/key 
    SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());   
    cTokenCreds = ApplicationTokenProvider.LoginSilentAsync(strDomain, strWebApp_clientId, strClientSecret).Result;   
    SetupClients(cTokenCreds, strSubscriptionID); 
} 



public static void SetupClients(ServiceClientCredentials tokenCreds, string subscriptionId) 
{ 
    _adlaClient = new DataLakeAnalyticsAccountManagementClient(tokenCreds); 
    _adlaClient.SubscriptionId = subscriptionId; 

    _adlaJobClient = new DataLakeAnalyticsJobManagementClient(tokenCreds); 

    _adlsFileSystemClient = new DataLakeStoreFileSystemManagementClient(tokenCreds); 
} 

即使我已经给它正确的客户端Id错误回来了时,我执行下面的代码错误不同的客户端ID:

var jobInfo = _adlaJobClient.Job.Create(_adlsAccountName, jobId, parameters);. 

的错误信息是:

对象ID为'e83bb777-f3af-4526-ae34-f5461a5fde1c'的客户端'e83bb777-f3af-4526-ae34-f5461a5fde1c'没有权限执行'超出范围'/订阅的Microsoft.Authorization/permissions/read'/a0fb08ca-a074-48 9C-bed0 -....

  1. 为什么ClientID的比我在代码中使用的有什么不同?
  2. 这是代码问题还是权限问题?我假设它是代码,因为ClientID不是我创建的授权的代码。

注意:SubscriptionId是正确的。

回答