http://blog.csdn.net/huwei2003/article/details/4647008

ASP.net2.0的machineKey 
machineKey的作用在于下述场景:

ASP.net 使用 forms authentication 时的 cookie 数据的加密和解密。以确保这部分数据不会被篡改。 
viewstate 数据的加密和解密。以确保这部分数据不会被篡改。 
使用进程外session(out-of-process session)时,对会话状态标识进行验证。 
ASP.net 1.0 以及 ASP.net 1.1, 我们都可以在下面地址的文件中找到machineKey的配置信息:

%Windir%/Microsoft.NET/Framework/<version>/config/machine.config

不同的是 ASP.net 1.0 找到的是如下的配置信息

<machineKey 
   validationKey="AutoGenerate" 
   decryptionKey="AutoGenerate" 
   validation="SHA1"/>

ASP.net 1.1 找到的是如下信息:

<machineKey 
   validationKey="AutoGenerate,IsolateApps" 
   decryptionKey="AutoGenerate,IsolateApps" 
   validation="SHA1"/>

但是 ASP.net 2.0 , .net Framework 3.0 ,.net Framework 3.5 这些版本中,我们在

%Windir%/Microsoft.NET/Framework/<version>/config/

目录的  machine.config 和 web.config 中找不到machineKey的设置。

这是因为, ASP.net 2.0 中,machineKey 的默认设置没有写在配置文件中。

ASP.net 2.0 中,machineKey 的默认设置如下:

<machineKey 
   validationKey="AutoGenerate,IsolateApps" 
   decryptionKey="AutoGenerate,IsolateApps"    
   validation="SHA1" 
   decryption="Auto" />

我们如果要修改machineKey的默认设置,就需要在必要的地方新加machineKey的配置节点。

产生一个可用的 machineKey 配置信息可以使用下面地址提供的工具: 
http://www.aspnetresources.com/tools/keycreator.aspx

参考资料:

How To: Configure MachineKey in ASP.NET 2.0 
http://msdn.microsoft.com/zh-cn/library/ms998288(en-us).aspx

machineKey 元素(ASP.NET 设置架构) 
http://msdn.microsoft.com/zh-cn/library/w8h3skw9(VS.80).aspx 
http://msdn.microsoft.com/en-us/library/w8h3skw9.aspx

-------------
Asp.Net应用程序中为什么要MachineKey?如何生成MachineKey?

如果你的Asp.Net程序执行时碰到这种错误:“验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。”那么说明你没有让你的应用程序使用统一的machineKey,那么machineKey的作用是什么呢?按照MSDN的标准说法:“对密钥进行配置,以便将其用于对 Forms 身份验证 Cookie 数据和视图状态数据进行加密和解密,并将其用于对进程外会话状态标识进行验证。”也就是说Asp.Net的很多加密,都是依赖于machineKey里面的值,例如Forms 身份验证 Cookie、ViewState的加密。默认情况下,Asp.Net的配置是自己动态生成,如果单台服务器当然没问题,但是如果多台服务器负载均衡,machineKey还采用动态生成的方式,每台服务器上的machinekey值不一致,就导致加密出来的结果也不一致,不能共享验证和ViewState,所以对于多台服务器负载均衡的情况,一定要在每台站点配置相同的machineKey。

machineKey生成的算法:

validationKey = CreateKey(20);

decryptionKey = CreateKey(24);

protected string CreateKey(int len)

{

byte[] bytes = new byte[len];

new RNGCryptoServiceProvider().GetBytes(bytes);

StringBuilder sb = new StringBuilder();

for(int i = 0; i < bytes.Length; i++)

{

sb.Append(string.Format("{0:X2}",bytes[i]));

}

return sb.ToString();

}

附参考的matchineKey配置:

<?xml version="1.0"?>

<configuration>

<system.web>

<machineKey validationKey="3FF1E929BC0534950B0920A7B59FA698BD02DFE8" decryptionKey="280450BB36319B474C996B506A95AEDF9B51211B1D2B7A77" decryption="3DES" validation="SHA1"/>

</system.web>

</configuration>
---------------------------
加密MachineKey ASP.NET中设置MachineKey可以很轻松的实现SSO,可以在所有ASP.NET站点中添加如下配置:
<machineKey validationKey="XXXXXX" decryptionKey="XXX" validation="SHA1" />
validationKey可以为视图状态、身份验证Cookie、Session等重要的信息添加杂乱信息以防止重要信息被篡改。
为了防止validationKey和decryptionKey以明文的方式进行显示,可以使用ProtectSection方法对machineKey配置节进行加密。
1、在Web.config中添加原始的配置,如:
<machineKey validationKey="XXXXXX" decryptionKey="XXX" validation="SHA1" />
2、通过程序对system.web/machineKey节进行加密和解密
加密方式如下:
            Configuration config = WebConfigurationManager.OpenWebConfiguration("/");
            ConfigurationSection machineKeySection = config.GetSection("system.web/machineKey");
            machineKeySection.SectionInformation.ProtectSection("RSAProtectedConfigurationProvider");
            machineKeySection.SectionInformation.ForceSave = true;
            config.Save();解密方式如下:
            Configuration config = WebConfigurationManager.OpenWebConfiguration("/");
            ConfigurationSection machineKeySection = config.GetSection("system.web/machineKey");
            machineKeySection.SectionInformation.UnprotectSection();
            machineKeySection.SectionInformation.ForceSave = true;3、通过程序加密就会得到类拟:
        <machineKey configProtectionProvider="RsaProtectedConfigurationProvider">
            <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
                xmlns="http://www.w3.org/2001/04/xmlenc#">
                <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
                
            </EncryptedData>
        </machineKey>这样的配置,你只要把这段配置复制到各个需要SSO的站点的Web.config就可以了,系统在运行过程中会自动进行解密
