내 localhost의 한 웹 사이트에서 내 localhost의 두 번째 웹 사이트로 이동하려고합니다.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 –
그것이 관찰 많았다 대답보다. VS (기본 제공 localhost : 3123/yoursite)에 내장 된 IIS를 사용하는 경우 쿠키를 공유하지 않는다고 생각합니다. 장기적으로 도메인 (mysite1.com에서 yoursite3.net으로)을 넘어서 문제가 발생할 것입니다. –