2009-12-01 3 views
4

나는 Flex-WebORB-Asp.NET 응용 프로그램을 가지고 있습니다. 로그인 할 때 WebORB 인터페이스를 구현하는 AuthenticationHandler가 있습니다.Asp.NET Principal WebORB HttpHandler

IPrincipal CheckCredentials(string username, string password, Request message); 

그래서 주체를 만들고 반환합니다. WebORB는 프린시 펄을 사용하여 원격 메소드 호출의 인증 및 권한 부여를 확인합니다. 내가 HttpContext.Current.User.Identity이 무엇인지 확인하는 경우

var principal = new GenericPrincipal(new GenericIdentity(user.id.ToString()), new[] { "admin" }); 
return principal 

지금이 시점에서, 그것은 WindowsIdentity입니다.

지금까지 그렇게 좋았습니다. 나중에, 원격 호출이 WebORB를 통해 이루어집니다 때, 나는 호출하여 로그인 한 사용자의 ID를 얻을 :

Thread.CurrentPrincipal.Identity.Name 

그래서 내가 WebORB이 스레드의 ID가 각 원격 호출로 설정되어 있는지 확인합니다 같아요.

문제는 이미지를 검색하기 위해 HttpHandler를 호출 할 때 Thread.CurrentPrincipal.Identity.Name으로 로그인 한 사용자의 ID를 가져 오려고 시도하지만 작동하지 않는다는 것입니다. 아마도 HttpHandler를 사용하면 WebORB가 작동하지 않기 때문일 수 있습니다.

어떻게이 문제를 해결하면 두 경우 모두 로그인 한 사용자의 ID를 얻을 수 있습니까? 세션 객체에 넣으시겠습니까? HttpContext.Current.User.Identity을 바꿀 수 있습니까? HttpContext.Current.User.IdentityThread.CurrentPrincipal.Identity.Name과 같지 않아야합니까?

ps : 사용자가 Active Directory에 있지 않습니다.

답변