若要配置跨应用程序的 Forms 身份验证,对于参与共享的 Forms 身份验证的所有应用程序,应将 Web.config 文件的 forms 和 machineKey 节的属性设置为相同的值。
下面的示例演示了 Web.config 文件的 Authentication 节。除非另行说明,否则 name、protection、path、validationKey、validation、decryptionKey 和 decryption 属性必须在所有应用程序中都完全相同。同样,用于身份验证票证(Cookie 数据)的加密密钥值和验证密钥值以及加密方案和验证方案必须相同。如果设置不匹配,则不能共享身份验证票证。
说明: |
|---|
| 运行 ASP.NET 2.0 版或更高版本的应用程序可以与早期版本的 ASP.NET 共享 Forms 身份验证票证信息,条件是每个 ASP.NET 2.0 版(或更高版本)应用程序的 machineKey 元素中都包括 decryption="3DES"。 |
<configuration>
<system.web>
<authentication mode="Forms" >
<!-- The name, protection, and path attributes must match
exactly in each Web.config file. -->
<forms loginUrl="login.aspx"
name=".ASPXFORMSAUTH"
protection="All"
path="/"
timeout="30" />
</authentication>
<!-- Validation and decryption keys must exactly match and cannot
be set to "AutoGenerate". The validation and decryption
algorithms must also be the same. -->
<machineKey
validationKey="C50B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE"
decryptionKey="8A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F"
validation="SHA1" />
</system.web>
</configuration> 发出身份验证票证 (Cookie) 之后,将根据 Cookie 自身中的 Expires 值跟踪 Cookie 的到期时间。如果两个应用程序具有不同的 Timeout 属性,则将在每个 Cookie 的生存期中保留到期日期和原始时间戳。当更新 Cookie 时,Cookie 的原始到期时间用于计算新到期时间。使用配置 Timeout 值的唯一时候就是最初创建 Cookie 时。