2013-01-13 2 views
0

DMZ 서버에서 호스팅되는 웹 사이트에 대한 사용자 지정 인증 공급자를 작성하고 있습니다. 이 웹 사이트는 .NET 4.0 프레임 워크에서 실행되는 Kentico라는 CMS에 구축되어 있습니다. Kentico 호스팅 서버는 DMZ Active Directory 포리스트에 있습니다. 다른 내부 Active Directory 포리스트가 있으며 DMZ AD는 내부 AD와 단방향 트러스트를 가지고 있습니다 (DMZ는 내부 AD를 신뢰하고 내부 AD는 DMZ를 신뢰하지 않습니다).단방향 트러스트를 통한 Active Directory의 사용자 지정 인증 공급자

우리는 DMZ AD 사용자를 아무런 문제없이 인증 할 수 있습니다. 그러나 내부 AD 사용자를 인증 할 수 있어야합니다. 방화벽 설정은 내부 AD 도메인 컨트롤러에 대한 직접 액세스를 차단하므로 신뢰를 통해 DMZ AD DC로 인증 요청을 보내야합니다.

내부 AD 사용자를 인증하려고 시도하면 인증 공급자가 DMZ DC로 보낸 LDAP 쿼리가 "사용자를 찾을 수 없음"으로 실패합니다.

누구든지이 문제를 사전에 처리하고 해결 한 방법을 알고 싶습니다. 답장을 미리 보내 주셔서 감사합니다.

답변

0

단방향 트러스트의 다른쪽에있는 사용자를 인증하기위한 확실한 방법은 advapi32.dll 라이브러리의 LogonUserEx 함수를 사용하는 것입니다. LOGON32_LOGON_INTERACTIVE 로그온 유형이 작동하고 LOGON32_LOGON_BATCH가 작동하지 않는다는 것을 알고 있습니다. LogonUserEx는 도메인과 사용자 이름을 별도의 인수로 사용하거나 널 (null) 도메인 인수가있는 사용자 이름에 대해 UPN을 허용합니다.

이제 Kentico는 Kentico DB에 대해 인증하기위한 인증서 공급자와 System.Web.Security 패키지의 ActiveDirectoryMembershipProvider를 사용하여 AD에 로그온하기위한 인증서를 제공하는 상자 인증 공급자가 각각 약간 이상합니다. 이 공급자는 단방향 트러스트의 다른 쪽 끝에있는 누군가를 로그인 할 수있는 것 같지 않습니다. 이제 Kentico에서는 사용자 정의 공급자를 대신 사용할 수 없지만 이벤트 처리기를 통해 사용자 지정 인증을 수행해야합니다.

Kentico 설명서는 맞춤 이벤트 처리기를 만드는 방법에 다소 약합니다. 다음은 Kentico 7 (Kentico 6과 거의 동일) - http://bit.ly/13DXrFA에 대한 링크입니다. 커스텀 이벤트 핸들러를 만드는 것에 대한 유일한 실용적인 정보는 Kentico 6을위한 것이지만, Kentico 7에서는 잘 작동해야하며, 여기서는 http://bit.ly/13DXLEc입니다. 해당 링크에서 볼 수 있듯이 대상 이벤트는 SecurityEvents.Authenticate.Execute입니다.

희망이 있습니다.

관련 문제