localhostの1つのWebサイトからlocalhostの2番目のWebサイトに移動しようとしています。ASP.NET認証とプロバイダ
どちらのサイトも独自のメンバーシッププロバイダを持っています。サイト#1のFormsAuthorizationTicketをサイト#2のユーザーをSSOに使用しようとしています。
現在、私はこのエラーを取得しています: System.Security.Cryptography.CryptographicException:パディングが無効であると私は、この時点までに撮影した
ステップを削除することはできませんが含まれます: は、特定のキーの値に要素を設定します 検証と暗号化のmachineKey属性を "3DES"に設定します 暗号化されたチケットが#1ウェブサイトで与えられたものと同じ値を#2ウェブサイトに記録していることを確認して確認します。
私のコードここにある:
ウェブサイト#2では *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);*
私がチケットを確認し、会員のみのページにリダイレクトするランディングページを作成しました。復号化中に上記のエラーが発生したときです。ここで
ウェブサイト#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");*
誰もが、私は試していただきます支援するためのアイデアを持っている場合。
私のマシンキーは私のmachine.configファイルで定義されています。私は両方のウェブサイトに継承されていると信じています。その要件を満たすために何か必要なことはありますか? \t \t <のmachineKey解読= "3DES" \t \t \t \t \t validationKey = '123' \t \t \t \t \t decryptionKey = '123' 検証= '3DES' /> –
は観察以上でした答えよりも。 VSで組み込みのIISを使用している場合(そのlocalhost:3123/yoursite)私は彼らがクッキーを共有すると思いません。長期的には、ドメイン(mysite1.comからyoursite3.netへ)を通過する際に問題が発生します。 –