2013-04-18 1 views
1

aspNetCompatibility = "true"인 wcf + 나머지 웹 서비스가 있습니다. 사용자 지정 인증을 제공하기 위해 asp.net http 모듈 인 IHttpModule을 작성했습니다. 코드는 매우 간단합니다. Thread.CurrentPrinicpal 속성에 일부 보안 주체를 할당하면됩니다.WCF는 Thread.CurrentPrincipal을 통해 IHttpModule을 설정합니다.

나는 Thread.CurrentPrincipal의 값으로 'empty/default'principal을 여전히 얻는다. 또한 모듈 및 작업 실행에 다른 스레드 ID (Thread.CurrentThread)가 있음을 발견했습니다. wcf가 작업을 실행하는 새로운 스레드를 제공하지만 어떠한 증거도 찾지 못했다는 제안이 있습니다.

그래서 질문 : 나는 맞습니까? wcf가 그 동작을 제어 할 수 있습니까? 새 스레드를 만들면 자동으로 주 스레드를 새 스레드로 이동하기 때문에 혼란 스럽습니다. 그러므로 wcf는 그들을 깨끗이합니다.

principalPermissionMode = "None"과 같은 문제입니다.

아이디어를 제공해 주시면 감사하겠습니다.

건배!

답변

0

IMO - 스레드는 사용자가 이미 앉아있는 스레드에서 실행할 때 사용자를 수신합니다.

Wcf는 스레드를 자체 방식으로 관리합니다 (부분적으로 InstanceMode - PerCall, PerSession ...). 그래서 그들은 당신의 스레드 세부 사항을 전파하지 않을 것입니다.

인증을 위해 다른 모델을 사용해야 할 수도 있습니다. 맞춤 인증에 대한 자세한 내용은이 게시물을 참조하십시오. http://blogs.msdn.com/b/astoriateam/archive/2010/07/21/odata-and-authentication-part-6-custom-basic-authentication.aspx

+0

첫 번째 문장에서 옳습니다. 사실 IAuthorizationPolicy에 의해 wcf로 해결되었습니다. 그러나 내가 썼을 때, 왜 이런 방식으로 작동하는지 명확히 이해하고 싶습니다. 그런 행동을 제어 할 수있는 설정이 있습니까? – SchmerZ