我是Azure Data Lake Analytics的新手,在将存储过程提交到Azure Data Lake Analytics之前,我正在转换C#批处理作业以使用服务进行身份验证。
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);
}
即使我已经给它正确的ClientId,当我执行以下代码时,错误会返回错误中的不同ClientID:
var jobInfo = _adlaJobClient.Job.Create(_adlsAccountName, jobId, parameters);.
错误消息是:
客户' e83bb777-f3af-4526-ae34-f5461a5fde1c'对象id' e83bb777-f3af-4526-ae34-f5461a5fde1c'没有授权执行操作' Microsoft.Authorization / permissions / read'超范围' / subscriptions / a0fb08ca-a074-489c-bed0 -....
注意:SubscriptionId是正确的。
答案 0 :(得分:0)
我假设您创建了一个Azure Active Directory应用程序,并且您是此应用程序的客户端和域ID。如果没有,您将需要...如果您有,那么您可以检查应用程序是否具有Data Lake Store的权限:https://docs.microsoft.com/en-us/azure/data-lake-store/data-lake-store-authenticate-using-active-directory
答案 1 :(得分:0)
有完全相同的症状。 WebApp最初是在门户网站的AAD中创建的,用于访问Azure Data Lake Store,并且相同的代码片段运行良好。当我决定重新使用相同的WebApp(clientid / secret)时,即使我已经将sub / RG / ADLA上的读者/参与者角色发送到应用程序,它也会出现相同的错误。
我认为原因是下面的WebApp有一个“服务主体”对象(因此错误信息显示不同的对象ID),ADLA出于某种原因使用它。我没有凭证设置 - 空结果:
lon <- sample(1:5, size = 200, replace = TRUE)
lat <- sample(35:40, size = 200, replace = TRUE)
sst <- 1:200
time_years <- rep(rep(1:10, each = 10), 2)
time_months <- rep(rep(1:10, times = 10), 2)
time_year_months <- paste(time_years, time_months, sep = "-")
library(dplyr)
tibble(lat = as.numeric(lat), lon = as.numeric(lon), sst = as.numeric(sst), time_years, time_months, time_year_months) %>%
filter(lon > -2, lon < 10, lat > 35, lat < 40) %>%
group_by(time_year_months) %>%
summarise(mean_sst = mean(sst))
添加了here
所述的新密码Get-AzureRmADSpCredential -objectid <object_id_from_error_msg>
在LoginSilentAsync中使用pwd作为秘密,clientId与以前一样 - WebApp clientId(不是错误中显示的主要对象id)
我无法在门户网站中找到此主要信息,只有PS。