Аутентификация в Ruby и MS Dynamics CRM - PullRequest
1 голос
/ 10 февраля 2011

Я пытаюсь получить доступ к MS CRM, который открывается через IFD, и у меня возникают проблемы с аутентификацией.

Конечная точка SOAP находится за NTLM, к которому я смог получить доступ.Проблема в том, что при получении запросов я получаю 401 ответ:

    <?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <Execute xmlns="http://schemas.microsoft.com/crm/2007/CrmDiscoveryService">
            <Request xsi:type="RetrieveCrmTicketRequest">
                <OrganizationName>#{CRM_CONFIG[:org_name]}</OrganizationName>
                <UserId>#{CRM_CONFIG[:username]}</UserId>
                <Password>#{CRM_CONFIG[:password]}</Password>
            </Request>
        </Execute>
    </soap:Body>
</soap:Envelope>

Есть ли способ отладки этого на сервере?Любые журналы, которые я могу проверить, чтобы получить более значимое сообщение об ошибке?

Я также получаю 401 при попытке выполнить следующий запрос (на этот раз к конечной точке CrmService.asmx):

<?xml version=\"1.0\" encoding=\"utf-8\"?>
<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">
  <soap:Header>
    <CrmAuthenticationToken xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">
      <AuthenticationType xmlns=\"http://schemas.microsoft.com/crm/2007/CoreTypes\">2</AuthenticationType>
      <OrganizationName xmlns=\"http://schemas.microsoft.com/crm/2007/CoreTypes\">#{CRM_CONFIG[:org_name]}</OrganizationName>
      <CallerId xmlns=\"http://schemas.microsoft.com/crm/2007/CoreTypes\">#{TOUCH}</CallerId>
    </CrmAuthenticationToken>
  </soap:Header>
  <soap:Body>
    <RetrieveMultiple xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">
      <query xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:QueryExpression\">
        <q1:EntityName>contact</q1:EntityName>
      </query>
    </RetrieveMultiple>
  </soap:Body>
</soap:Envelope>

Ответы [ 2 ]

2 голосов
/ 10 февраля 2011

Хорошо, проблема была в неправильном понимании настройки:

При использовании NTLM используется аутентификация Active Directory, что означает, что CrmAuthenticationToken должен был выглядеть следующим образом:

<CrmAuthenticationToken xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">
  <AuthenticationType xmlns=\"http://schemas.microsoft.com/crm/2007/CoreTypes\">0</AuthenticationType>
  <OrganizationName xmlns=\"http://schemas.microsoft.com/crm/2007/CoreTypes\">#{CRM_CONFIG[:org_name]}</OrganizationName>
</CrmAuthenticationToken>

Примечаниечто элемент CallerId не нужен.

0 голосов
/ 10 февраля 2011

Вы можете включить трассировку на стороне сервера вручную или с помощью инструмента .Найдите файлы трассировки в C: \ Program Files \ Microsoft Dynamics CRM \ Trace.Для удобного просмотра файла трассировки я рекомендую использовать CRM Trace Log Viewer .

Существует множество статей о том, как вызвать веб-службы Dynamics CRM из JavaScript .Я могу себе представить, что они пригодятся.

По моему опыту, пригодятся еще два инструмента: Fiddler для отслеживания http-запросов и ответов и SoapUI для вебатестирование и отладка сервисов.

Также обратите внимание, что Dynamics CRM 2011 будет поставляться с сервисами на основе REST в дополнение к SOAP, что значительно упростит использование веб-сервисов CRM по сравнению с продуктами, не относящимися к .net.

...