2013-02-22 1 views
-1

IIS 7.5에서 실행되는 사용자 지정 HTTP 모듈이 있고 요청이 동일한 Active Directory 환경에있는 다른 컴퓨터에서 전송됩니다. 이 서버 측을 실행중인 HTTP 모듈에서 현재 사용자 (광고 이름?)를 요청 (또는 LDAP 경로를 알고 있다면 조회) 할 수 있습니까?Active Directory 사용자를 서버 측 클라이언트 요청에서 가져 옵니까?

저는 광고 전문가가 아니지만, 내 모듈 내에서 HTTPApplication 인스턴스 (아래 참조)를 통해 나온 다양한 속성을 살펴 봤습니다. 아무 것도 눈에 띄지 않습니다.

Private Sub AuthenticateRequest(sender As Object, e As EventArgs) 

     Dim oHttpApplication As HttpApplication = CType(sender, HttpApplication) 
     '... 
     ' Get AD Info from oHttpApplication.Request? 
     '... 
End Sub 

이것이 가능하거나이를 수행하는 방법을 알고 있다면 누구에게 알 수 있습니까?

업데이트 :

내가 아래에있는 내 솔루션을 추가했습니다.

+0

... 아래 투표 결과가 좋을 것 같습니다. – lhan

답변

0

내 솔루션 - VB.NET에 :

Dim username As String = Thread.CurrentPrincipal.Identity.Name 

참고 : 내 링크의 질문에 대한 대답은 PrincipalContextUserPrincipal 개체를 사용하지만 내 시나리오에서는 사용자 이름이 필요했습니다. 나를 위해 도메인없이

pc = new PrincipalContext(ContextType.Domain, "active.directory.domain.com") 

이 또한 잘 작동 : 나는 또한,이 라인이 솔루션을 테스트 할 때 점을 지적하고 싶습니다

pc = new PrincipalContext(ContextType.Domain) 

을 그래서 희망이 미래에 누군가에게 도움이 될 것입니다 !

0

수정 IIS 설정 :

IIS에서

해제 익명 인증 및 Windows 인증을 할 수 있습니다.

수정 웹 응용 프로그램의 설정 파일 :

이 가장

<configuration> 
    <system.web> 
    <identity impersonate="true"/> 
    </system.web> 
</configuration> 

C# 코드 사용 :

using System.Security.Principal 


var user = WindowsIdentity.GetCurrent().Name; 
+0

고맙습니다. 나는 그것을 시도했다. 나를 위해 서버에서 실행중인 ApplicationPoolIdentity 계정에 연결된 사용자를 반환합니다. 요청을 보낸 사람 (즉, 클라이언트)을 알아야합니다. – lhan

+0

답변을 수정했습니다. 사용자가 동일한 LAN에 있으면 작동합니다. – developer747

+0

다시 한 번 감사드립니다. 그러나 이미 가장 (impersonation)을 설정했습니다. 내가 찾은 해결책을 참조하십시오. – lhan