首页 > 解决方案 > 数据工厂无法使用基本身份验证从 Web API 下载 CSV 文件

问题描述

我正在尝试使用 HTTP 连接器作为复制活动中的源链接服务从数据工厂中的网站下载 CSV 文件。它基本上是对看起来像https://www.mywebsite.org/api/entityname.csv?fields=:all&paging=false的 url 的网络调用。

该网站使用基本身份验证。我已经通过在浏览器中使用 url 并输入凭据进行了手动测试,一切正常。我在复制活动中使用 REST 连接器将数据下载为 JSON 文件(相同的 url,只是没有“.csv”),并且工作正常。但是 HTTP 连接器中的身份验证有些不同并会导致问题。当我尝试执行我的复制活动时,它会下载一个 csv 文件,其中包含源网站上登录页面的 HTML。

在搜索时,我确实在文档中遇到了这个Github 问题,该问题表明最初没有发送基本身份验证标头,这可能会导致问题。

正如我现在所拥有的,身份验证是在链接服务中定义的。我希望也许我可以在我的复制活动中向源的 Additional Headers 或 Request Body 属性添加一些东西来完成这项工作,但我还没有找到正确的东西。

非常感谢使用 HTTP 连接器和基本身份验证的工作副本活动的尝试或代码示例的建议。

标签: azure-data-factoryazure-data-factory-2

解决方案


HTTP 连接器期望 API 在初始请求后返回 401 Unauthorized 响应。然后它以基本身份验证凭据进行响应。如果 API 不这样做,它将不会使用 HTTP 链接服务中提供的凭据。

如果是这种情况,请转到复制活动源,并在附加标头属性中添加授权:基本后跟用户名:密码的 base64 编码字符串。它应该看起来像这样(最后的字符串是编码的用户名:密码):

Authorization: Basic ZxN0b2njFasdfkVEH1fU2GM=`

最好不要将其硬编码到复制活动中,而是从 Key Vault 中检索并作为安全输入传递给复制活动。


推荐阅读