C# azure数据湖授权
我是Azure Data Lake Analytics的新手,在向Azure Data Lake Analytics提交存储过程之前,我正在将C#批处理作业转换为使用服务到服务的身份验证C# azure数据湖授权,c#,azure,azure-data-lake,C#,Azure,Azure Data Lake,我是Azure Data Lake Analytics的新手,在向Azure Data Lake Analytics提交存储过程之前,我正在将C#批处理作业转换为使用服务到服务的身份验证 public void AuthenticateADLUser() { //Connect to ADL // Service principal / appplication authentication with client secret / key
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);.
错误消息是:
对象id为“e83bb777-f3af-4526-ae34-f5461a5fde1c”的客户端“e83bb777-f3af-4526-ae34-f5461a5fde1c”无权执行操作“Microsoft.authorization/permissions/read'over scope'/subscriptions/a0fb08ca-a074-489c-bed0-
注意:订阅ID是正确的。我假设您创建了Azure Active Directory应用程序,并且您是该应用程序的客户端和域ID。如果没有,你就需要这个。。。如果您确实拥有该权限,那么您是否可以检查该应用程序是否具有对您的Data Lake Store的权限:我假设您创建了一个Azure Active Directory应用程序,并且您是该应用程序的客户端和域ID。如果没有,你就需要这个。。。如果您确实有,那么您是否可以检查应用程序是否对您的Data Lake Store具有权限:具有完全相同的症状。WebApp最初是在门户中的AAD中创建的,用于访问Azure Data Lake Store,同样的代码片段工作得非常好。当我决定重新使用同一个WebApp(clientid/secret)时,它失败了,并出现了相同的错误,尽管我在sub/RG/ADLA上为该应用程序指定了读者/参与者角色 我认为原因是WebApp下面有一个“服务主体”对象(因此错误消息显示不同的对象id),ADLA出于某种原因使用它。我的未设置凭据-结果为空:
Get-AzureRmADSpCredential -objectid <object_id_from_error_msg>
Get AzureRmADSpCredential-objectid
如前所述添加了新密码
New AzureRmADSpCredential-objectid-password$password
在LoginSilentAsync中将pwd用作机密,clientId与以前一样-WebApp clientId(不是错误中显示的主体对象id)
我无法在门户中找到此主要信息,只有PS.有完全相同的症状。WebApp最初是在门户中的AAD中创建的,用于访问Azure Data Lake Store,同样的代码片段工作得非常好。当我决定重新使用同一个WebApp(clientid/secret)时,它失败了,并出现了相同的错误,尽管我在sub/RG/ADLA上为该应用程序指定了读者/参与者角色 我认为原因是WebApp下面有一个“服务主体”对象(因此错误消息显示不同的对象id),ADLA出于某种原因使用它。我的未设置凭据-结果为空:
Get-AzureRmADSpCredential -objectid <object_id_from_error_msg>
Get AzureRmADSpCredential-objectid
如前所述添加了新密码
New AzureRmADSpCredential-objectid-password$password
在LoginSilentAsync中将pwd用作机密,clientId与以前一样-WebApp clientId(不是错误中显示的主体对象id)
我在门户中找不到这个主要信息,只有PS。@Mike Waggoner:你能告诉我最新情况吗?有帮助吗?@Mike Waggoner:你能告诉我最新情况吗?有帮助吗?