Azure WebJob队列触发器不响应加密的队列消息

时间:2017-04-18 12:02:39

标签: azure encryption azure-webjobs azure-functions

我需要加密写入Azure存储的所有邮件。

我想使用Azure队列触发WebJobs,因此在下面采用以下方法加密队列消息:

https://docs.microsoft.com/en-us/azure/storage/storage-client-side-encryption

这会在队列上加密消息。

然后我想编写一个WebJob(甚至更好的Azure函数)来响应Queue消息并解密并处理它。

不幸的是,Web作业总是会出现异常

  

System.FormatException:输入不是有效的Base-64字符串      包含非基数64      字符,两个以上的填充字符或非法字符      填充字符

有没有人有办法做到这一点。我甚至试图像示例

中那样实现我自己的CustomQueueProcessFactory

https://github.com/Azure/azure-webjobs-sdk-samples/blob/master/BasicSamples/MiscOperations/CustomQueueProcessorFactory.cs

但Azure WebJob库仅在我需要加密之前使用CloudQueueMessage调用它。

有什么想法吗?

感谢。

1 个答案:

答案 0 :(得分:1)

我相信您可以通过修改create方法中的服务客户端选项,使用CustomQueueProcessor执行此操作。

public QueueProcessor Create(QueueProcessorFactoryContext context)
{
  ...
  // demonstrates how the Queue.ServiceClient options can be configured
  context.Queue.ServiceClient.DefaultRequestOptions.EncryptionPolicy = policy;
  ...
}

不幸的是,我们不能在Azure功能中提供这种级别的控制(如果您将功能运行时部署为应用服务计划中的站点扩展,则可以破解它,但是您无法获得任何功能消费规模等)。

https://docs.microsoft.com/en-us/azure/storage/storage-client-side-encryption#queue-service-encryption

https://github.com/Azure/azure-webjobs-sdk-samples/blob/master/BasicSamples/MiscOperations/CustomQueueProcessorFactory.cs#L19