2010-01-30 3 views
8

C# 및 WPF로 작성된 .NET 응용 프로그램에서 작업하고 있습니다. 이 애플리케이션에서는 Active Directory 서버를 향해 사용자를 인증합니다. 결국 우리는 다른 LDAP 구현을 지원하기를 원할 수도 있습니다. 따라서 ActiveDirectory가 아닌이 빌드를 만들면 이점이 될 것입니다.C#에서 ActiveDirectory 시작하기

이 작업을 시작하기에 가장 좋은 방법은 무엇입니까? 나가 체크 아웃해야하는 어떤 좋은 자원 있는가? Active Directory와의 통신을 처리하기 위해 .NET에 라이브러리가 있다는 것을 들었습니다 - 또는 일반 LDAP 라이브러리가 있습니까? 어떤 조언을 부탁드립니다!

참고 : .NET 3.5를 사용하고 있습니다.

답변

5

.NET 3.5는 이전에 비해 System.DirectoryServices.AccountManagement 네임 스페이스를 추가하는 것보다 훨씬 쉽습니다. .NET 3.5에 있지 않다면이 네임 스페이스에 직접 들어가겠다. 평소처럼 The Code Projectsomething up showing a lot of example uses입니다.

단순성의 예를 들어, 사용자 인증 : 당신은 System.DirectoryServices 어셈블리 이동해야합니다

var pc = new PrincipalContext(ContextType.Domain, "MyDomain", "DC=MyDomain,DC=com"); 
return pc.ValidateCredentials(username, pass); 
1

합니다. 다음은 몇 가지 샘플입니다.

2

.NET 3.5의 경우 정확히 System.DirectoryServices.AccountManagement 네임 스페이스를 확인하십시오. 이전보다 훨씬 쉽게 작업 할 수있었습니다!

또한이 MSDN 문서의 내용을 확인하십시오. Managing Directory Security Principals in the .NET Framework 3.5 -이 항목을 강력히 추천합니다!

"일반"으로 유지하고 다른 LDAP 디렉토리를 지원해야하는 경우에는 Introduction to System.DirectoryServices.Protocol을 참조하십시오. Microsoft .NET 어셈블리 및 저수준 LDAP 호출을 처리하고 LDAP 호환 디렉토리 (Sun, Novell 등)

4

가능한 경우 System.DirectoryServices.AccountManagement를 사용하지 않는 것이 좋습니다. 분명히 일을 더 쉽게 만들어주는 것처럼 보였지만 여러 가지 문제가있었습니다 (특정 포트를 무시할 때와 같이). System.DirectoryServices를 둘러싼 경량 래퍼입니다. 다른 LDAP 디렉토리와 함께 운 좋게 느껴질 수도 있지만 분명히 설계되지 않았습니다.

System.DirectoryServices.Protocols 어셈블리를 권하고 싶습니다. 시작하기 조금 더 힘들며 약간의 노력이 필요하지만 더 나은 성능으로 훨씬 유연 해지고 훨씬 표준을 준수합니다. 나는 광고를 포함하여 여러 다른 디렉토리에 대해 그것을 사용하여 큰 성공을 거두었 다.

MSDN은 환상적인 introduction article을 가지고 있으며, 사용자가 요구할 가능성이있는 대부분의 시나리오를 다룹니다.

0

ActiveRecord 패턴을 기반으로하는 내 OSS 프로젝트를 다음과 같이 참조 할 수 있습니다 (오픈 소스이기 때문에 DirectoryEntry와 함께 AD를 작동시키는 방법을 알기 때문에 DirectoryEntry는 LDAP 프로토콜뿐만 아니라 IIS, WIN 등을 지원합니다).

using (var userObject = UserObject.FindOneByCN(this.ADOperator, “pangxiaoliang”)) 
{ 
    if(userObject.Email == "[email protected]") 
    { 
      userObject.Email = "[email protected]"; 
      userObject.Save(); 
    } 
} 

https://landpyactivedirectory.codeplex.com/documentation

을 그리고 당신은 당신이 내 대답을 무시하세요에 관심이없는 경우 쉽게, 그것으로 광고를 운영 찾을 수 있습니다 :에, 그래서)이 LIB를 개발한다. AD에 관한 질문이 있으면 저에게 연락주세요 :)