共享cookie在不同的域服务(WCF)

本文关键字:服务 WCF cookie 共享 | 更新日期: 2023-09-27 18:04:34

我有两个网站使用一个服务(WCF)。用户的身份验证是在访问一个站点的服务中完成的。如何使此身份验证访问两个站点?我可以在服务(WCF)中存储cookie并访问两个站点吗?

我该怎么做呢?

谢谢。

共享cookie在不同的域服务(WCF)

这相当简单。调用FormsAuthentication后。SetAuthCookie。cookie被创建/加密并提供给用户。如果另一个网站为了验证目的而使用该cookie,

  1. 必须使用相同的cookie名称/域名
  2. 可以被解密,
  3. 并且仍然有效。

要做到这一点,你只需要确保每个应用程序的web配置中的密钥和名称相同:例如:http://msdn.microsoft.com/en-us/library/vstudio/eb0zx8fc(v=vs.100).aspx

<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="/" 
        domain="contoso.com" 
        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>