2

Active ASP를 통해 ActiveDirectoryMembershipProvider을 통한 인증에 ASP.Net 프로젝트 중 하나를 사용합니다.Active Directory의 멤버 자격 공급자와 간단한 사용자 이름으로 로그인

나는이 LDAP 연결 문자열에 성공적으로 연결 :

LDAP://server/DC=mydomain,DC=com 

하지만 두 가지 문제는 남아 :

  1. Membership.GetUser("[email protected]")가 올바른 개체를 가져 호출하는 반면, 널 Membership.GetUser("moravej") 수익을 호출. 이 문제를 해결할 여지가 있습니까? 광고가 투명 할 때 사용자가 완전한 이름을 사용하도록하고 싶지 않습니다. 또한 입력 한 값에 @mydomain.com을 연결하는 코드를 변경하지 않기를 바랍니다.

  2. 모든 AD 사용자를 로그인에 사용할 수있게하려고합니다. (이 경우)하지만 내 응용 프로그램에서 CRM OU에 따라 생성 될 모든 사용자에게 전달하려고합니다. LDAP://server/OU=CRM,DC=mydomain,DC=com으로 연결 문자열을 설정하면이 OU에없는 사용자에 대해 Membership.GetUser()을 호출하면 null이 반환됩니다.

이러한 문제를 해결할 방법이 있습니까? 사전

+0

사용자 이름 (CN) 및 암호없이 "성공적으로 연결"하는 방법은 무엇입니까? – mynkow

+0

공급자 설정 (connectionUsername 및 connectionPassword)에서 사용자 이름과 암호를 설정했습니다 ... 성공적인 연결에 대해 확실히 알아 두십시오 :-) –

답변

2

According to this page here에서

감사합니다, 당신은 당신의 로그온을위한 SAMAccountName를 사용하여 정의 할 수 있습니다 - 일부 설정과 :

ActiveDirectoryMembershipProvider 의 기본 구성은 사용자 사용자 이름 (UPN이)를 사용 이름 매핑은 다음 예와 같습니다. 이 때문에

attributeMapUsername="userPrincipalName" 

, 모든 사용자 이름은 도메인 이름 @ 형식의 사용자 이름이 있어야합니다; 예 : [email protected] 또는 [email protected]

하지만 당신은 변경할 수 있습니다 - 아래의 단락을 참조하십시오는 멤버 자격 공급자 구성에서 다음과 같은 특성을 설정하여 간단한 사용자 이름 형식을 사용하도록

당신은 이름 매핑을 변경할 수 있습니다 Web.config 파일에서. 메리 또는 스티브 :이 구성

attributeMapUsername="sAMAccountName" 

, 당신은 예를 들어, 간단한 사용자 이름을 사용할 수 있습니다.

당신이 찾고있는 것 같습니다. 맞습니까?

귀하의 web.config에는 다음과 같은 구성 항목이 있어야합니다. 물론 연결 문자열 이름 등을 사용하십시오. 이것은 단지 샘플에 불과합니다!문제 # 2 용)

<system.web> 
<membership defaultProvider="MyADMembershipProvider"> 
    <providers> 
     <add name="MyADMembershipProvider" 
      type="System.Web.Security.ActiveDirectoryMembershipProvider, 
       System.Web, Version=2.0.0.0, Culture=neutral, 
       PublicKeyToken=b03f5f7f11d50a3a" 
      connectionStringName="ADConnectionString" 
      attributeMapUsername="sAMAccountName"/> <== this is the magic to turn ON 
    </providers> 
</membership> 
</system.web> 

: 당신이 모든 사용자가 원하는 경우, 그것은 당신의 AD 도메인의 도메인 루트에 연결되도록 LDAP://server/DC=mydomain,DC=com에 멤버 자격 공급자에 대한 연결 문자열을 설정합니다.

+0

greate marc! 마술은 첫 번째 문제를 해결합니다. 그러나 두 번째 문제에 대해서는 언급 된 연결 문자열이 검색에 적합하지만 모든 사용자를 CRM 조직 단위 (OU)에 넣고 싶습니다. 언급 된 연결 문자열을 설정하면 재해 인 모든 새로운 사용자가 루트에 생성됩니다! –

+0

@MahmoudMoravej : 'OnUserBeingCreated' 이벤트 또는 뭔가를 처리하여 새 사용자가 들어가는 OU를 설정할 수 없습니까 ?? ** ** 모든 ** 사용자를 검색 할 수있는 다른 방법이 없습니다 .... –

+1

그런 것을 찾을 수 없습니다. 나는 LDAP 연결 문자열 해킹을 찾고 싶었다. 당신의 마법에 대한 BTW의 감사 :-) –

관련 문제