1

我正在使用Angular 8开发一个应用程序,并尝试通过其REST API连接到Azure Data Lake Gen 2 的文件系统,以便能够检索文件夹列表以及进行文件导入。

对于身份验证,我使用库msal-angular,它允许我通过函数检索ID令牌和通过loginPopup函数检索访问令牌acquireTokenSilent

我使用这个方案作为指导:aad connection flow

范围:['user.read','api://<uuid>/user_impersonation']api 范围

然后我使用storage-datalake库尝试从我的数据湖中检索信息。所以我使用登录用户的访问令牌来创建一个DataLakeStorageClientwith TokenCredentials. 然后我尝试恢复我的一个文件系统上的文件夹列表。

我收到此错误:401 (Server failed to authenticate the request. Please refer to the information in the www-authenticate header.)

你知道我的问题可能来自哪里吗?

我的用户具有以下角色:

  • 贡献者
  • 存储 Blob 数据贡献者

API 权限: api 权限

当我在没有用户模拟(作为服务主体)的情况下使用END-USER 身份验证时,我可以访问我的文件系统......

预先感谢您的帮助。

4

1 回答 1

0

范围不正确。您不能在范围内使用两种资源。user.read是为了https://graph.microsoft.com资源。api://<uuid>/user_impersonation是为了你自己的资源。

您可以尝试使用['https://datalake.azure.net/.default']as 范围。

于 2019-10-30T09:57:31.150 回答