【发布时间】:2018-09-20 10:41:29
【问题描述】:
我使用 curl 在 Ckan 中创建资源,一切正常:
curl -H'Authorization: zzzzzz-zzzzz-zzzzz-zzzzz-zzzzzz' 'https://ckan.site.com/api/action/resource_create' --form upload=@/home/file.csv --form package_id=test-upload-file --form url='' --form name='test 12' --form format='csv'
但是,如果 Ckan 位于具有 basic-auth 的 Apache Web 服务器上(所以当我尝试登录 Web 界面时,会出现一个询问用户名和密码的弹出窗口)curl 停止工作。我在 curl 命令中添加了 -u 选项以将用户名和密码传递给 Web 服务器,但我总是收到来自 Apache 的“未经授权”的回答;我还尝试使用 http://username:password@ckan.site.com 或 -n 和 .netrc 文件传递用户名和密码,但我没有运气。
我怀疑 Apache 弄乱了“授权”标头:一个是通过 curl 和 -H 选项传递的,另一个是因为在 Apache (documentation here) 中配置了基本身份验证...也许他们混淆了?
如果我尝试简单地curl -n https://ckan.site.com/我可以下载Ckan主页。
这里是 Apache 的基本认证配置:
<Location />
AuthType Basic
AuthName "ckan login"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Location>
这是我在 Apache 日志中看到的 auth_basic 错误:
client used wrong authentication scheme: /api/action/resource_create
【问题讨论】: