2014-04-23 111 views
0

我正在與一個.net服務器解決方案一起提供驗證Web服務以及其他幾個服務URL。訪問過程涉及對認證服務URL的初始調用,並使用'Authenticate'soap調用,該調用應該返回訪問令牌。然後使用此令牌調用其他服務URL以從服務器檢索數據。使用PHP驗證.NET Web服務

我遇到的問題是我爲驗證過程提供了一個用戶名和密碼,但沒有說明證書如何發送到服務器。此外,我試圖使用PHP訪問基於Web的Web服務(基於.net)。

到目前爲止,我已經設法使用wsdl2php爲認證服務URL生成類,但是這些類沒有提供任何關於如何發送用戶名和密碼的指示。

我已經嘗試添加憑據肥皂頭:

$headerContent = "<o:UserName xmlns:o=\"$namespace\"> 
        <o:UserName>$uname</o:UserName> 
        <o:Password>$pword</o:Password> 
        </o:UserName>"; 
$headerVar = new SoapVar($headerContent, XSD_ANYXML, null, null, null); 
$header = new SoapHeader($namespace, 'o:ClientCredentials', $headerVar); 
$this->__setSoapHeaders(array($header)); 


try { 
    return $this->__soapCall('Authenticate', array()); 
} catch (Exception $e) { 
    throw new Exception('Not allowed.', 0, $e); 
} 

...但我收到「訪問被拒絕」的消息。是否有正確的方法將憑據傳遞給服務以成功進行身份驗證?

回答

0

有許多不同的認證風格 - 表單,基本,oauth。如果您有通過瀏覽器登錄的方法,我會建議您運行Fiddler來查看消息流量。 Fiddler是位於瀏覽器和服務器之間的中間件工具。它會給你包頭 - 這樣你就可以看到加密,字段格式和內容類型。您應該模仿請求。