다음을 통해 공유


DsMakeSpnA 함수(dsparse.h)

DsMakeSpn 함수는 서비스 인스턴스를 식별하는 SPN(서비스 사용자 이름)을 생성합니다.

클라이언트 애플리케이션은 이 함수를 사용하여 서비스 인스턴스를 인증하는 데 사용하는 SPN을 구성합니다. 예를 들어 클라이언트는 InitializeSecurityContext 함수의 pszTargetName 매개 변수에서 SPN을 전달할 수 있습니다.

통사론

DSPARSE DWORD DsMakeSpnA(
  [in]           LPCSTR ServiceClass,
  [in]           LPCSTR ServiceName,
  [in, optional] LPCSTR InstanceName,
  [in]           USHORT InstancePort,
  [in, optional] LPCSTR Referrer,
  [in, out]      DWORD  *pcSpnLength,
  [out]          LPSTR  pszSpn
);

매개 변수

[in] ServiceClass

서비스의 클래스를 지정하는 null로 끝나는 상수 문자열에 대한 포인터입니다. 이 매개 변수는 해당 서비스에 고유한 문자열일 수 있습니다. 프로토콜 이름(예: ldap) 또는 GUID의 문자열 형식이 허용됩니다.

[in] ServiceName

DNS 이름, NetBIOS 이름 또는 고유 이름(DN)을 지정하는 null로 끝나는 상수 문자열에 대한 포인터입니다. 이 매개 변수는 NULL않아야 합니다.

ServiceName, InstanceNameInstancePort 매개 변수를 사용하여 SPN을 구성하는 방법에 대한 자세한 내용은 다음 설명 섹션을 참조하세요.

[in, optional] InstanceName

서비스 인스턴스에 대한 호스트의 DNS 이름 또는 IP 주소를 지정하는 null로 끝나는 상수 문자열에 대한 포인터입니다.

ServiceName 서비스 호스트 컴퓨터의 DNS 또는 NetBIOS 이름을 지정하는 경우 InstanceName 매개 변수는 NULL합니다.

ServiceName DNS 도메인 이름, DNS SRV 레코드의 이름 또는 서비스 연결 지점의 DN과 같은 고유 이름을 지정하는 경우 InstanceName 매개 변수는 서비스 호스트 컴퓨터의 DNS 또는 NetBIOS 이름을 지정해야 합니다.

[in] InstancePort

서비스 인스턴스의 포트 번호입니다. 기본 포트에 0을 사용합니다. 이 매개 변수가 0이면 SPN에 포트 번호가 포함되지 않습니다.

[in, optional] Referrer

IP 주소 조회를 제공한 호스트의 DNS 이름을 지정하는 null로 끝나는 상수 문자열에 대한 포인터입니다. ServiceName 매개 변수가 IP 주소를 지정하지 않는 한 이 매개 변수는 무시됩니다.

[in, out] pcSpnLength

새로 생성된 SPN을 받을 버퍼의 길이(문자)를 포함하는 변수에 대한 포인터입니다. 이 값은 최종 버퍼 크기를 미리 요청하려면 0일 수 있습니다.

pcSpnLength 매개 변수는 종료 null 문자를 포함하여 생성된 SPN의 실제 길이도 수신합니다.

[out] pszSpn

생성된 SPN을 수신하는 null로 끝나는 문자열에 대한 포인터입니다. 이 버퍼는 pcSpnLength지정된 길이여야 합니다. pszSpn 매개 변수는 NULL 최종 버퍼 크기를 미리 요청할 수 있습니다.

반환 값

함수가 SPN을 반환하는 경우 반환 값은 ERROR_SUCCESS. 함수가 실패하면 반환 값은 다음 오류 코드 중 하나일 수 있습니다.

발언

DsMakeSpn 함수에서 생성된 SPN의 형식은 입력 매개 변수에 따라 달라집니다. 두 가지 기본 형식이 있습니다. 두 형식 모두 ServiceClass 문자열과 호스트 컴퓨터 이름 및 선택적 InstancePort 구성 요소로 시작합니다.

참고 이 형식은 호스트 기반 서비스에서 사용됩니다.
 

"<ServiceClass>/<호스트>" 형식이 SPN을 생성하려면

  1. ServiceName 매개 변수를 서비스 인스턴스에 대한 호스트 컴퓨터의 DNS 이름으로 설정합니다. SPN의 호스트 구성 요소입니다.
  2. InstanceName참조자 매개 변수를 NULL설정합니다.
  3. InstancePort 매개 변수를 0으로 설정합니다. InstancePort 0이 아닌 경우 SPN의 형식은 다음과 같습니다.
    <service class>/<host>:<instance port>/<referrer>
    
참고 이 형식은 복제 가능 서비스에서 사용됩니다.
 

"<ServiceClass>/<호스트>:<InstancePort>" 형식 사용하여 SPN을 생성합니다.

  1. InstanceName 매개 변수를 서비스 인스턴스에 대한 호스트 컴퓨터의 DNS 이름으로 설정합니다. 호스트 구성 요소입니다.
  2. ServiceName 매개 변수를 서비스의 인스턴스를 식별하는 문자열로 설정합니다. 예를 들어 이 서비스 인스턴스에 대한 서비스 연결 지점의 고유 이름일 수 있습니다.
  3. Referrer 매개 변수를 NULL설정합니다.
  4. InstancePort 매개 변수를 0으로 설정합니다. InstancePort 0이 아닌 경우 SPN의 형식은 다음과 같습니다.
    <service class>/<host>:<instance port>/<service name>
    
Referrer 매개 변수는 ServiceName 매개 변수가 서비스의 호스트 컴퓨터의 IP 주소를 지정하는 경우에만 사용됩니다. 이 경우 참조자 IP 주소를 조회로 제공한 컴퓨터의 DNS 이름을 지정합니다. SPN의 형식은 다음과 같습니다.
<service class>/<host>:<instance port>/<referrer>

여기서 InstanceName NULLInstancePort 구성 요소가 선택 사항인 경우 호스트 구성 요소는 InstanceName 문자열 또는 ServiceName 문자열입니다.

문자열 매개 변수는 SPN의 구성 요소를 구분하는 데 사용되므로 슬래시(/) 문자를 포함할 수 없습니다.

메모

dsparse.h 헤더는 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 DsMakeSpn을 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입대한 규칙을 참조하세요.

요구 사항

요구
지원되는 최소 클라이언트 Windows Vista
지원되는 최소 서버 Windows Server 2008
대상 플랫폼 Windows
헤더 dsparse.h(Ntdsapi.h 포함)
라이브러리 Ntdsapi.lib
DLL Ntdsapi.dll

참고 항목

도메인 컨트롤러 및 복제 관리 함수

InitializeSecurityContext