0

我正在研究允许您连接到 Azure 存储的电源组件框架 (PCF) 控件。该控件稍后将绑定到一个表单,我正在使用Azure Storage JS (for browser) v12连接到资源。

我的控件与 Azure 存储资源管理器的工作方式类似:我可以上传、下载文件并在容器内导航。

我担心解决方案的安全性,主要是与存储的连接。建议的方法(在库中)是将 SAS 令牌公开给存储帐户,然后传递容器名称以连接到特定容器。

// Create a new BlobServiceClient
const blobServiceClient = new BlobServiceClient(blobSasUrl);

// Create a unique name for the container by 
// appending the current time to the file name
const containerName = "container" + new Date().getTime();

// Get a container client from the BlobServiceClient
const containerClient = blobServiceClient.getContainerClient(containerName);

由于 PCF 控件嵌入在 Dynamics 中的实体表单中,因此您可能会在调试器中停止代码执行并更改容器的名称。突然之间,您可以加载到与预期完全不同的容器中。

现在,这显然很糟糕,我希望有一个更安全的解决方案。

我的想法是将 Azure 存储操作移至某个后端,并在控件内对服务进行 API 调用。但是,这仍然没有让它变得更好,因为我仍然需要知道表单中实体的上下文才能连接到正确的容器。例如,用户正在编辑帐户“john123”,因此他应该只能连接到容器“container-john123”。

我还想连接在容器内导航,所以有时我希望能够请求从 PCF 控件再次检索容器数据。

在 Dynamics 环境中有没有办法做到这一点?我对这个话题很陌生,我读过一些关于插件、工作流等的内容,但我不确定它们是否能够响应“重新加载”操作。

4

1 回答 1

0

您可以为每个容器生成 SAS 令牌,这样,如果有人更改了他们的容器名称,它就不再有效。您还可以做一些 API 管理工作或使用子流程来使这些事情更加透明。但遗憾的是,您强调的主题是当今大多数 Web 应用程序的缺点。

于 2022-02-17T13:05:53.510 回答