서비스가 SPN을 구성하는 방법

서비스는 두 개의 함수를 사용하여 SPN을 작성할 수 있습니다. DsGetSpn 은 SPN을 작성하기 위한 범용 함수이며 DsServerRegisterSpn 은 호스트 기반 서비스에 대한 간단한 SPN을 구성하고 등록하기 위한 특수 함수입니다.

서비스 설치 관리자는 일반적으로 DsGetSpn 함수를 사용하여 SPN을 구성한 다음, DsWriteAccountSpn 함수를 사용하여 서비스의 로그온 계정에 등록합니다. DsGetSpn은 다음 함수를 수행할 수 있습니다.

  • 호스트 기반 서비스에 대한 "<서비스 클래스>/<호스트>" 형식으로 간단한 SPN을 만듭니다.
  • 복제 가능한 서비스에서 사용하는 "<서비스 이름>" 구성 요소 또는 단일 호스트에서 서비스의 여러 인스턴스를 구분하는 "<포트>" 구성 요소를 포함하는 복잡한 SPN을 만듭니다.
  • 기본적으로 "<호스트" 구성 요소가 지정된 호스트>의 이름 또는 로컬 컴퓨터의 이름으로 설정된 단일 SPN을 만듭니다.
  • 포리스트 전체의 여러 호스트에서 실행되는 여러 서비스 인스턴스에 대한 SPN 배열을 만듭니다. 각 SPN은 서비스 instance 호스트의 이름을 지정합니다.
  • 동일한 호스트에서 실행되는 여러 서비스 인스턴스에 대한 SPN 배열을 만듭니다. 각 SPN은 호스트의 이름과 서비스 instance 포트 번호를 지정합니다.

DsGetSpn에서 반환된 이름 배열은 DsFreeSpnArray 함수를 호출하여 해제해야 합니다.

DsGetSpn, DsWriteAccountSpnDsServerRegisterSpn 함수는 SPN이 고유한지 확인하지 않습니다. 클라이언트가 고유하지 않은 SPN을 표시하는 경우 상호 인증이 실패하므로 SPN을 등록하기 전에 고유성을 확인합니다. 이렇게 하려면 글로벌 카탈로그(GC)에서 SPN과 일치하는 servicePrincipalName 특성을 검색합니다. GC 검색에 대한 자세한 내용은 글로벌 카탈로그 검색을 참조하세요.