다음을 통해 공유


ADsOpenObject 함수(adshlp.h)

ADsOpenObject 함수는 명시적 사용자 이름 및 암호 자격 증명을 사용하여 ADSI 개체에 바인딩됩니다. ADsOpenObjectIADsOpenDSObject에 대한 래퍼 함수이며 IADsOpenDSObject::OpenDsObject 메서드와 동일합니다.

구문

HRESULT ADsOpenObject(
  [in]  LPCWSTR lpszPathName,
  [in]  LPCWSTR lpszUserName,
  [in]  LPCWSTR lpszPassword,
  [in]  DWORD   dwReserved,
  [in]  REFIID  riid,
  [out] void    **ppObject
);

매개 변수

[in] lpszPathName

형식: LPCWSTR

ADSI 개체의 ADsPath를 지정하는 null로 끝나는 유니코드 문자열입니다. 이 매개 변수에 대한 바인딩 문자열의 자세한 내용 및 코드 예제는 LDAP ADsPathWinNT ADsPath를 참조하세요.

[in] lpszUserName

형식: LPCWSTR

자격 증명에 사용할 디렉터리 서비스에 제공할 사용자 이름을 지정하는 null로 종료된 유니코드 문자열입니다. 모호성을 방지하기 위해 이 문자열은 항상 "<domain\><user name>" 형식이어야 합니다. 예를 들어 DomainA와 DomainB에 트러스트 관계가 있고 두 도메인에 이름이 "user1"인 사용자가 있는 경우 ADsOpenObject 가 "user1"의 유효성을 검사하는 데 사용할 도메인을 예측할 수 없습니다.

[in] lpszPassword

형식: LPCWSTR

자격 증명에 사용할 디렉터리 서비스에 제공할 암호를 지정하는 null로 종료된 유니코드 문자열입니다.

[in] dwReserved

형식:DWORD

바인딩 옵션을 정의하는 데 사용되는 공급자별 인증 플래그입니다. 자세한 내용은 ADS_AUTHENTICATION_ENUM 참조하세요.

[in] riid

형식: REFIID

이 개체의 요청된 인터페이스에 대한 인터페이스 식별자입니다.

[out] ppObject

형식: VOID**

요청된 인터페이스에 대한 포인터에 대한 포인터입니다.

반환 값

형식: HRESULT

이 메서드는 다음을 포함하여 표준 HRESULT 반환 값을 지원합니다.

자세한 내용은 ADSI 오류 코드를 참조하세요.

설명

이 함수는 사용자 자격 증명의 유효성을 검사하는 데만 사용하면 안 됩니다.

C/C++ 클라이언트는 ADsOpenObject 도우미 함수를 호출하여 적절한 디렉터리 서비스에 대한 자격 증명으로 제공된 사용자 이름 및 암호를 사용하여 ADSI 개체에 바인딩합니다. lpszUsernamelpszPasswordNULL이고 ADS_SECURE_AUTHENTICATION 설정된 경우 ADSI는 호출 스레드의 보안 컨텍스트(애플리케이션이 실행 중인 사용자 계정의 보안 컨텍스트 또는 호출 스레드가 가장하는 클라이언트 사용자 계정의 보안 컨텍스트)를 사용하여 개체에 바인딩됩니다.

ADsOpenObject 함수에 전달된 자격 증명은 바인딩된 특정 개체에만 사용되며 호출 스레드의 보안 컨텍스트에는 영향을 미치지 않습니다. 즉, 아래 예제에서 ADsOpenObject 호출은 ADsGetObject 호출과 다른 자격 증명을 사용합니다.

HRESULT hr;
IADs *padsRoot1;
IADs *padsRoot2;

hr = ADsOpenObject(L"LDAP://rootDSE",
    pwszUsername,
    pwszPassword,
    ADS_SECURE_AUTHENTICATION,
    IID_IADs,
    (LPVOID*)&padsRoot1);

hr = ADsGetObject(L"LDAP://rootDSE",
    IID_IADs,
    (LPVOID*)&padsRoot2);

WinNT: 공급자를 사용하려면 lpszUsername 을 다음 문자열 중 하나로 전달할 수 있습니다.

  • 사용자 계정의 이름, 즉 "jeffsmith"입니다.
  • Windows 스타일 사용자 이름, 즉 "Fabrikam\jeffsmith"입니다.
Active Directory용 LDAP 공급자를 사용하면 lpszUsername 을 다음 문자열 중 하나로 전달할 수 있습니다.
  • "jeffsmith"와 같은 사용자 계정의 이름입니다. 사용자 이름 자체를 사용하려면 dwReserved 매개 변수에서 ADS_SECURE_AUTHENTICATION 플래그만 설정해야 합니다.
  • 이전 버전의 Windows에서 "Fabrikam\jeffsmith"와 같은 사용자 경로입니다.
  • "CN=Jeff Smith,OU=Sales,DC=Fabrikam,DC=Com"과 같은 고유 이름입니다. DN을 사용하려면 dwReserved 매개 변수가 0이거나 ADS_USE_SSL 플래그를 포함해야 합니다.
  • UPN(사용자 계정 이름)(예: "jeffsmith@Fabrikam.com"). UPN을 사용하려면 대상 사용자 개체의 userPrincipalName 특성에 적절한 UPN 값을 할당합니다.
LDAP 공급자를 사용하여 특정 디렉터리 요청을 성공적으로 완료하기 위해 Kerberos 인증이 필요한 경우 lpszPathName 바인딩 문자열은 서버리스 ADsPath(예: "LDAP://CN=Jeff Smith,CN=admin,DC=Fabrikam,DC=com")를 사용해야 합니다. 또는 "LDAP://central3.corp.Fabrikam.com/CN=Jeff Smith"와 같은 정규화된 DNS 서버 이름이 있는 ADsPath를 사용해야 합니다. CN=admin,DC=Fabrikam,DC=com". 플랫 NETBIOS 이름 또는 짧은 DNS 이름을 사용하여 서버에 바인딩합니다(예: "central3.corp.Fabrikam.com" 대신 짧은 이름 "central3")을 사용하면 Kerberos 인증을 생성할 수 있거나 생성되지 않을 수 있습니다.

다음 코드 예제에서는 요청된 사용자 자격 증명을 사용하여 디렉터리 서비스 개체에 바인딩하는 방법을 보여줍니다.

IADs *pObject;
LPWSTR szUsername = NULL;
LPWSTR szPassword = NULL
HRESULT hr;

// Insert code to securely retrieve the user name and password.

hr = ADsOpenObject(L"LDAP://CN=Jeff,DC=Fabrikam,DC=com",
                   "jeffsmith",
                   "etercespot",
                   ADS_SECURE_AUTHENTICATION, 
                   IID_IADs,
                   (void**) &pObject);

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista
지원되는 최소 서버 Windows Server 2008
대상 플랫폼 Windows
헤더 adshlp.h
라이브러리 Activeds.lib
DLL Activeds.dll

추가 정보

ADSI 오류 코드

ADSI 함수

ADsOpenObject 및 IADsOpenDSObject::OpenDsObject

바인딩

IADsOpenDSObject

IADsOpenDSObject::OpenDsObject