【问题标题】:PHP: calling an API protected using basic authenticationPHP:调用使用基本身份验证保护的 API
【发布时间】:2012-11-14 19:40:53
【问题描述】:

我在现在使用基本身份验证保护的服务器上部署了一个 API。

我还有一个脚本在运行 APi 的同一台服务器上运行,它需要调用 API。

脚本:test.php

<?php
$url = 'https://my_site.myapi/account/add/{"account_id":"1234555"}
$username = 'myname';
$password = 'mypassword';
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERPWD, $username.":".$password);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,5);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$data = curl_exec($ch);
curl_close($ch);

当我尝试从浏览器调用 test.php 时:

https://my_site.myapi/test.php

我被提升为用户名和密码。我没有收到错误消息。有什么想法吗?

虚拟主机部分

DocumentRoot /var/www/mysite/web/
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

<Directory "/var/www/api_section_1">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
    AuthType Basic
    AuthName "Restricted Access"
    AuthUserFile /usr/local/apache/passwd/passwords
</Directory>

Alias /winapi /var/www/another_section/
<Directory "/var/www/another_section">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
    AuthType Basic
    AuthName "Restricted Access"
    AuthUserFile /usr/local/apache/passwd/passwords
</Directory>

【问题讨论】:

    标签: php authentication curl


    【解决方案1】:

    如果系统提示您输入密码,那不是来自您的 curl 调用,而是来自 apache。我的猜测是您的https://my_site.myapi/test.php 页面也被基本身份验证错误地保护了。

    curl_exec() 将返回一个指示需要身份验证的错误,而不是提示您进行身份验证。

    【讨论】:

    • @EastsideDeveloper 我假设您在进行这些更改后重新启动了 Apache?它是否提示输入同一目录中其他脚本的凭据?
    • 是的,我重新启动了 Apache。我删除了密码文件并重新创建了它。这解决了问题。
    • 但是,我最初也保护了主文档目录(除了损坏的密码文件)
    【解决方案2】:

    您的基本身份验证是否需要任何编码 - 例如,用户名和密码令牌可能需要进行 base64 编码。

    要检查的另一件事是详细信息是否包含在授权标头中 - 检查请求标头以查看是否是这种情况。

    【讨论】:

    • 我尝试了使用和不使用 base64 编码。我认为使用 cUrl 的目的是我不需要发送 Authorization 标头
    • 我想 curl 将您从设置中抽象出来,但根据您传递的 curl 选项进行设置。您需要检查实际的请求标头以查看真正发送的内容。
    猜你喜欢
    • 2021-09-24
    • 2019-03-01
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-06
    相关资源
    最近更新 更多