2012-06-14 2 views
1

LDAP에 문제가 있습니다. 내 웹 서버는 IIS7.5 (Windows Server 2008 R2)입니다. Windows 인증을 사용하도록 구성되었습니다. 아래 ASP 페이지를 붙여 넣었습니다.Windows 인증을 사용하는 동안 IIS7.5의 LDAP 오류가 발생했습니다.

웹 브라우저가 IE8이고 인트라넷 영역에 웹 사이트를 추가하고 보안 탭 -> 사용자 지정 수준의 인트라넷 영역 인 경우 사용자 세부 정보를 사용하도록 설정했습니다. 정교한 창 인증은 고급 탭에서 사용할 수 있습니다.

모든 것이 20 분 동안 잘 작동합니다 (세션 시간 설정 및 기타 기본 시간 제한 설정은 20 분 동안). 20 분 후에 ASP 런타임 오류가 발생합니다. objUser 객체의 메소드 또는 속성 memberOf가 지원되지 않습니다. 오류가 발생하면 인증 유형을 기본 인증으로 변경합니다. 그것은 Windows 자격 증명을 묻는 메시지와 잘 작동합니다. 그 후에 다시 Windows 인증으로 되돌아갑니다. 그리고 언젠가는 작동합니다.

기본 인증을 사용하도록 IIS7.5 ID를 구성하고 위와 같이 IE8을 구성한 경우 Windows 자격 증명을 요구하는 이유는 확실하지 않습니다. Windows 인증 모드에서는 자격 증명을 묻는 메시지가 표시되지 않지만 일정 기간 동안 정상적으로 작동합니다. 아무도 왜이 이상한 행동과 해결책으로이 문제를 해결할 수 있는지 설명 할 수 있습니까?

<%@ LANGUAGE="VBSCRIPT" %> 
<% 
Option Explicit 

Dim oADSysInfo 
Dim objUser 
Dim strGroupData 
Dim strUserDN 
Dim arrGroups 
Dim strGroup 
Dim wsObject 
Dim netSys 
Dim strUsrDomain 

strGroupData = "" 
    Set wsObject = CreateObject("WScript.Shell") 
Set netSys = CreateObject("WScript.Network") 

strUsrDomain = netSys.UserDomain 
Set oADSysInfo = CreateObject("ADSystemInfo") 

If err.number <> 0 Then 
'getLDAPGroupInfo = strGroupData 
    'wsObject.popup("Error"& e.decription) 
'Exit Function 
End If 
strUserDN = oADSysInfo.UserName 
Set objUser = GetObject("LDAP://"& strUserDN) 
arrGroups = objUser.memberOf 

    If IsEmpty(arrGroups) Then 
    'Wscript.Echo "Member of no groups" 
ElseIf (TypeName(arrGroups) = "String") Then 
    'Wscript.Echo "Member of group " & arrGroups 
    strGroupData = arrGroups 
Else 

    For Each strGroup In arrGroups 
    strGroupData = strGroupData & "," & strGroup 
Next 
    'strGroupData = arrGroups 


End If 
    Response.Write(strGroupData) 
%> 
+0

을 살해 될 때까지 지속 프로세스 유휴 시간 제한이 20 분으로 설정 되었기 때문에 문제가 20 분 후에 발생한다는 사실을 알게되었습니다. 이벤트 로그에서 지정된 유휴 시간 초과에 대한 비활성으로 인해 작업자 프로세스를 읽는 WAS 이벤트가 종료되었음을 발견했습니다. 필요한 경우 새로운 작업자 프로세스가 생성됩니다. 이 작업자 프로세스에서 생성 된 작업자 프로세스가 다른 설정을 사용한다는 사실을 알고 난 후 –

+0

실패했습니다. localhost를 사용하여 웹 사이트에 액세스하면 이전 주석에 언급 된 내용도 그대로 유지됩니다. 하지만 자격 증명을 묻습니다 (기본 인증이 켜져 있다고 가정합니다). 나중에 나는 Windows 인증을 사용하는 다른 브라우저에서 webapplication을 사용할 수도 있습니다. 어떤 문제가 LDAP, IIS 또는 어떤 웹 사이트 설정을 재정의하는 것입니까? –

+0

어제 언급 한 문제는 모두 "이중 홉 문제"에 관한 지표였습니다. 웹 서버 수준에서이 문제를 해결하고 LDAP 서버를 만지지 않는 간단한 mechansim이 있습니까? –

답변

0

나는 약간 간단한 해결책을 사용했다.

사용 된 용액 I은 다음과 같다.

  1. 내 응용 프로그램은 내가 위의 코드와 다른 페이지를 작성 applcation 풀 ID (SPN)와 아래 실행

  2. (DNS 계정으로 설정 실제 경로 자격 증명과 응용 프로그램 풀 idenity) 특정 사용자 ID로 실행됩니다 거기에 Active Directory 서버와 웹 서버 서버 사이에 기본 토큰 키가 생성되었습니다.

  3. 해당 키를 사용하여 위의 코드를 Windows 인증을 가진 가상 디렉터리 아래에서 호출하고 사용자 ID로 실행하여 사용자 관련 정보를 쿼리하기 위해 다시 LDAP에 연결했습니다. 너를 얻음으로써 세부 사항.

당신이 asp.net 프로그래밍 사용자를 가장 및 LDAP에서 사용자 세부 사항을 얻고 응용 프로그램에 사용하는 경우 LDAP를 연결하여 주 토큰을 만들 시작, 기본 키는 작업자 프로세스가 더 I을 invetigating에

관련 문제