首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >azure数据湖授权

azure数据湖授权
EN

Stack Overflow用户
提问于 2017-04-05 17:08:35
回答 2查看 849关注 0票数 1

我是Azure Data的新手,在将存储过程提交给Analytics之前,我正在将一个C#批处理作业转换为使用服务来服务身份验证。

代码语言:javascript
复制
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:

代码语言:javascript
复制
var jobInfo = _adlaJobClient.Job.Create(_adlsAccountName, jobId, parameters);. 

错误信息是:

客户端'e83bb777-f3af-4526-ae34-f5461a5fde1c‘与对象id 'e83bb777-f3af-4526-ae34-f5461a5fde1c’没有执行操作的授权。授权/权限/读取“对范围”/订阅/a0fb08ca-a074-489c-bed0-.

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

注意: SubscriptionId是正确的。

EN

回答 2

Stack Overflow用户

发布于 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的权限

票数 0
EN

Stack Overflow用户

发布于 2018-04-19 20:43:40

有完全相同的症状。WebApp是在门户网站AAD中创建的,最初用于访问Azure Data,而相同的代码片段工作得非常完美。当我决定重复使用相同的WebApp (clientid/WebApp)时,它失败的原因是相同的错误,尽管我已经将sub/ADLA上的读者/贡献者角色赋予了应用程序。

我认为原因是下面的WebApp有一个“服务主体”对象(因此error msg显示了不同的对象id),ADLA出于某种原因使用它。我的证书没有设置为空的结果:

代码语言:javascript
复制
Get-AzureRmADSpCredential -objectid <object_id_from_error_msg>

添加了新密码,如所描述的这里

代码语言:javascript
复制
New-AzureRmADSpCredential -objectid <object_id_from_error_msg> -password $password

在LoginSilentAsync中使用pwd作为机密,clientId与以前一样- WebApp clientId (而不是错误中显示的主对象id )。

我在门户网站上找不到这个主要信息,只有PS。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43237511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档