Pur*_*ome 5 salt application-state web-farm
我想生成一个随机的salt值并将其置于Application状态.
现在,我正在使用Web场,因此每台计算机的应用程序状态将不同.我也不想购买分布式状态农场应用程序.
那么..有什么解决方案呢?我以为我可以在代码或web.config文件中对其进行硬编码..但这意味着eva的相同盐...不是很安全.
有人有什么建议吗?
记住 - 我在所有机器上都使用了一个独特的键(例如guid).也许配置文件是唯一的方法?
如果我理解正确的话,您希望机器共享一个值,并且您不希望该值永远相同。理想情况下,您不希望存储它。
因此,让“第一台”机器在启动时生成一个随机值(使用它可以使用的任何熵,例如 /dev/random。如果您不需要安全值,并且在启动时没有足够的熵来创建一个)不管怎样,利用时间或其他什么),并将其传达给所有其他人。当新机器加入集群时,它们需要能够从集群中已有的一台机器中找到值。机器掉线没有什么区别。
哪台机器是“第一”?好吧,如果您始终可以在其他任何机器之前启动一台机器,并给它时间来生成一个值,那么您可以使用简单的算法:
1)寻找其他机器。如果你找到了,请询问它的价值。2) 如果没有找到,请自行生成该值。
如果多台机器同时启动,那么它们需要在它们之间决定哪一台是“领导者”。您可以通过自己选择一个来做到这一点(例如,一台机器在通过管理界面收到特定连接后立即声明自己为“领导者”:在启动时,每台机器都会等待,直到它获得此连接,或者从另一台机器听到另一台机器的消息)机器是领导者)。在令牌环上自动执行此操作很简单:具有最少 MAC 地址或任何领导者的机器。但没有人再使用令牌环了......
在不可靠网络的另一个极端,我不确定这是否可能,除非所有机器都知道总共有多少台机器(在这种情况下,它就像令牌环一样,除了它们都互相通信,直到它们已经弄清楚谁是领导者了)。通过可靠的广播,这是您可以在以太网上合理范围内假设的,我确信在某处发布了最佳算法,但我忘记了它是什么(如果我知道的话)。我猜想每个人都会定期广播他们认为的领导者是谁(如果他们还没有看到更好的领导者,包括他们自己的主张)。一旦你听了足够长的时间(大约一个间隔),你就会知道谁是领导者,并且你可以开始使用种子。
如果该值是秘密,那么显然集群内的通信必须是安全的。您可能会免费获得它,具体取决于网络架构。