0

폼 인증으로 보호되는 IIS7.5에서 asp.net 2.0으로 실행되는 두 개의 웹 사이트가 하나의 서버에 있습니다.SingleSignOn (SSO) 폼 인증 로그 아웃

https://customerx.mydomain.com/site1/ 
https://customerx.mydomain.com/site2/ 

두 웹 사이트가 동일한 웹 응용 프로그램을 실행하지만 서로 다른 폴더에 다른 데이터베이스에 연결되어 있습니다 :

URL의는 같다. 두 사이트가 준비되었습니다 SSO (Single Sign On) 사용자가 사이트 1의 로그인 페이지를 열고 자격 증명 (폼 인증, 멤버 자격 공급자)으로 인증합니다. 시작 페이지에는 site2으로 연결되는 하이퍼 링크가 있고 site2의 시작 페이지에는 site1에 대한 링크가 있습니다. 따라서 사용자는 다른 사이트로 이동할 수 있습니다.

SSO는 모두 응용 프로그램의 Web.config의 항목을 다음과 같이 해결되었습니다 (동일한 쿠키 이름과 키 기계) : 각 사용자는 여러 사용자 권한, 사이트에 더 많거나 적은 데이터를 볼 수있다

<authentication mode="Forms"> 
    <forms loginUrl="~/login.aspx" defaultUrl="~/default.aspx" 
     timeout="60" name=".customerxcookie" /> 
</authentication> 
<authorization> 
    <deny users="?" /> 
    <allow users="*" /> 
</authorization> 
<machineKey validationKey="...myvalidationkey..." validation="SHA1" /> 

. 사용자 권한이있는 사용자 데이터는 두 사이트에서 동일합니다.

site1에 관리자로 로그인 한 다음 site2로 이동하고 로그 아웃하면 한 사이트에서만 로그 아웃하므로 다시 로그인하지 않고 사이트 중 하나를 다시 열 수 없습니다. 문제 없습니다. 이제 문제

protected void LoginStatus1_LoggedOut(object sender, EventArgs e) 
{ 
    FormsAuthentication.SignOut(); 
    Session.Abandon(); 
} 

: 내가 관리자 로그 아웃 후에 사이트 개발 덜 권한이있는 사용자 자격 증명으로 로그인 경우, 괜찮아요 사이트 개발에하지만 로그 아웃 용의 LoginStatus 컨트롤을 사용하고 있습니다 나는 그것이 사용자 이름을 예상대로 보여준 site2로 점프하지만 그는 관리자로부터 모든 권한을 가지며 자신의 사용자 권한을 통해 허용되지 않는 모든 것을 볼 수 있습니다. 내가 다음 로그인이 잘 작동되는 쿠키 customerxcookie을 제거하면

customerx.mydomain.com  customerxcookie 
customerx.mydomain.com  .ASPXANONYMOUS 

:

나는 두 쿠키 (파이어 폭스)이 있다는 것을 알게되었습니다. 그러나 나는 사용자를 바꿀 때마다 그것을해야한다.

제안 사항?

답변

1

쿠키의 존재가 문제가있는 경우, 로그 아웃에 그들을 만료 수동으로 모든 쿠키를 받고 대해 어떻게 ..

string[] myCookies = Request.Cookies.AllKeys; 
foreach (string cookie in myCookies) 
{ 
    Response.Cookies[cookie].Expires = DateTime.Now.AddDays(-1); 
} 
+0

덕분에 그것은 그 것이었다 – ibram