【问题标题】:How to add security headers to soap request in php Zend如何在 php Zend 中向肥皂请求添加安全标头
【发布时间】:2012-05-09 10:16:47
【问题描述】:

我正在使用 WS 安全性调用基于 JAVA 的肥皂服务。但是每当我尝试调用这些服务时,它们都会给出安全标头无效的错误。谁能告诉我如何使用 php zend 框架构建安全标头并构建 Soap 请求。

【问题讨论】:

    标签: php zend-framework soap soap-client


    【解决方案1】:

    如果您可以发布到目前为止的代码以尝试为您排除故障,那将会很有帮助。否则,这是一个没有任何代码的示例。

    我们也使用 Zend 框架,并且需要将安全标头传递给 HTTPS 服务。 Zend Framework SOAP 安全标头在 IMO 的开发中相当落后,我们发现基础 PHP CURL 工作得更好,也很容易实现。

    在 Authorization: Basic (below) 中,您会注意到 base64_encode...这是我们传递用户 ID 的地方:密码。

    function makeRequest($requestData){     
            $str = "site_id=62621&service_name=TestService&fx_request=" . $reqeustData;
            $strLength = strlen($str);
    
            $headers = array(
                    "Authorization: Basic " . base64_encode("12321:123456123456321654"),
                    "Content-Type: application/x-www-form-urlencoded", 
                    "Content-Length: $strLength",
                ); 
    
            $url = 'https://siteName.Here.com/WebServices/AccountingService';
    
            $ch = curl_init($url);
    
            curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    
            curl_setopt($ch, CURLOPT_POST, 1);
    
            curl_setopt($ch, CURLOPT_POSTFIELDS, $str);
    
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 80);
    
            curl_setopt($ch, CURLOPT_TIMEOUT, 80);
    
            $response = curl_exec($ch);
    
            if (curl_errno($ch)) { 
                return "Error: " . curl_error($ch);
            } else {
                curl_close($ch);  
                return $response; 
            }
        }
    

    希望这会有所帮助。


    --编辑到以前的答案,对具有 WSSE 安全性的 WSDL 进行 RE 注释--

    对于 WSSE 安全性,有这个 Zend Framework 类

    class Zend_Service_DeveloperGarden_Client_Soap extends Zend_Soap_Client
    

    哪个有这个功能,我相信是你要找的

    addWsseSecurityTokenHeader
    

    详细说明请看此链接 Class Description on Zend Framework website

    请查看此链接以查看实际的代码文件 Code File on Zend Framework website

    【讨论】:

    • 但我有使用 WSSE 安全认证的 wsdl 文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 2019-06-23
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多