Предоставление клиентских учетных данных в CRM Dynamics 2016 On Premise Web API - PullRequest
1 голос
/ 22 мая 2019

Я пытаюсь вызвать веб-API CRM Dynamics On Premise 2016. Я настроил поток кода авторизации, используя OAuth, и он работает. Но мне нужно настроить поток учетных данных клиента, так как многие приложения работают в фоновом режиме, и их нельзя запросить с помощью экрана входа в систему. Так как, на месте, у нас нет Azure AD.

  1. Куда мы пойдем и зарегистрируем наше приложение?
  2. Есть ли другой способ доступа к веб-API для динамической CRM-системы (например, идентификатор пользователя, пароль и т. Д.)

1 Ответ

0 голосов
/ 22 мая 2019

Xrm api доступен через учетные данные клиента без какой-либо специальной настройки (будь то предварительная или онлайн) - вы просто настраиваете пользователя S2S с соответствующими разрешениями и можете войти в него как:

static void InContext(Action<IOrganizationService> callback, Org org)
{
    var credentials = new ClientCredentials();
    if (!org.IsLocal)
    {
        credentials.UserName.UserName = org.UserName;
        credentials.UserName.Password = org.Password;
    }
    else
    {
        credentials.Windows.ClientCredential = new NetworkCredential(org.UserName, org.Password);
    }

    using (var serviceProxy =
                new OrganizationServiceProxy(new Uri(org.OrganizationServiceUri),
                    null, credentials
                    , null))
    {
            callback.Invoke(serviceProxy);
    }
}

public class Org
{
    public string UserName { get; set; }
    public string Password { get; set; }
    public string OrganizationServiceUri { get; set; }
    public bool IsLocal { get; set; }

    public Org()
    {
    }

    public Org(bool isLocal, string userName, string password, string organizationServiceUri)
    {
        IsLocal = isLocal;
        UserName = userName;
        Password = password;
        OrganizationServiceUri = organizationServiceUri;
        DiscoveryServiceUri = discoveryServiceUri;
    }
}

А потом в вашем бэкэнде код:

var org = new Org(true, "Administrator", "Password", 
  "http://ondracrm/org/XRMServices/2011/Organization.svc");

 InContext((os) => {
   // some sample work with organization service
   var response = (RetrieveEntityResponse)os.Execute(
      new RetrieveEntityRequest 
      { 
        LogicalName = "contact", 
        EntityFilters = EntityFilters.Attributes 
      });
 }, org);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...