0

我正在尝试将 cookie 从一个应用程序传递到另一个应用程序。这两个应用程序位于不同的服务器上。第一个应用程序(SharePoint 站点)在弹出窗口中打开第二个应用程序。在打开网站之前,应将 cookie 放入浏览器,其中包含登录用户(在 SharePoint 中)的用户名和密码 - 当然,出于安全目的,cookie 的值已加密。

另一方面,在作为 ASP.NET MVC3 Web 应用程序的第二个应用程序中,我创建了一个HttpModule尝试在浏览器中定位此 cookie、解密内容并针对 WCF 服务公开的某些用户存储对用户进行身份验证的程序。

这是模块中的代码:

    void httpApplication_AuthenticateRequest(object sender, EventArgs e)
    {
        HttpApplication httpApplication = sender as HttpApplication;
        if (httpApplication != null)
        {
            HttpCookie authCookie = httpApplication.Context.Request.Cookies["SPAuthentication"];
            if (authCookie != null)
            {
                String cookievalue = EncryptionManager.Current.DecryptStringAES(authCookie.Value, "p@s$w0Rd_Mo3T");
                String[] parts = cookievalue.Split(';');
                if (parts.Length == 2)
                {
                    String username = this.GetToken(parts[0]);
                    String password = this.GetToken(parts[1]);
                    FedAuthentication.Current.Signin(String.Format(@"{0}\IPREmployee", username), password);
                    httpApplication.Context.Request.Cookies.Remove("SPAuthentication");
                }
            }
        }
    }

authCookie尽管我实际上可以在浏览器中看到 cookie(使用 FireBug),但它始终为空。我注意到的一件事是 cookie 绑定到会话,所以它应该随着会话过期。我认为这可能是问题所在。然后我做了一些研究,发现 ASP.NET 不允许跨域 cookie。那么有没有办法解决这个问题?

PS:我无法访问 SharePoint 应用程序的源代码,因此我无法确定那里发生了什么。我唯一确定的是 cookie 实际上被放入浏览器中。

4

0 回答 0