我是Azure Data的新手,在将存储过程提交给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’没有执行操作的授权。授权/权限/读取“对范围”/订阅/a0fb08ca-a074-489c-bed0-.
注意: SubscriptionId是正确的。
发布于 2017-07-12 14:18:01
我以为您创建了一个Azure Active Directory应用程序,并且您是此应用程序的客户端和域ID。如果不是,你就需要那个..。如果有,那么可以检查应用程序是否拥有对Data:https://learn.microsoft.com/en-us/azure/data-lake-store/data-lake-store-authenticate-using-active-directory的权限
发布于 2018-04-19 20:43:40
有完全相同的症状。WebApp是在门户网站AAD中创建的,最初用于访问Azure Data,而相同的代码片段工作得非常完美。当我决定重复使用相同的WebApp (clientid/WebApp)时,它失败的原因是相同的错误,尽管我已经将sub/ADLA上的读者/贡献者角色赋予了应用程序。
我认为原因是下面的WebApp有一个“服务主体”对象(因此error msg显示了不同的对象id),ADLA出于某种原因使用它。我的证书没有设置为空的结果:
Get-AzureRmADSpCredential -objectid <object_id_from_error_msg>添加了新密码,如所描述的这里
New-AzureRmADSpCredential -objectid <object_id_from_error_msg> -password $password在LoginSilentAsync中使用pwd作为机密,clientId与以前一样- WebApp clientId (而不是错误中显示的主对象id )。
我在门户网站上找不到这个主要信息,只有PS。
https://stackoverflow.com/questions/43237511
复制相似问题