P.S.,似乎在我们的应用程序中唯一使用machineKey的是SignalR …我想知道是否有一种安全可靠的方法来替换IProtectData而不使用机器密钥来生成令牌.
解决方法 像我一样,我希望能够设置机器密钥,但不能将它们提交到web.config,这将进入源代码控制并成为安全风险,并且能够使用我们与AppSettings一起使用的相同的每个环境配置系统.我确实找到了解决方案,虽然它有点难看,因为它使用反射来 *** 作MachineKeySection配置.var getter = typeof(MachineKeySection).getmethod("GetApplicationConfig",BindingFlags.Static | BindingFlags.NonPublic);var config = (MachineKeySection)getter.Invoke(null,Array.Empty<object>());var ReadonlyFIEld = typeof(ConfigurationElement).GetFIEld("_bReadonly",BindingFlags.Instance | BindingFlags.NonPublic);ReadonlyFIEld.SetValue(config,false);config.DecryptionKey = myKeys.EncryptionKey;config.ValIDationKey = myKeys.ValIDationKey;ReadonlyFIEld.SetValue(config,true);
我还希望能够,如果可能的话,提取并使用生产服务器上的当前机器密钥,以便不必强行注销我们当前登录的所有用户.我最终做了一些非常类似于this answer的东西,它也使用了反射.
完整解决方案:https://gist.github.com/cmcnab/d2bbed02eb429098ed3656a0729ee40a
总结以上是内存溢出为你收集整理的c# – 通过应用程序设置设置MachineKey全部内容,希望文章能够帮你解决c# – 通过应用程序设置设置MachineKey所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)