Как позвонить в Dynamics 365 и выдать себя за вызывающего пользователя?C#

Место общения программистов C#
Ответить
Anonymous
 Как позвонить в Dynamics 365 и выдать себя за вызывающего пользователя?

Сообщение Anonymous »

У меня есть собственное веб-приложение ASP.NET Core 8.0, из которого я хочу вызвать Dynamics 365 и выдать себя за текущего вошедшего в систему пользователя Windows.
Этот код работает при вызове on- предварительная установка Dynamics v9.1, но при использовании того же кода для вызова Dynamics365 в облаке я получаю «неавторизованный». Я предполагаю, что что-то не работает с облачной версией Dynamics, но я не могу понять, как это исправить, поэтому надеюсь на ваши предложения, ребята.
Сейчас я запускаю код локально для разработки, поэтому выдаю себя за себя и являюсь системным администратором как локально, так и в облаке.
Код (где метод Get() является отправной точкой и вызывается ранее в моем приложение):

Код: Выделить всё

protected virtual async Task Get()
{
var handler = new HttpClientHandler { UseDefaultCredentials = true };

// The guid is a system administrator
return await WindowsIdentity.RunImpersonated(_user.AccessToken, () =>
GetAsync("https://myorganizationname.crm4.dynamics.com/api/data/v9.2/",
"systemusers(E8F2BDBD-540C-EF11-9F89-000D3A4C32E3)", handler));
}

private async Task GetAsync(string baseUrl, string url, H (ttpClientHandler handler)
{
using (var client = new HttpClient(handler))
{
client.BaseAddress = new Uri(baseUrl);
client.DefaultRequestHeaders.Add("Accept", "application/json");

try
{
var request = new HttpRequestMessage(HttpMethod.Get, url);
var response = await client.SendAsync(request);
var json = await response.Content.ReadAsStringAsync();

if (!response.IsSuccessStatusCode)
{
if (response.GetType() == typeof(HttpResponseMessage))
{
throw new Exception(response.ReasonPhrase); // I always get "Unauthorized" as ReasonPhrase...
}

throw new Exception(json);
}

return json;
}
catch (System.Net.WebException ex)
{
// Just some error handling...
}
}
}
Как уже упоминалось, этот код отлично работает при вызове локального экземпляра Dynamics...
Что я могу сделать, чтобы он успешно вызывал облачный экземпляр?

Подробнее здесь: https://stackoverflow.com/questions/792 ... lling-user
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»