我正在使用一个.net服务器解决方案,它提供身份验证web服务以及其他几个服务URL。访问过程涉及到对身份验证服务URL的初始调用,并使用“Authenticate”soap调用,该调用应返回访问令牌。然后,此令牌用于调用其他服务URL以从服务器检索数据。
我遇到的问题是,我被提供了用于身份验证过程的用户名和密码,但没有任何迹象表明如何将凭据发送到服务器。此外,我正在尝试使用PHP访问web服务(基于.net)。
到目前为止,我已经设法使用wsdl2php为身份验证服务URL生成了类,但是这些类没有提供任何关于用户名和密码如何发送的指示。
我已经尝试将凭据添加为soap标头:
$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);
}...but我收到一条‘拒绝访问’的消息。是否有一种适当的方式将凭据传递给服务以成功进行身份验证?
发布于 2014-04-23 20:40:23
有许多不同的身份验证风格-表单,基本,oauth。如果你有办法通过浏览器登录,我建议运行Fiddler来查看消息流量。Fiddler是一个位于浏览器和服务器之间的中间件工具。它将为您提供数据包报头--这样您就可以看到加密、字段格式和内容类型。然后,您应该模仿该请求。
https://stackoverflow.com/questions/23242612
复制相似问题