如果想变回原来的明文显示可以执行解密的相反过程就行
注意:其中的OpenWebConfiguration("/");表示打开站点根目录下的web.config,其它情况可参考如下:

---------------------

machinekey设置相关相关推荐

  1. matlab中向量norm,【Matlab开发】matlab中norm范数以及向量点积、绘图设置相关

    [Matlab开发]matlab中norm范数以及向量点积.绘图设置相关 标签(空格分隔): [Matlab开发] 声明:引用请注明出处外链网址已屏蔽 norm范数使用 help norm norm ...

  2. 2020-12-26 工作常用 Linux 操作:磁盘卸载、 自动化挂盘脚本 、磁盘分区合并、ansible、git 设置相关

    [工作常用 Linux 操作:磁盘卸载. 自动化挂盘脚本 .磁盘多个分区合并.ansible .git 设置相关] 1.查看 欧拉系统 的版本号:rpm -q --provides euler0rel ...

  3. 博客园定制页面(一)——博客园设置相关参考

    一.博客设置相关 1.1.博客园主页设置 参考其他大佬的博客设置: 博客园博客美化相关文章目录(非本人整理) 博客园主页CSS元素名汇总(非本人整理) 1.2.Windows Live Writer客 ...

  4. 一些转换器的用法和注意事项(四)——颜色设置相关的转换器

    原文发布时间:2010-07-02 作者:毛毛虫 这部分说一下与颜色设置相关的几个转换器及使用时的注意问题. PenColorSetter转换器 设置要素的画笔的颜色. 支持颜色的格式用设置的颜色渲染 ...

  5. Allegro导出和导入PRM即GERBER设置相关教程

    原文地址::Allegro导出和导入PRM即GERBER设置相关教程-电路知识笔记 - Powered by Discuz! 打开画好的板子点击file--Export---Parameters -- ...

  6. 打开手机设置相关界面

    一:在app内打开自己app的专用设置界面 在我们的APP中,可能会使用多种服务,例如定位.推送.相册.拍照.通讯录等.选择是否允许一般只出现在安装app后第一次打开时,可是我们依然需要在使用到某种服 ...

  7. MQTTBox下载及设置相关参数

    MQTTBox官网下载地址 进入官网,选择版本,下载完成后,点击安装, 安装完成后,进入软件,设置相关参数 配置完成后,需要启动服务器

  8. 计算机的参数配置选项在哪,教你电脑win7如何进去bios设置相关参数

    电脑bios是电脑的基本输入输出系统,有很多设置需要在电脑bios内进行设置完成,比如说设置电脑启动项,修改bios密码,超频等等.有网友想了解win7如何进去bios设置?下面小编就教下大家win7 ...

  9. php http头设置相关信息

    HTTP 状态码 状态码用来告诉HTTP客户端,HTTP服务器是否产生了预期的Response. HTTP/1.1中定义了5类状态码, 状态码由三位数字组成,第一个数字定义了响应的类别 1XX 提示信 ...

最新文章

  1. Dbeaver连接MySQL
  2. 自写网站阶段之:终结篇
  3. 实现抢红包算法?如此简单
  4. python与android交互,Android客户端与Python服务器端的简单通信
  5. solr 使用记录 - solr dataimporter 定时任务
  6. 图片服务器 文件系统,调研分享:图片文件在各文件系统上的访问性能对比
  7. Leetcode 235.二叉搜索树的最近公共祖先
  8. SpringBoot+MyBatis启动报错java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal
  9. firework.js
  10. cmos功能测试软件,CMOS摄像头开发测试方法(我总结的)
  11. python小学口算题库生成器_PrimarySchoolMathematics
  12. 分解动力学类有哪些最新发表的毕业论文呢?
  13. 意念控制头环:用脑电波来操控智能家居
  14. iOS 自定义图片无限轮播控件
  15. 轴对中工具app android,对称轴软件绘画图案app下载安装-对称轴软件绘画appV1.0手机版下载_飞翔下载...
  16. 什么是EOS(柚子)
  17. Ghost的使用方法
  18. Python 二维字典定义
  19. Centos7 SSH远程登录十分缓慢的解决方案
  20. Spring bean是什么?

热门文章

  1. 《深圳前海深港现代服务业合作区支持人才发展专项资金管理暂行办法》的通知
  2. CSS图片居中显示 超出div容器高度度隐藏 css3 object-fit
  3. 群晖服务器复制文件速度很慢,暴风二期安装黑群晖DS918+用USB复制文件速度慢/速度不稳定的解决方法...
  4. 关于一个项目兼容mysql多版本问题总结
  5. Jenkins的实战部署
  6. Oracle 物化视图(MV)详解
  7. 自建mysql和华为云mysql,基于云服务器的mysql自建从库
  8. HtmlUnit(Java) - 快速入门学习 - 无界面浏览器
  9. htmlunit 学习笔记
  10. 蜉蝣掘阅,麻衣如雪。心之忧矣,于我归说。2022.3.15 杭州