我需要访问使用Navision User + SSL的Navision Web服务。我使用的连接器基于PHP。
我能够连接到简单的http访问并使用Window的用户。这是帮助我实现Freddy编写的Navision Web Service PHP的教程。
我仍然在使用它,但在curl / request中添加证书。研究和阅读了很多文章,但我仍然无法实现。
我现在可以使用上面共享的基本php连接器(链接)访问它,但在检索数据时,我收到以下详细信息:
...成功设置证书验证位置:
* CAfile:/Path/Navision.pem
*使用TLSv1.0 / AES256-SHA进行SSL连接 *服务器证书:
...... * SSL证书验证结果:无法获得本地颁发者证书(20),无论如何都要继续。
*使用NTLM与用户'用户'的服务器认证 POST Navision页面URL名称HTTP / 1.1
授权:NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA =
...... 方法:POST
连接:保持活力
User-Agent:PHP-SOAP-CURL
Content-Type:text / xml; charset = utf-8
SOAPAction:“urn:microsoft-dynamics-schemas / page / pda_item_list:ReadMultiple”
...... < HTTP / 1.1 401未经授权......
我使用makecert.exe来使用证书。我有这些文件2 .cer,一个pvk和一个.crl ..我们使用.cer文件中的一个将指纹应用到navision服务实例上。哪个文件是php curl连接器使用的正确文件。
这是我的请求php代码:
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);
curl_setopt($ch, CURLOPT_USERPWD, USERPWD);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_CAINFO, __DIR__ . '/Navision.pem');
如果我能够通过使用Navision用户和SSL访问它使用PHP连接器来使用Navision的Web服务,那么任何相关的链接都将非常受欢迎。
更新
我现在可以使用有效证书并且能够正确传递。 仍然它现在不起作用并返回上面相同的错误..未经授权的401。
很可能是因为我的Navision设置或者我只是以错误的方式传递凭据?我目前仍在研究和播放,但我仍然无法提取数据。
答案 0 :(得分:0)
您有两种选择:
具有使用用户名身份验证的第二个服务层。这将使PHP能够使用Basic Auth。在这种情况下,您需要一个证书
第二个选项是使用相同的服务层,但生成一个Web服务密钥以供PHP使用。您可以使用相同的用户名使用基本身份验证,但使用Web服务密钥作为密码
PHP不是NTLM身份验证的粉丝......
干杯