1

ローカルホストの 1 つの Web サイトからローカルホストの 2 番目の Web サイトに移動しようとしています。

どちらのサイトにも、独自のメンバーシップ プロバイダーがあります。サイト #1 の FormsAuthorizationTicket を使用して、ユーザーをサイト #2 に SSO しようとしています。

現在、次のエラーが発生しています: System.Security.Cryptography.CryptographicException: パディングが無効であり、削除できません

この時点までに行った手順は次のとおりです。 要素を特定のキー値に設定する 検証と暗号化の machineKey 属性を「3DES」に設定するナンバーワンのウェブサイト。


私のコードはここにあります:

        *FormsAuthentication.Initialize();
        FormsAuthenticationTicket newTicket = new 
            FormsAuthenticationTicket(1 // Ticket Version
            , Login1.UserName                       // User Name
            , DateTime.Now                          // Creation Date
            , DateTime.Now.AddDays(1)   // Expiration Date
            , true                                              // Is Persistant
            , Login1.UserName);                 // This should be a list of Roles


        string strEncyptedTicket = FormsAuthentication.Encrypt(newTicket);
        HttpCookie myCookie = new HttpCookie("cryptCookie", strEncyptedTicket);
        myCookie.Values.Add("username", Login1.UserName);
        myCookie.Values.Add("cryptTick", strEncyptedTicket);
        Response.Cookies.Add(myCookie);*

Web サイト #2 では、チケットを確認してメンバー専用ページにリダイレクトするためのランディング ページを作成しました。復号化中は、上記のエラーが発生したときです。

ウェブサイト #2 のランディング ページ コードは次のとおりです。


        *FormsAuthenticationTicket fat2 = FormsAuthentication.Decrypt(Request.Cookies["cryptCookie"].Values["cryptTick"]);


        MembershipUser mu = Membership.GetUser(Request.Cookies["cryptCookie"].Values["username"]);
        if (mu == null)
        {
            lblInfo.Text += "member not found";
            return;
        }

        Response.Redirect(@"~\MemberPages\MemberPage.aspx");*

誰かが助けてくれるアイデアを持っているなら、私は喜んで試してみます.

4

2 に答える 2

1

両方のサイトで同じマシン キーを共有する必要があります。

于 2009-05-08T18:13:41.307 に答える
0

サイトが一致するマシン キーを持っている必要があるという点で、Ian は正しいです。また、特にパスワードの暗号化に関して、メンバーシップ プロバイダーが同じ設定になっていることを確認する必要があります。

また、なぜこれを完全にコードで処理しているのですか? この機能は、両方のサイトの Web.Config で非常に簡単に構成できるはずです。本質的に、あなたは多くのやり直しを行っており、必要のない潜在的な問題領域を導入しています (ここで述べていない理由がない限り)。

于 2009-05-08T18:21:01.710 に答える