다음을 통해 공유


LsaCallAuthenticationPackage 함수(ntsecapi.h)

LsaCallAuthenticationPackage 함수는 로그온 애플리케이션에서 인증 패키지와 통신하는 데 사용됩니다.

이 함수는 일반적으로 인증 패키지에서 제공하는 서비스에 액세스하는 데 사용됩니다.

구문

NTSTATUS LsaCallAuthenticationPackage(
  [in]  HANDLE    LsaHandle,
  [in]  ULONG     AuthenticationPackage,
  [in]  PVOID     ProtocolSubmitBuffer,
  [in]  ULONG     SubmitBufferLength,
  [out] PVOID     *ProtocolReturnBuffer,
  [out] PULONG    ReturnBufferLength,
  [out] PNTSTATUS ProtocolStatus
);

매개 변수

[in] LsaHandle

LsaRegisterLogonProcess 또는 LsaConnectUntrusted에 대한 이전 호출에서 가져온 핸들입니다.

[in] AuthenticationPackage

인증 패키지의 식별자를 제공합니다. 이 값은 LsaLookupAuthenticationPackage를 호출하여 가져옵니다.

[in] ProtocolSubmitBuffer

인증 패키지에 전달된 인증 패키지별 메시지 버퍼입니다.

이 버퍼의 형식 및 콘텐츠에 대한 자세한 내용은 개별 인증 패키지에 대한 설명서를 참조하세요.

[in] SubmitBufferLength

ProtocolSubmitBuffer 버퍼의 길이(바이트)를 나타냅니다.

[out] ProtocolReturnBuffer

인증 패키지에서 반환된 버퍼의 주소를 수신하는 포인터입니다.

이 버퍼의 형식 및 콘텐츠에 대한 자세한 내용은 개별 인증 패키지에 대한 설명서를 참조하세요.

이 버퍼는 이 함수에 의해 할당됩니다. 이 버퍼 사용을 마쳤으면 LsaFreeReturnBuffer 함수를 호출하여 메모리를 해제합니다.

[out] ReturnBufferLength

반환된 버퍼의 길이를 바이트 단위로 받는 ULONG 에 대한 포인터입니다.

[out] ProtocolStatus

함수가 성공하면 이 매개 변수는 인증 패키지의 완료 상태 나타내는 NTSTATUS 코드를 받습니다.

반환 값

함수가 성공하면 반환 값이 STATUS_SUCCESS. ProtocolStatus 매개 변수를 확인하여 인증 패키지에서 반환된 상태 가져옵니다.

함수가 실패하면 반환 값은 NTSTATUS 코드입니다. 가능한 오류 코드는 다음과 같습니다.

반환 코드 설명
STATUS_QUOTA_EXCEEDED
클라이언트의 메모리 할당량이 반환 버퍼를 할당하기에 충분하지 않으므로 호출을 완료할 수 없습니다.
STATUS_NO_SUCH_PACKAGE
지정된 인증 패키지는 LSA에서 인식되지 않습니다.
STATUS_PKINIT_FAILURE
Kerberos 클라이언트가 유효하지 않은 KDC 인증서를 받았습니다. 디바이스 로그온의 경우 엄격한 KDC 유효성 검사가 필요하므로 KDC에는 "Kerberos 인증" 템플릿 또는 해당 템플릿을 사용하는 인증서가 있어야 합니다. 또한 KDC 인증서가 만료되거나 해지되거나 클라이언트가 잘못된 서버로 요청을 보내는 활성 공격을 받을 수 있습니다.
STATUS_PKINIT_CLIENT_FAILURE
Kerberos 클라이언트가 유효하지 않은 시스템 인증서를 사용하고 있습니다. 디바이스 로그온의 경우 DNS 이름이 있어야 합니다. 또한 시스템 인증서가 만료되거나 잘못된 인증서를 선택할 수 있습니다.
 

자세한 내용은 LSA 정책 함수 반환 값을 참조하세요.

LsaNtStatusToWinError 함수는 NTSTATUS 코드를 Windows 오류 코드로 변환합니다.

설명

로그온 애플리케이션은 LsaCallAuthenticationPackage 를 호출하여 인증 패키지와 통신할 수 있습니다. 애플리케이션이 이 작업을 수행할 수 있는 몇 가지 이유가 있습니다.

  • NTLM Challenge-Response 프로토콜과 같은 다중 메시지 인증 프로토콜을 구현합니다.
  • 상태 변경 정보를 인증 패키지에 전달하려면 예를 들어 NTLM은 이전에 연결할 수 없었던 도메인 컨트롤러에 연결할 수 있음을 MSV1_0 패키지에 알릴 수 있습니다. 그런 다음 인증 패키지는 해당 도메인 컨트롤러에 로그온한 모든 사용자를 다시 로그온합니다.
일반적으로 이 함수는 사용자 지정 인증 패키지와 정보를 교환하는 데 사용됩니다. 이 함수는 windows와 함께 제공되는 인증 패키지(예: MSV1_0 또는 Kerberos) 중 하나를 사용하는 애플리케이션에서는 필요하지 않습니다.

LsaCallAuthenticationPackage를 호출하여 LOCAL_SYSTEM 및 NETWORK_SERVICE 대한 PKINIT 디바이스 자격 증명을 클린 합니다. PKINIT 디바이스 자격 증명이 없으면 호출이 성공하면 작업이 수행되지 않습니다. PKINIT 디바이스 자격 증명이 있는 경우 성공적인 호출은 암호 자격 증명만 유지되도록 PKINIT 디바이스 자격 증명을 정리합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 ntsecapi.h
라이브러리 Secur32.lib
DLL Secur32.dll

추가 정보

LsaFreeReturnBuffer

LsaLookupAuthenticationPackage

LsaNtStatusToWinError