php - 使用仅提供用户名、密码和证书颁发机构的 PHP 连接到 Web 服务

标签 php web-services security soap ssl

我正在使用 Microsoft C# 成功连接到 Microsoft Web 服务。我必须提供用户名、密码(在 C# 代码中);并将证书(.cer 格式)安装到系统证书的“根证书颁发机构”部分。

如何在 PHP 中连接到这样的 Web 服务?我问的原因是我见过的所有方法(例如创建 SoapClient 子类的 wsdl2php)似乎都假设了各种东西,例如 SSL 证书、SSL key 文件和 SSL key 密码。

所以这一切让我感到困惑。我不确定应该去哪里。我不确定我的“根证书颁发机构”(.cer 文件)应该放在哪里,以及用户名和密码应该放在哪里。有什么想法吗?

最佳答案

所有这些都可以用 soapclient 完成和 stream_context_create使用 ssl options

<?php
$context = stream_context_create(array(
  'https' => array(
     'cafile' => '/path to file',
     'verify_peer' => true
  )));

new soapclient("https://localhost/index.php?wsdl",array(
  'login'=>'admin',
  'password'=>'passss',
  'stream_context'=> $context
));

在 soap 中不使用 http auth 而只是一个 soap-call 的情况并不少见,文档是必不可少的

使用 soapclient 和使用类映射的类将 soaptypes 映射到 php 类是有益的

关于php - 使用仅提供用户名、密码和证书颁发机构的 PHP 连接到 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6830137/

相关文章:

php - 多对多关系。如何连接表格?

php - 如何检查sql值是否已存在于表中以防止重复?

声明不带参数的函数原型(prototype)会造成安全漏洞吗?

security - 图数据库漏洞

php - 有效地删除多个表中的数据mySQLi Prepared Statement

php - 如何从 Windows 命令提示符在 Laravel 中运行 PHPUnit

java - SOAP - 非常大的 XML 响应 - OutOfMemoryError

python - 使用python提供应用服务

ios - iOS Moya Web服务: make one call wait for all others to finish,然后阻止新调用

php - ssl 未在 codeigniter 网站的首次访问中显示