0

あるアプリケーションから別のアプリケーションに Cookie を渡そうとしています。2 つのアプリケーションは別々のサーバー上にあります。最初のアプリケーション (SharePoint サイト) は、ポップアップで 2 番目のアプリケーションを開きます。サイトを開く前に、(SharePoint で) ログインしているユーザーのユーザー名とパスワードを含む Cookie をブラウザーにドロップする必要があります。もちろん、Cookie の値はセキュリティ上の目的で暗号化されます。

一方、ASP.NET MVC3 Web アプリケーションである 2 番目のアプリケーションでは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 を使用)、常に null です。私が気づいたことの 1 つは、Cookie がセッションにバインドされているため、セッションと共に期限切れになることです。これが問題かもしれないと思いました。次に、いくつかの調査を行ったところ、ASP.NET ではクロスドメイン Cookie が許可されていないことがわかりました。これを回避する方法はありますか?

PS: SharePoint アプリケーションのソース コードにアクセスできないので、そこで何が起こっているのかわかりません。私が確信しているのは、Cookie が実際にブラウザーにドロップされているということだけです。

4

0 に答える 0