gpt4 book ai didi

c# - 从 Azure 函数使用 Dynamics 365 进行身份验证

转载 作者:太空宇宙 更新时间:2023-11-03 18:22:04 25 4
gpt4 key购买 nike

场景

我有一个在线托管的 Dynamics 365 v9 组织。我有一组 Azure Functions 托管在与我的 Dynamics 组织不同的租户上的 Azure Function App 中。

我创建了web hooks使用 Dynamics 插件注册工具,在某些事件(例如在 Dynamics 中创建联系人时),通过端点 URL 将数据 POST 到我的 Azure Functions。

Dynamics 365 和我的 Azure Functions 之间的身份验证是通过在 HTTP 请求的身份验证 HttpHeader 中传递 x-functions-key 值来实现的。

Azure Functions 从 Dynamics 中的事件接收数据,格式为 RemoteExecutionContext我可以使用以下代码阅读:

using System.Net;

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
var jsonContent = await req.Content.ReadAsStringAsync();

log.Info(jsonContent);

return req.CreateResponse(HttpStatusCode.OK);
}

问题

Azure Function 如何向调用 Dynamics 365 组织进行身份验证以读取和写入数据?

我尝试过的

  1. Xrm 工具

最简单的身份验证方法是使用 CrmServiceClient来自 Microsoft.Xrm.Tooling.Connector.dll。但是,我不一定有用户名和密码来提供 CrmServiceClient 的构造函数。也许可以通过 HTTP POST 请求安全地传递凭据?

  • 应用程序用户
  • 我尝试在 Dynamics 中注册应用程序用户。我向我的 Azure Functions 提供客户端 ID 和客户端 key ,但身份验证失败,因为用户位于与我的 Azure Functions 不同的租户中。

    考虑的解决方案

    收到的 jsonContent 字符串的一个对象称为 ParentContext 。也许可以重复使用它来向调用 Dynamics 组织进行身份验证。

    Marc Schweigert 建议使用 S2S 并向他的 AzureFunctionApp 提供了一个示例存储库。如果我能让这种方法发挥作用,我将在此处发布解决方案。

    最佳答案

    我没想到您可以明智地使用“真实”用户凭据连接到 CRM。

    我将使用服务帐户连接回 CRM。创建新的 CRM用户,尤其是出于此目的,如果您使用户成为非交互式用户,则不应使用许可证。然后,您可以使用该服务帐户的凭据通过 CrmServiceClient 连接到 CRM。或者看看 Server to Server authentication .

    如果您能够将用户 ID 传递到您的 Function App,则可以使用服务帐户 impersonate通过 CRM Web 服务的“真实”用户。

    To impersonate a user, set the CallerId property on an instance of OrganizationServiceProxy before calling the service’s Web methods.

    关于c# - 从 Azure 函数使用 Dynamics 365 进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50061047/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com