.net中的form验证与负载均衡
来源:互联网 发布:北京好的婚纱摄影知乎 编辑:程序博客网 时间:2024/06/07 20:24
背景:最近新接手一个web项目,需要部署到多台机器上做负载均衡。正好想把原来的有几个项目也加入进去,就又申请了一台服务器,先用两台服务器做负载均衡的测试。
因为公司的web项目都是用dotnet开发,用户登录验证使用的都是form验证写cookie的方式,因为cookie是保存在客户端,所以认为加入负载均衡应该很轻松。
事与愿违。加入负载均衡后,所有站点均登录失败(注:是在测试机上先做的测试)。很是奇怪。然后写日志跟踪。发现在一台服务器上写的cookie在另一台服务器上识别不了。
可以确定的是cookie肯定不会有这个问题,那么问题只能出现在form验证机制上。
查了一些资料和请教了小伙伴们,发现是因为两台服务器上的系统配置和补丁不一致,form验证对系统配置和补丁都有严格要求,必须一致,并且IE11貌似还不支持。
有一些解决办法,但是太复杂,另外form验证有较大的局限性,所以打算弃之不用,用户信息加密那块自己写了个小加密程序处理。
此外,持着开贴要负责的态度,把解决办法贴到下面,希望能给有需要的童鞋提供点帮助。
这里所说的form验证指<authentication mode="Forms">的登录验证方式。
解决方案:
一 打补丁
http://www.microsoft.com/china/technet/security/bulletin/MS10-070.mspx
根据操作系统选择相应的补丁。
二 修改machine.config中的machinekey
1、32位操作系统:
打开C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config
<machineKeyvalidationKey="F3690E7A3143C185AB1089616A8B4D81FD55DD7A69EEAA3B"decryptionKey="F3690E7A3143C185AB1089616A8B4D81FD55DD7A69EEAA3B"validation="3DES"decryption="Auto"/>
修改machineKey中的 decryption="Auto"为decryption="3DES"
如下:
<machineKeyvalidationKey="F3690E7A3143C185AB1089616A8B4D81FD55DD7A69EEAA3B"decryptionKey="F3690E7A3143C185AB1089616A8B4D81FD55DD7A69EEAA3B"validation="3DES"decryption="3DES "/>
2、64位操作系统:
打开C:\WINDOWS\microsoft.net\Framework64\v2.0.50727\CONFIG\machine.config
<machineKeyvalidationKey="F3690E7A3143C185AB1089616A8B4D81FD55DD7A69EEAA3B"decryptionKey="F3690E7A3143C185AB1089616A8B4D81FD55DD7A69EEAA3B"validation="3DES"decryption="Auto"/>
修改machineKey中的 decryption="Auto"为decryption="3DES"
如下:
<machineKeyvalidationKey="F3690E7A3143C185AB1089616A8B4D81FD55DD7A69EEAA3B"decryptionKey="F3690E7A3143C185AB1089616A8B4D81FD55DD7A69EEAA3B"validation="3DES"decryption="3DES "/>
三 打完补丁后pcpopclub依然无法获取或解密
1、 就要查framework的补丁是否打多了。如下图红框中的补丁必须有,而且.netframework 4 Extended下只能有一个对应的补丁(KB2416472)。.net framework 4 Extended的其它多余补丁需要卸载。
2、检查web.config下的配置是否正确(如下)(第二步中的machineKey修改可以在对应项目 中的web.config中加入,而不用修改系统下的文件。)
<system.web>
<authenticationmode="Forms">
<formsname="pcpopclub"path="/"loginUrl=" "protection="Encryption"timeout="30"enableCrossAppRedirects="true"/>
</authentication>
<machineKeyvalidationKey="F3690E7A3143C185AB1089616A8B4D81FD55DD7A69EEAA3B"decryptionKey="F3690E7A3143C185AB1089616A8B4D81FD55DD7A69EEAA3B"validation="3DES"decryption="3DES"/>
- .net中的form验证与负载均衡
- 关于ASP.NET中的负载均衡
- ASP.NET"无法验证数据"解决方法(负载均衡)
- 负载均衡-.net开发
- 负载均衡中的LVS
- Nginx中的负载均衡
- Nginx中的负载均衡
- Pigeon中的负载均衡
- Nginx中的负载均衡
- 客户端负载均衡与服务端负载均衡
- 负载均衡与代理
- 集群与负载均衡
- 负载均衡与黑名单
- TAF与负载均衡
- 集群与负载均衡
- 集群与负载均衡
- 利用Solaris10中的Apache2与Tomcat结合实现负载均衡
- apache+tomcat 均衡负载与集群中的session共享
- 查找二叉查找树的任意给定结点的“下一个”结点
- 减少空间复杂度
- 数据库备份与恢复
- HTML代码 网页设置 QQ空间等分享
- Linux 软RAID数据同步
- .net中的form验证与负载均衡
- 解决:System.Data.SqlClient.SqlError: FILESTREAM 功能被禁用
- 进程调度
- MySQL对SQL语句分组
- C++连接MySQL
- 网易新闻客户端IOS版用过的开源库
- 【Android平台中的安全编程】の #01-限制app的敏感ContentProvider的可访问性
- 指针与动态分配
- oj平台测试-重载运算符