DsGetSpnA 함수(ntdsapi.h)
DsGetSpn 함수는 하나 이상의 SPN(서비스 사용자 이름)의 배열을 생성합니다. 배열의 각 이름은 서비스의 인스턴스를 식별합니다. 이러한 SPN은 DsWriteAccountSpn 함수를 사용하여 DS(디렉터리 서비스)에 등록될 수 있습니다.
통사론
NTDSAPI DWORD DsGetSpnA(
[in] DS_SPN_NAME_TYPE ServiceType,
[in] LPCSTR ServiceClass,
[in, optional] LPCSTR ServiceName,
[in] USHORT InstancePort,
[in] USHORT cInstanceNames,
[in, optional] LPCSTR *pInstanceNames,
[in, optional] const USHORT *pInstancePorts,
[out] DWORD *pcSpn,
[out] LPSTR **prpszSpn
);
매개 변수
[in] ServiceType
작성할 SPN의 형식을 식별합니다. ServiceType 매개 변수는 다음 값 중 하나를 가질 수 있습니다.
DS_SPN_DNS_HOST, DS_SPN_DN_HOST, DS_SPN_NB_HOST
SPN의 형식은 다음과 같습니다.
ServiceClass/ InstanceName: InstancePort
DS_SPN_DOMAIN, DS_SPN_NB_DOMAIN
SPN의 형식은 다음과 같습니다.
ServiceClass/ InstanceName: InstancePort/ ServiceName
ServiceName 매개 변수는 도메인의 DNS 이름 또는 DN이어야 합니다. 이 형식은 지정된 도메인에 서비스를 제공하는 복제 가능한 서비스에 사용됩니다.
DS_SPN_SERVICE
SPN의 형식은 다음과 같습니다.
ServiceClass/ InstanceName: InstancePort/ ServiceName
ServiceName 매개 변수는 서비스의 인스턴스를 식별하는 정식 DN 또는 DNS 이름이어야 합니다. 예를 들어 SRV 레코드의 DNS 이름 또는 이 서비스 인스턴스에 대한 서비스 연결 지점의 고유 이름일 수 있습니다.
[in] ServiceClass
서비스의 클래스를 지정하는 null로 끝나는 상수 문자열에 대한 포인터입니다. 예: http. 일반적으로 이 문자열은 서비스에 고유한 문자열일 수 있습니다.
[in, optional] ServiceName
서비스의 DNS 이름 또는 고유 이름(DN)을 지정하는 null로 끝나는 상수 문자열에 대한 포인터입니다. ServiceName 호스트 기반 서비스에는 필요하지 않습니다. 자세한 내용은 ServiceName가능한 값에 대한 ServiceType 매개 변수에 대한 설명을 참조하세요.
[in] InstancePort
서비스 인스턴스의 포트 번호를 지정합니다. 이 값이 0이면 SPN에 포트 번호가 포함되지 않습니다.
[in] cInstanceNames
pInstanceNames 및 pInstancePorts 배열의 요소 수를 지정합니다. 이 값이 0이 아니면 pInstanceNamescInstanceNames 문자열의 배열을 가리킬 수 있으며 pInstancePortsNULL 또는 cInstanceNames 포트 번호 배열에 대한 포인터일 수 있습니다. 이 값이 0이면 DsGetSpnprpszSpn 배열에서 하나의 SPN만 반환하고 pInstanceNames 및 pInstancePorts 무시됩니다.
[in, optional] pInstanceNames
호스트 이름에 사용되지 않는 추가 인스턴스 이름을 지정하는 null로 끝나는 문자열 배열에 대한 포인터입니다. 이 매개 변수는 cInstanceNames 0이면 무시됩니다. 이 경우 SPN의 InstanceName 구성 요소는 기본적으로 로컬 컴퓨터의 정규화된 DNS 이름 또는 DS_SPN_NB_HOST 또는 DS_SPN_NB_DOMAIN 지정된 경우 NetBIOS 이름으로 설정됩니다.
[in, optional] pInstancePorts
추가 인스턴스 포트 배열에 대한 포인터입니다. 이 값이NULL이 아닌경우 cInstanceNames 포트 번호의 배열을 가리킵니다. 이 값이 NULL
[out] pcSpn
prpszSpn포함된 SPN 수를 수신하는 변수에 대한 포인터입니다.
[out] prpszSpn
SPN 배열에 대한 포인터를 받는 변수에 대한 포인터입니다. 이 배열은 DsFreeSpnArray해제해야 합니다.
반환 값
함수가 SPN 배열을 반환하는 경우 반환 값은 ERROR_SUCCESS.
함수가 실패하면 반환 값은 다음 오류 코드 중 하나일 수 있습니다.
발언
여러 호스트 컴퓨터에서 실행되는 복제된 서비스의 여러 인스턴스에 대한 SPN을 만들려면
- cInstanceNames 인스턴스 수로 설정합니다.
- pInstanceNames 배열에서 호스트 컴퓨터의 이름을 지정합니다.
동일한 호스트 컴퓨터에서 실행되는 서비스의 여러 인스턴스에 대한 SPN을 만들려면
- cInstanceNames 인스턴스 수로 설정합니다.
- pInstanceNames 배열의 각 항목을 호스트 컴퓨터의 DNS 이름으로 설정합니다.
- pInstancePorts 매개 변수를 사용하여 각 인스턴스에 대한 고유한 포트 번호 배열을 지정하여 SPN을 명확하게 합니다.
일반적으로 도메인 관리자의 권한인 적절한 권한이 있는 애플리케이션은 DsWriteAccountSpn 함수를 호출하여 서비스가 실행 중인 사용자 또는 컴퓨터 계정에 하나 이상의 SPN을 등록할 수 있습니다. 그런 다음 클라이언트는 SPN을 사용하여 서비스를 인증할 수 있습니다.
메모
ntdsapi.h 헤더는 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 DsGetSpn을 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입대한
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista |
지원되는 최소 서버 | Windows Server 2008 |
대상 플랫폼 | Windows |
헤더 | ntdsapi.h |
라이브러리 | Ntdsapi.lib |
DLL | Ntdsapi.dll |