2011-04-11 6 views
2

내가 가장에 대한 예를 보았지만 여전히 문제가 있습니다.WCF 명의 도용/인증

구조의 일부 세부 정보 :

ASP.net : Windows 인증
WCF : IIS에서 호스팅, 현재 익명 사용자에게 허용하여 작업

내가 달성하고자하는 인증 된 Windows 로그인을 허용하는 것입니다 익명 사용자가 서비스 호출을 시도하는 것을 차단하는 것과 같은 액세스 제어를 위해 WCF에 전달되어야합니다.

AD.net에서 정의 된 사용자가 아니기 때문에 컴퓨터가 관리자로 로그인되었지만 Active Directory에서 실패한 경우 ASP.net 응용 프로그램을 사용할 때 브라우저에서 팝업하면 사용자 ID와 암호를 묻는 메시지가 나타납니다.

메시지가 표시되면 사용자는 AD에 해당하는 올바른 사용자 ID와 암호를 입력합니다. 따라서 로그인이 통과되었습니다.
그러나 WCF의 가장을 사용하여 WCF에 창 인증 자격 증명을 전달하면 ASP.net 인증 된 사용자 정보 대신 관리자로 표시됩니다.

Windows에서 사용자가 로그인하는 대신 올바른 ASP.net 인증 된 사용자 정보를 얻으려면 어떻게해야합니까?

답변

4

ASP.Net 응용 프로그램에서는 web.config에 <identity impersonate="true"/>을 설정해야합니다.

그런 다음 ASP.Net 응용 프로그램 내부의이 같은으로 WCF 서비스에 전화로 가장을 추가해야합니다 :

또한
using (((WindowsIdentity)HttpContext.Current.User.Identity).Impersonate()) 
{ 
    WebClient client = new WebClient 
     { 
     Credentials = CredentialCache.DefaultNetworkCredentials 
     }; 
    string result = client.DownloadString("http://someserver"); 
} 

을 추가하는 방법에 대한 단계 튜토리얼에 의해 단계에 대한 patterns & practices: WCF Security Guidance 체크 아웃 웹 앱에서 WCF 호출을 가장합니다.

+0

적어도 내가 지금까지 보았던 것과는 다른 것으로서 표결을 받았다. 내일까지는 시험을 볼 수 없습니다. 따라서 ID가 impersonate = true가 WCF가 아닌 ASP에 추가됩니다. 하지만 한때 ASP에서 시도했지만 실패했습니다. 내가 한 것은 operationalContext를 사용하는 것입니다. 네가 얼마나 다른가를 설명 할 수 있니? –

+0

웹 응용 프로그램에서 windows auth를 켜고 impersonate = true를 사용해야합니다. 이렇게하면 asp.net 사이트에서 wvf 서비스로 전화를 가장 할 수 있습니다. NTLM뿐만 아니라 도메인에서 kerberos를 사용하고 있는지 확인해야 할 수도 있습니다. –

+0

웹 응용 프로그램이 Windows 인증을 사용하도록 설정되어 있습니다. 좋아요. 시간이 있다면 오늘 밤 어떨지 시도해 봅니다. –

관련 문제