我怎样才能让我的PHP SoapClient的与文摘进行身份验证

问题描述 投票:1回答:1

我现在有与被调用通过SoapClient的Web服务的PHP页面一起在IIS上承载一个vb.net ASMX Web服务。

我需要验证对ActiveDirectory中的web服务,我想通这样做将启用IIS摘要式身份验证,并允许用户输入他们的AD用户名/密码进入PHP页面,并在发送的SOAPHeaders此认证的最简单的方法。

我不能很清楚如何试图联系WSDL(这也是背后的摘要式身份验证)时,去了解这一点,尤其是。

任何帮助,将不胜感激。

谢谢

编辑:我已经试过:

SERVICE_URL点http://mypage/service.asmx?wsdl

尝试1:用户和通过为MD5

$options = array(
        'authentication' => SOAP_AUTHENTICATION_DIGEST,
        'realm' => 'myrealm',
        'login' => $_SESSION['authUser'],
        'password' => $_SESSION['authPass']
    );
try { $client = new SoapClient(SERVICE_URL, $options); }

尝试2:验证是“用户”:“境界”:“通”作为MD5:

$options = array(
        'authentication' => SOAP_AUTHENTICATION_DIGEST,
        'login' => $_SESSION['auth']
    );
try { $client = new SoapClient(SERVICE_URL, $options); }
php vb.net soap asmx digest
1个回答
0
投票

您可以添加使用SoapHeader()类/对象(SoapHeader() documentation)和SOAP对象操作__setSoapHeaders()__setSoapHeaders() documentation)头添加到您的SOAP客户端。

您的要求会是这个样子:

<?php

    $options = array(
        'authentication' => SOAP_AUTHENTICATION_DIGEST,
        'realm' => 'myrealm',
        'login' => $_SESSION['authUser'],
        'password' => $_SESSION['authPass']
    );
    try { 
        $client = new SoapClient(SERVICE_URL, $options);

        // create and populate header array
        $headers = array();
        $headers[] = new SoapHeader('MYNAMESPACE', 
            'authentication',
            'SOAP_AUTHENTICATION_DIGEST');
        $headers[] = new SoapHeader('MYNAMESPACE', 
            'realm',
            'myrealm');

        $client->__setSoapHeaders($headers); // set headers
        $client->__soapCall("echoVoid", null); // make soap call
    }

?>
© www.soinside.com 2019 - 2024. All rights reserved.