Обзор MSCRM 2011 beta SDK - Введение в REST

Пока пропущу один небольшой раздел из серии обзоров SDK и расскажу про REST.

Взаимодействие с Microsoft Dynamics CRM 4.0 на клиентской стороне сводилось к вызову XML Web-сервиса путём формирования в клиентском скрипте SOAP-запроса. Плюсом данной технологии является интероперабельность - возможность использования сервиса независимо от технологий и языков программирования. И это был единственный способ взаимодействия с системой на стороне клиента. Минусов куда как больше:

  • сложная структура запроса - формирование объёмного XML-запроса занятие кропотливое,
  • трудности парсинга (разбора) ответа, т.к. необходимы знания объектной модели документа (DOM), регулярных выражений и XQuery/XPath для извлечения требуемых данных,
  • нетривиальная обработка ошибок.

Для решения возникающих трудностей с вызовом XML Web-сервиса CRM различными командами были предложены обёртки, призванные облегчить эту задачу:

Реализация REST в CRM 2011

В Microsoft Dynamics CRM 2011 данные теперь доступны через конечную точку REST. REST (Representational State Transfer) - архитектурный подход, который подразумевает использование ресурсов через обращение по уникальному URI-пути. А это значит, что теперь достаточно обратиться GET-, POST-, MERGE-, DELETE- или PUT-запросом на определённый URI, чтобы извлечь данные из CRM, обновить, удалить или сохранить запись. Читать далее »

Xrm.Page.context и функция GetGlobalContext

Продолжаю обзор SDK поставки Microsoft Dynamics CRM 2011 beta.

Объект Xrm.Page.context предоставляет доступ к текущему контексту страницы. С помощью него можно получить информацию об организации и текущем пользователе. Xrm.Page.context предоставляет доступ к следующим функциям:

  • getAuthenticationHeader - возвращает закодированное значение SOAP-заголовка необходимого для вызова Web-сервиса (формата CRM 4.0) из скрипта;
  • getOrgLcid - возвращает LCID - идентификатор культуры (локаль) текущей организации;
  • getOrgUniqueName - возвращает уникальное имя текущей организации;
  • getQueryStringParameters - возвращает массив GET-параметров текущего вызова;
  • getServerUrl - возвращает базовый URL CRM (при использовании офлайн с клиентом Outlook для CRM возвращает ссылку на локальный сервис);
  • getUserId - возвращает GUID текущего пользователя (отличная замена WhoAmI-запросам);
  • getUserLcid - возвращает LCID - идентификатор культуры (локаль) текущего пользователя;
  • getUserRoles - возвращает массив идентификаторов (GUID) ролей текущего пользователя.

Но что делать, если вы хотите использовать эти чрезвычайно полезные функции в клиентском коде своих приложений а не с форм CRM? Для этого достаточно подключить скрипт с функцией GetGlobalContext как описано ниже: Читать далее »

Утилита Find Privilege для определения недостающих привилегий при SecLib::CrmCheckPrivilege

Опять про SecLib::CrmCheckPrivilege. В некоторых случаях CRM всё-таки сообщает о проблемах с правами у пользователя. И был известный способ определения недостающих привилегий - простым запросом:

SELECT Name FROM Privilege WHERE PrivilegeId = 'ea8e9601-500e-4bd7-be73-022f3269e5b6'

Для тех кто не имеет доступ к Microsoft SQL Server Management Studio Mitch Milam написал небольшую утилиту - Find Privilege.

Find Privilege Tool Читать далее »

Microsoft Dynamics CRM 2011 будет поддерживать только 64-битную архитектуру. А на каких серверах у вас развёрнута CRM 4.0?

Как WhoAmIRequest возвращал пользователя SYSTEM

Столкнулся на днях с интересной проблемой: несмотря на то, что в конфиге приложения выставлены необходимые настройки, запрос WhoAmIRequest всегда возвращал данные системного пользователя CRM - SYSTEM.

...
 <system.web>
    ...
    <authentication mode="Windows"/>
    <identity impersonate="true"/>
    ...
 </system.web>
 ...

Как оказалось, причина была в следующем - WhoAmIRequest выполнялся в методе DoTheJobInThread() в отдельном потоке: Читать далее »

Уязвимость безопасности ASP.NET

Не так давно была найдена критическая уязвимость в ASP.NET всех версий. Об этом подробно написал Скотт Гатри в своём блоге (прочитать в переводе).

При помощи этой уязвимости злоумышленник может запрашивать и загружать с сервера файлы входящие в приложение ASP.NET такие как web.config (который часто содержит секретные данные), а также расшифровать данные посланные клиенту в зашифрованном состоянии (такие как данные ViewState на странице).

Данная уязвимость затрагивает и Microsoft Dynamics CRM, особенно IFD-проекты (Internet Facing Deployment). Читать далее »

Microsoft Update для Microsoft Dynamics CRM 2011 и обновление CRM 2011 Beta SDK

Две небольших новости, связанных с обновлениями в Microsoft Dynamics CRM 2011 Beta.

Первая касается самого процесса обновления CRM. Теперь обновление будет осуществляться через сервис Microsoft Update.

Кстати, пока остаётся неясным процесс обновления серверной части компонентов Microsoft Dynamics CRM, т.к. в статье идёт речь только об обновлении клиентских компонентов (клиент для Outlook). Читать далее »

Обзор MSCRM 2011 beta SDK - Часть 1

Tags:

На днях Microsoft опубликовала документацию для Microsoft Dynamics CRM 2011. Ознакомление с SDK поможет составить целостное представление об архитектуре системы и разобраться в её возможностях. Не буду переписывать содержимое SDK, а расскажу лишь о самых интересных на мой взгляд изменениях.

Итак, содержимое SDK:

  • CHM-файл - непосредственно документация,
  • директория bin с основными типами данных, описаны далее,
  • samplecode - примеры использования на C#,
  • schemas - XSD-схемы конфигурационных файлов,
  • tools - как всегда, утилита регистрации плагинов - pluginregistration и файл сопоставления "сущность - допустимая операция" - 'message-entity support for plug-ins.xlsx'
  • walkthroughs - примеры кастомизации в новом формате solution (!) с проектами для ribbon и workflow.

Unable to load client print control

Думал уже не столкнусь с таким, ан нет. Понадобилось развернуть приложение (ASP.NET с отображением отчётов SQL Server Reporting Services 2008) на новом сервере, и опять получил "Unable to load client print control" при печати отчёта.

А всё дело в том, что в ранних версиях клиентского ActiveX-компонента для печати отчёта (RSClientPrint из состава SSRS) была обнаружена уязвимость. Для принудительного отключения таких компонентов Microsoft периодически выпускает обновления безопасности, включающие в себя так называемые kill bits - идентификаторы (CLSID) COM/ActiveX-компонентов, запуск которых запрещён в Windows. Читать далее »

Kerberos DelegConfig или Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'

Если вы внедряете Microsoft Dynamics CRM, то с уверенностью могу сказать, что уже сталкивались с керберос дабл хоп, ну, или обязательно с этим столкнётесь.

Что же это такое? Вкратце, это НЕвозможность транслировать от сервера к серверу ваши имперсонированные учётные данные (полученные от клиентской станции). В контексте CRM это часто встречается при обращении вашего ASP.NET приложения (которое хостится на application-сервере CRM) к SQL-серверу или серверу отчётов. Читать далее »

RSS-материал
Работает на Drupal, система с открытым исходным кодом.