在 SharePoint online 上调用 GET 请求时出现 Azure 数据工厂 401 错误 API
Azure Data Factory 401 error when calling GET request on SharePoint online API
我正在尝试在 Azure 数据工厂和 SharePoint Online 之间移动文件。
我在 SharePoint 位置有一些测试数据文件,我在数据工厂中有一个包含 Web Activity 和复制数据 activity 的管道。副本 activity 然后链接到数据湖作为其接收器。
我的期望结果 是复制数据 activity 被授予对 SharePoint Online API 的访问权限,然后继续将检索到的数据移动到数据湖。就目前而言,它具有不记名令牌,但无法通过 SharePoint Online API.
访问数据
我已遵循 Microsoft 指南 here,包括先决条件。
我在数据工厂中收到以下错误:
Error code 2200
"Failure happened on 'Sink' side. ErrorCode=UserErrorInvalidCredentialToReadHttpFile,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=The credential to read http file is invalid.,Source=Microsoft.DataTransfer.ClientLibrary,''Type=System.Net.WebException,Message=The remote server returned an error: (401) Unauthorized.,Source=System,
错误出现在复制数据 activity(使用 HTTP 链接服务),不是网络 activity。因此,我成功地获得了传递给复制数据 activity 的不记名令牌,只是被拒绝了。
疑难解答:
我已为数据分配数据工厂的所有者角色访问权限
湖.
我已经按照先决条件注册了服务主体应用程序
在上面的 Microsoft 指南中,成功使用了应用程序 ID,
用于访问不记名令牌的密钥和租户 ID
我已授予 SharePoint 在线 完全 访问已注册
服务应用程序,成功,因为我可以看到它列在 SharePoint 的受信任应用程序中。我没有这样做
只有在这里:
https://my_company.sharepoint.com/_layouts/15/appinv.aspx
但在这里
https://my_company.sharepoint.com/sites/folder/_layouts/15/appinv.aspx
我已授予对 SharePoint 和 Microsoft Graph 的完整 API 权限
在已注册的服务应用中。
我已经在 Postman 中复制了这个过程。只为拥有相同
结果 - 我检索了一个不记名令牌,然后收到 401 错误
尝试使用不记名令牌调用文件的 GET 请求。
Postman 中的错误是:{"error_description":"Exception of type 'Microsoft.IdentityModel.Tokens.AudienceUriValidationFailedException' was thrown."}
我了解到,数据工厂中的替代 OData 链接服务无法在此处使用基本身份验证。因此,我尝试 this article 使用带有证书的 AAD 服务主体,但在尝试生成证书时遇到了更多问题。也许这是我最好的选择。
我使用过的最相关的帖子:
https://docs.microsoft.com/en-us/answers/questions/109275/copy-file-from-sharepoint-not-working.html
http://www.ktskumar.com/2017/01/access-sharepoint-online-using-postman/
Azure Data Factory and SharePoint
所以我找到了问题的解决方案。使用 Azure 逻辑应用将文件从 SharePoint Online 移动到 Azure 存储。
这比使用数据工厂要容易得多,我希望刚才有人告诉我这一点。
找到参考 here
我正在尝试在 Azure 数据工厂和 SharePoint Online 之间移动文件。
我在 SharePoint 位置有一些测试数据文件,我在数据工厂中有一个包含 Web Activity 和复制数据 activity 的管道。副本 activity 然后链接到数据湖作为其接收器。
我的期望结果 是复制数据 activity 被授予对 SharePoint Online API 的访问权限,然后继续将检索到的数据移动到数据湖。就目前而言,它具有不记名令牌,但无法通过 SharePoint Online API.
访问数据我已遵循 Microsoft 指南 here,包括先决条件。
我在数据工厂中收到以下错误:
Error code 2200
"Failure happened on 'Sink' side. ErrorCode=UserErrorInvalidCredentialToReadHttpFile,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=The credential to read http file is invalid.,Source=Microsoft.DataTransfer.ClientLibrary,''Type=System.Net.WebException,Message=The remote server returned an error: (401) Unauthorized.,Source=System,
错误出现在复制数据 activity(使用 HTTP 链接服务),不是网络 activity。因此,我成功地获得了传递给复制数据 activity 的不记名令牌,只是被拒绝了。
疑难解答:
我已为数据分配数据工厂的所有者角色访问权限 湖.
我已经按照先决条件注册了服务主体应用程序 在上面的 Microsoft 指南中,成功使用了应用程序 ID, 用于访问不记名令牌的密钥和租户 ID
我已授予 SharePoint 在线 完全 访问已注册 服务应用程序,成功,因为我可以看到它列在 SharePoint 的受信任应用程序中。我没有这样做 只有在这里:
https://my_company.sharepoint.com/_layouts/15/appinv.aspx
但在这里https://my_company.sharepoint.com/sites/folder/_layouts/15/appinv.aspx
我已授予对 SharePoint 和 Microsoft Graph 的完整 API 权限 在已注册的服务应用中。
我已经在 Postman 中复制了这个过程。只为拥有相同 结果 - 我检索了一个不记名令牌,然后收到 401 错误 尝试使用不记名令牌调用文件的 GET 请求。 Postman 中的错误是:
{"error_description":"Exception of type 'Microsoft.IdentityModel.Tokens.AudienceUriValidationFailedException' was thrown."}
我了解到,数据工厂中的替代 OData 链接服务无法在此处使用基本身份验证。因此,我尝试 this article 使用带有证书的 AAD 服务主体,但在尝试生成证书时遇到了更多问题。也许这是我最好的选择。
我使用过的最相关的帖子:
https://docs.microsoft.com/en-us/answers/questions/109275/copy-file-from-sharepoint-not-working.html
http://www.ktskumar.com/2017/01/access-sharepoint-online-using-postman/
Azure Data Factory and SharePoint
所以我找到了问题的解决方案。使用 Azure 逻辑应用将文件从 SharePoint Online 移动到 Azure 存储。
这比使用数据工厂要容易得多,我希望刚才有人告诉我这一点。
找到参考 here