Tag: 机器密钥

ASP.NET machinekey在代码中设置键

对于IIS托管的ASP.NET MVC 4网站,我想在运行时在代码中动态调整机器密钥。 机器密钥,加密和validation密钥以及要使用的算法都存储在数据库中。 我想在应用程序启动期间注入这些值而不是从web.config文件中读取值,而是让系统使用它们。 有没有办法实现这一点,而不必更改web.config (只更改内存配置)? 我试过访问配置部分,但它被标记为只读并且也是密封的,所以我不能覆盖IsReadOnly() 。 但是,对我来说,有一个setter是一个指示器,可能有一种方法可能删除readonly标志。 var configSection = (MachineKeySection)ConfigurationManager.GetSection(“system.web/machineKey”); if (!configSection.IsReadOnly()) { configSection.ValidationKey = _platformInfo.MachineKey.ValidationKey; configSection.DecryptionKey = _platformInfo.MachineKey.EncryptionKey; … } 有没有办法实现这个目标? 我能看到的唯一选择是使用像AppHarbor这样的自定义方法,但是如果可能的话,我宁愿坚持使用内置方法。 如果有人问为什么我想这样做,原因是,这是针对在webfarm中运行的大量相同网站。 因此,必须具有非自动生成的密钥(每台服务器上必须相同)。 此外,每个网站都应该是隔离的,不应该共享相同的密钥。 由于所有网站的物理表示相同,因此它们共享相同的物理位置。 这就是web.config文件不能包含特定于应用程序的设置的原因。 编辑:至少确认是否根本不可能,这将是非常有帮助的。 如上所述,可以使用自定义validation和加密方法,这些方法将完全避免使用机器密钥设置。 谢谢。