如何解决PHP客户端使用qop = auth-int进行摘要式身份验证
| 没有人知道任何PHP库,用于使用qop = auth-int连接使用摘要式身份验证方法的远程服务器吗? 或者,如果没有,现在应该为结果建造A2吗?它在RFC 2617中说我需要使用实体主体,但这是什么?我只是发送一个GET请求,它根本没有任何正文。 提前致谢。解决方法
我也在寻找您问题的答案,除了GET以外的其他要求。
可以使用如下方式:
$entityBody = file_get_contents(\'php://input\');
我还没有测试它是否可行,但是看着这个问题的答案,我会觉得应该这样做。
请注意,该流只能读取一次[1],因此,如果在其他地方再次需要该流,则应重用$ entityBody变量。
, 根据我对类似问题的回答:
我最近使用cURL在PHP中实现了客户端摘要式身份验证。这是完整的代码:
<?php
error_reporting(E_ALL);
ini_set( \'display_errors\',\'1\');
$url = \"https://api.example.com/ws.asmx/do\";
$username = \"username\";
$password = \"pwd\";
$post_data = array(
\'fieldname1\' => \'value1\',\'fieldname2\' => \'value2\'
);
$options = array(
CURLOPT_URL => $url,CURLOPT_HEADER => true,CURLOPT_VERBOSE => true,CURLOPT_RETURNTRANSFER => true,CURLOPT_FOLLOWLOCATION => true,CURLOPT_SSL_VERIFYPEER => false,// for https
CURLOPT_USERPWD => $username . \":\" . $password,CURLOPT_HTTPAUTH => CURLAUTH_DIGEST,CURLOPT_POST => true,CURLOPT_POSTFIELDS => http_build_query($post_data)
);
$ch = curl_init();
curl_setopt_array( $ch,$options );
try {
$raw_response = curl_exec( $ch );
// validate CURL status
if(curl_errno($ch))
throw new Exception(curl_error($ch),500);
// validate HTTP status code (user/password credential issues)
$status_code = curl_getinfo($ch,CURLINFO_HTTP_CODE);
if ($status_code != 200)
throw new Exception(\"Response with Status Code [\" . $status_code . \"].\",500);
} catch(Exception $ex) {
if ($ch != null) curl_close($ch);
throw new Exception($ex);
}
if ($ch != null) curl_close($ch);
echo \"raw response: \" . $raw_response;
?>
, 如果您正在执行GET请求,则不需要auth-int。如果您的服务需要它,则可以假定一个空的实体主体(因此您可以对A2哈希的这一部分进行md5(\“ \”)处理)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。