Authenticating dynamics CRM plugin to access Web API 2 methods

问题描述 投票:0回答:3

我在动态 CRM 中编写了一个插件。此插件访问部署在 Azure 云中的一些 Web API 2 方法(通过

HTTPS
)。当 CRM 中的联系人数据发生变化时,将触发该插件。许多 CRM 帐户持有人会更新联系数据。

我将在插件中硬编码一个“密钥”(一次性生成的 Guid),并在每次访问 Web API 方法时发送此密钥。我将在 web api 方法中验证此 guid 以防止未经授权的访问。

我不喜欢在源代码中存储密钥(guid)。

问题

  1. 如果不想“硬编码”密钥,我有什么选择?
  2. 这种方法有什么安全缺陷?

注意

一般来说,我所有的Web API都是通过自定义认证web api过滤器进行认证的,但是从插件访问的Web API并不是自定义认证的一部分。

CRM版本是2013

dynamics-crm restful-authentication
3个回答
2
投票

如前面的答案所述,第一个选项是将您的信息存储在您可以从插件中检索的配置自定义实体中。这些记录将受到 CRM 安全模型的保护,因此如果您的插件在调用用户上下文中运行,您将需要确保用户有权阅读该信息(这不是一个好主意)或更改插件在管理员用户上下文下执行。

另一种选择是使用安全/不安全配置 这些是您可以在步骤中配置的两个(字符串)参数,您将能够从插件中读取它们。我会说安全配置符合您的要求,但请看一下。您还可以轻松找到如何实现它(example)。

我能想到的第三个也是最后一个选项是创建一个 XML WebResource 并从插件中读取它。同样,您需要确保正在运行的插件下的用户上下文可以访问它。


1
投票

我认为这种方法永远不会安全。

可以从 CRM 中提取插件程序集。然后有人可以拆卸组件并找到 Guid。实际上,您的密码以纯文本形式存储。

至少您可以将用户名/密码/密钥存储在 CRM 记录中。然后可以使用 CRM 安全保护 CRM 记录。

您最好“正常”实施身份验证。


0
投票

对于 D365 在线实例,安全/不安全配置 是最佳实践。

© www.soinside.com 2019 - 2024. All rights reserved.