模块化应用程序模式:如何检查哪个是调用模块

Modular application pattern: How to check which is the calling Module

我目前正在使用 prism 5.0 在 c# .NET 4.5 中编写模块化桌面应用程序。

我的应用程序由"core"(或主机)和几个模块组成。 我的每个模块都实现了 prism 提供的 IModule 接口。 我的应用程序的核心为模块提供了一个 "API",因此它们可以轻松地与 application/other 模块交互。例如,"API" 允许模块发布或订阅事件或与 BDD 通信。

这是我的问题:

BDD中有一些敏感信息,我事先不知道哪个模块会运行。我想处理 "malicious" 模块的可能性:我想为我的主机应用程序添加一层安全性。例如,我想检查一个模块是否有权删除 BDD 中的某些内容。 我怎么能那样做?我已经拥有存储在 BDD 中的每个模块的权限,但是我怎么知道哪个模块正在以安全的方式调用 API?

一切都应该动态完成,因为我事先不知道哪个模块 运行。

目前我想到的是:

还有别的办法吗?我是 c# 和模块化模式的新手,我确定我遗漏了一些东西。

编辑: 我将使用 sboutzen 的方法在加载程序集时验证我的模块。如果模块是已知模块,我会给他一个随机生成的密钥。每次模块想要调用 API 时,他都必须提供提供的密钥,以便我可以检查他的身份。

这是我能想到的最安全的事情了。

您可以使用强命名模块。 参见 https://msdn.microsoft.com/en-us/library/xc31ft41%28v=vs.110%29.aspx。这样您就可以对每个模块(程序集)进行身份验证和授权。