默认情况下,不能够在多个服务器之间共享认证票据cookie,因为每个服务器会自动产生他自己的key,所以,如果想要共享认证票据cookie,那么服务器间的认证票据的加密码算法\加密码密钥要求致.
必须在要求共享认证票据cookie服务器的machine.config或者web.config文件中
(位置%windir%\Microsoft.NET\Framework\{version}\CONFIG )
声明如下的内容:
如:
<machineKey validationKey="FE904A3264FAA1460560FB5B4C1712D52EFD9B096E9D7A08CA50ED7718CDE1EF59B4C74E06BF60265356D5A56B309CAD96772F0A7FB8A8FD64A095A99359D4E6" decryptionKey="8FF5EEB96E96894E33FDF51218F9587F606285A6FDB95FEA" validation="SHA1"/>
其中decryptionKey
必选的 String 属性。指定用于对数据进行加密和解密的密钥或者生成该密钥的进程。当 validation 设置为 TripleDES 字段时,该属性用于 Forms 身份验证加密和解密以及视图状态加密。
如果向此属性添加 IsolateApps 修饰符,ASP.NET 将使用每个应用程序的应用程序 ID 为每个应用程序生成一个唯一的加密密钥。IsolateApps 也是默认值的一部分。
如果您需要在 Web 服务器网络(网络场)中支持配置,请手动设置此属性以确保配置保持一致。
此属性可以为下列可能值之一。
值 | 说明 |
---|---|
AutoGenerate | 指定 ASP.NET 生成随机密钥并将其存储在 LSA 中。该值是默认值。如果向 decryptionKey 值添加 IsolateApps 修饰符,ASP.NET 将使用每个应用程序的应用程序 ID 为每个应用程序生成一个唯一的加密密钥。 |
value | 指定一个手动分配的密钥。该值必须手动设置为十六进制字符串,以确保配置在整个网络场中保持一致。使用 DES 加密时,密钥长度应该为 16 个字符;而使用三重 DES (3 DES) 加密时,密钥长度应该为 48 个字符。如果要使用长度小于最大长度的密钥,则应通过真正的随机方式(例如,通过使用 RNGCryptoServiceProvider 类)来创建这些密钥。只有在计算机使用 128 位加密的情况下,ASP.NET 才能使用三重 DES。如果向 decryptionKey 值添加 IsolateApps 修饰符,ASP.NET 将使用每个应用程序的应用程序 ID 为每个应用程序生成一个唯一的加密密钥。 |
默认值为 "AutoGenerate,IsolateApps"。
<machineKey> 元素
配置用于加密和解密 Forms 身份验证 Cookie 数据和视图状态数据的密钥,以及配置用于验证进程外会话状态标识的密钥。此节可以在计算机、站点或应用程序级别进行声明,但不能在子目录级别声明。
配置结构:
<configuration>
<system.web>
<machineKey>
<machineKey validationKey="AutoGenerate|value[,IsolateApps]"
decryptionKey="AutoGenerate|value[,IsolateApps]
validation="SHA1|MD5|3DES"/>
要求
- 包含在:<system.web> 中
- Web 平台:IIS 5.0、IIS 5.1、IIS 6.0
- 配置文件:Machine.config、Web.config
- 配置节处理程序:System.Web.Configuration.MachineKeyConfigHandler
具体machineKey配置元素具体说明详见http://msdn2.microsoft.com/zh-cn/library/w8h3skw9(VS.80).aspx: