PHP和C#之间的安全通信

时间:2014-11-21 13:38:28

标签: c# php security dynamics-crm

我正在开发一个需要与Microsoft Dynamics CRM集成的PHP应用程序。我研究了在PHP和MSCRM服务器之间直接通信的方法,最后决定使用C#bridge设计它,即PHP应用程序连接到与MSCRM交互的C#服务。

现在我的问题是安全性,C#服务和MSCRM服务器之间的通信是安全的,但在PHP应用程序和C#服务之间,我对如何实现某种加密有点困惑。

基本上,我正在寻找建议,有没有人之前处理过这样的问题?你做了什么?是否有一种简单,安全的方法,或者这是一个复杂的过程?

1 个答案:

答案 0 :(得分:0)

您可以让PHP直接安全地与CRM对话。额外的桥梁只是开销,实际上并没有带来多大好处。

这是一篇包含CRM Online的PHP助手类的博客文章: http://www.hashtagcrm.com/?p=17

首先使用该帮助程序,然后使用您需要的任何特定功能对其进行扩展。该帮助程序甚至包括一个示例函数,该函数显示如何添加您自己的特定功能:

  //Returns the Parent Account Name of the specified Contact
  public function sampleFunction($contactid){

    $getParentCustomer = '
                        <Retrieve xmlns="http://schemas.microsoft.com/xrm/2011/Contracts/Services" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
                          <entityName>contact</entityName>
                          <id>'.$contactid.'</id>
                          <columnSet xmlns:a="http://schemas.microsoft.com/xrm/2011/Contracts">
                            <a:AllColumns>false</a:AllColumns>
                            <a:Columns xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
                              <b:string>parentcustomeridname</b:string>
                            </a:Columns>
                          </columnSet>
                        </Retrieve>';

    $getParentCustomerResult = $this->sendQuery($getParentCustomer, 'Retrieve');

    $responsedom = new DomDocument();
    $responsedom->loadXML($getParentCustomerResult);
    $KeyValuePairs = $responsedom->getElementsbyTagName("KeyValuePairOfstringanyType");

    foreach($KeyValuePairs as $results) {
      if ($results->childNodes->item(0)->nodeValue == "parentcustomeridname") {
        return $results->childNodes->item(1)->childNodes->item(0)->nodeValue;
      }
      else {
        return 'No Result';
      }
    }
  }

然后在你的主程序中,你会运行这样的东西:

require_once('dynamicsclient.php');
$dynamicsClient = new dynamicsClient(0);

//prints the Parent Account name of the specified Contact ID
echo $dynamicsClient->sampleFunction("<CONTACTID>");