Как пройти проверку подлинности Windows Live и использовать службы CRM Odata?
Теперь у меня есть проект, который должен создать веб-портал для Dynamic CRM 2011. Я хочу использовать службу данных CRM, но я не могу пройти проверку подлинности Windows Live в коде C#. Я также попытался погуглить некоторый пример. К сожалению, не повезло. Я надеюсь, что кто-то, кто делал это раньше, может сказать мне, как это сделать. Большое спасибо!
5 ответов
Исходя из того, что я обнаружил, я не могу пройти проверку подлинности Windows с помощью кода. Поэтому мы изменили его на аутентификацию Active Directory. Спасибо вам, ребята.
Сервис OData доступен только из кода в CRM Online. Он отлично подходит для javascript внутри CRM (и, если вам нужно, CRM 2011 OData Query Designer очень полезен), но не может быть доступен для любого кода, внешнего по отношению к серверу CRM.
Рекомендуемый Microsoft способ доступа к веб-службам CRM - через WCF, как показано во многих примерах SDK.
Если.NET не подходит для вас, ответ Срини Раджи ссылается на то, как получить доступ к данным, используя только SOAP.
Если вы пишете код на C# для взаимодействия с Dynamics 2011, вам лучше использовать сервис организации. Конечная точка OData больше подходит для кода JavaScript и логики на стороне клиента.
Пакет Dynamics CRM 2011 SDK ( https://www.microsoft.com/download/en/details.aspx?id=24004) содержит примеры подключения к службе с использованием идентификатора Windows Live ID. Чтобы начать, посмотрите \samplecode\cs\quickstart после того, как вы загрузили и разархивировали SDK.
Ссылка ниже показывает аутентификацию Windows Live, а также получение данных из Dynamics CRM 2011 онлайн.
Надеюсь, что это работает для вас
Проверьте настройки IIS/ аутентификации...
disabled - Anonymous Authentication
enabled - ASP.NET Impersonation
enabled - Windows Authentication
Это необходимо для IIS для передачи учетных данных пользователя на ваш веб-портал. Затем вы можете передать эти учетные данные, используя следующий пример кода...
public ActionResult HitCRM()
{
var uri = System.Configuration.ConfigurationManager.AppSettings["CRMURI"];
ClientCredentials credentials = new ClientCredentials();
var dinfo = ServiceConfigurationFactory.CreateConfiguration<IDiscoveryService>(new Uri(uri));
var dsp = new DiscoveryServiceProxy(dinfo, credentials);
dsp.Authenticate();
var retrieveOrganizationsRequest = new RetrieveOrganizationsRequest();
var retrieveOrganizationsResponse = dsp.Execute(retrieveOrganizationsRequest) as RetrieveOrganizationsResponse;
if (retrieveOrganizationsResponse.Details.Count == 1)
{
var organizationDetail = retrieveOrganizationsResponse.Details[0];
Uri orgServiceUri = new Uri(organizationDetail.Endpoints[EndpointType.OrganizationService]);
IServiceConfiguration<IOrganizationService> orgConfigInfo = ServiceConfigurationFactory.CreateConfiguration<IOrganizationService>(orgServiceUri);
var creds = new ClientCredentials();
IOrganizationService organizationService = new OrganizationServiceProxy(orgConfigInfo, creds);
Guid userid = ((WhoAmIResponse)organizationService.Execute(new WhoAmIRequest())).UserId;
var systemUser = organizationService.Retrieve("systemuser", userid, new ColumnSet(new string[] { "firstname", "lastname" }));
// Retrieve the version of Microsoft Dynamics CRM.
var versionRequest = new RetrieveVersionRequest();
var versionResponse = (RetrieveVersionResponse)organizationService.Execute(versionRequest);
ViewBag.FirstName = systemUser.GetAttributeValue<string>("firstname");
ViewBag.LastName = systemUser.GetAttributeValue<string>("lastname");
ViewBag.Version = versionResponse.Version;
}
return View();
}