다음을 통해 공유


Msv1_0SubAuthenticationRoutine 함수(subauth.h)

Msv1_0SubAuthenticationRoutine 함수는 클라이언트/서버별 인증을 수행합니다.

보안 주체의 자격 증명 및 SAM( 보안 계정 관리자 ) 데이터베이스의 정보는 인증을 위해 이 함수에 전달됩니다.

이 함수는 MSV1_0 인증 패키지에 사용하기 위해 사용자 지정 하위 인증 패키지 DLL에 의해 구현됩니다.

Msv1_0SubAuthenticationRoutine 함수는 비자동 인증에 대해서만 호출되며, 계정이 있는 인증 서버에서만 호출되며, 레지스트리의 올바른 키 아래에 하위 인증 DLL이 등록된 경우에만 호출됩니다.

참고 Kerberos 인증 패키지는 이 루틴을 호출하지 않습니다.
 

구문

NTSTATUS Msv1_0SubAuthenticationRoutine(
  [in]  NETLOGON_LOGON_INFO_CLASS LogonLevel,
  [in]  PVOID                     LogonInformation,
  [in]  ULONG                     Flags,
  [in]  PUSER_ALL_INFORMATION     UserAll,
  [out] PULONG                    WhichFields,
  [out] PULONG                    UserFlags,
  [out] PBOOLEAN                  Authoritative,
  [out] PLARGE_INTEGER            LogoffTime,
  [out] PLARGE_INTEGER            KickoffTime
);

매개 변수

[in] LogonLevel

LogonInformation 매개 변수에 지정된 정보 수준을 지정합니다. 이 매개 변수는 일반적으로 NetlogonInteractiveInformation으로 설정됩니다.

[in] LogonInformation

NETLOGON_LOGON_IDENTITY_INFO 구조체에 대한 포인터입니다. 이 구조체의 멤버는 로그온하는 사용자에 대한 정보를 포함합니다. 이 구조체의 LogonDomainName 멤버는 무시됩니다.

[in] Flags

선택 사항입니다. 로그온 상황을 설명하는 플래그를 포함합니다. 이 매개 변수는 다음 값 중 하나일 수 있습니다.

의미
MSV1_0_PASSTHRU
통과 인증. 사용자가 이 컴퓨터에 연결하지 않습니다.
MSV1_0_GUEST_LOGON
게스트 사용자 계정을 사용하여 로그온을 다시 시도합니다.

[in] UserAll

SAM 데이터베이스에서 반환된 사용자에 대한 설명을 포함하는 USER_ALL_INFORMATION 구조체에 대한 포인터입니다.

[out] WhichFields

SAM 데이터베이스에 다시 기록해야 하는 USER_ALL_INFORMATION 구조체의 멤버를 반환합니다. 이러한 멤버는 Msv1_0SubAuthenticationRoutine 호출자에게 성공을 반환하는 경우에만 작성됩니다. 다음 값만 유효합니다.

의미
USER_ALL_PARAMETERS
UserAll 구조의 Parameters 멤버에 포함된 데이터를 SAM 데이터베이스에 다시 씁니다.

Parameters 멤버의 UNICODE_STRING 버퍼 크기가 변경되면 Msv1_0SubAuthenticationRoutine MIDL_user_free 함수를 사용하여 버퍼를 삭제하고 MIDL_user_allocate 함수를 사용하여 다시 할당해야 합니다.

[out] UserFlags

LsaLogonUser 함수의 ProfileBuffer 매개 변수에 MSV1_0_LM20_LOGON_PROFILE 구조체가 포함된 경우 반환할 값입니다. 현재 구조체의 UserFlags 멤버에 대해 다음 값이 정의되어 있습니다.

의미
LOGON_GUEST
게스트 로그온입니다.
LOGON_NOENCRYPTION
호출자가 암호화된 자격 증명을 지정하지 않았습니다.
 
참고 규칙에 따라 하위 인증 패키지는 UserFlags의 상위 바이트만 비트로 반환합니다. 그러나 이 규칙은 적용되지 않습니다.
 

[out] Authoritative

반환된 상태 원래 호출자에게 반환되어야 하는 신뢰할 수 있는 상태 여부를 나타내는 부울 값에 대한 포인터입니다. 반환된 값이 FALSE이면 다른 도메인 컨트롤러에서 로그온 요청을 다시 시도할 수 있습니다. 이 매개 변수는 함수 호출의 반환 값에 관계없이 유효한 정보를 반환해야 합니다.

[out] LogoffTime

사용자가 시스템에서 로그오프해야 하는 시간을 수신하는 값에 대한 포인터입니다. 이 시간은 로그온 수명을 제어하는 데 사용되며 GMT 상대 시스템 시간으로 지정됩니다.

[out] KickoffTime

사용자가 시스템에서 로그오프해야 하는 시간을 수신하는 값에 대한 포인터입니다. 이 시간은 로그온 수명을 제어하는 데 사용되며 GMT 상대 시스템 시간으로 지정됩니다. 사용자가 로그오프되지 않을 경우 다음과 같은 큰 양의 값을 지정합니다.

KickoffTime->HighPart = 0x7FFFFFFF;
KickoffTime->LowPart = 0xFFFFFFFF;

반환 값

이 함수는 다음 값 중 하나를 반환해야 합니다.

반환 코드 설명
STATUS_SUCCESS
오류가 없었습니다.
STATUS_ACCOUNT_DISABLED
계정을 사용할 수 없습니다.
STATUS_ACCOUNT_EXPIRED
계정이 만료되었습니다.
STATUS_ACCOUNT_LOCKED_OUT
계정이 잠겼습니다.
STATUS_INVALID_INFO_CLASS
LogonLevel 이 잘못되었습니다.
STATUS_INVALID_LOGON_HOURS
현재 사용자는 로그온할 권한이 없습니다.
STATUS_INVALID_WORKSTATION
사용자는 지정된 워크스테이션에 로그온할 권한이 없습니다.
STATUS_NO_SUCH_USER
지정된 사용자에게 계정이 없습니다.
STATUS_PASSWORD_EXPIRED
암호가 만료되었습니다.
STATUS_PASSWORD_MUST_CHANGE
다음 로그온에서 암호를 변경해야 함을 나타내는 계정이 표시됩니다.
STATUS_WRONG_PASSWORD
암호가 잘못되었습니다.

설명

AuthenticationInformation 매개 변수의 일부가 하위 인증이 수행되어야 한다고 나타내고 Msv1_0SubAuthenticationRoutine 함수를 내보내는 하위 인증 DLL이 워크스테이션에 올바르게 등록된 경우 이 함수는 MSV1_0 인증 패키지에서 호출됩니다.

MSV1_0 인증 패키지는 MSV1_0_INTERACTIVE_LOGON 구조가 필요한 대화형 로그온에 대한 하위 인증을 지원하지 않습니다. MSV1_0_LM20_LOGON 구조가 필요한 네트워크 로그온은 하위 인증을 사용할 수 있습니다.

Msv1_0SubAuthenticationRoutine 함수는 올바른 도메인 컨트롤러가 있고 인증할 보안 주체에 대한 모든 정보가 SAM 데이터베이스에서 검색된 후에 호출됩니다. 하위 인증을 사용하는 경우 인증은 하위 인증 DLL의 책임이며 해당 DLL에서 내보낸 Msv1_0SubAuthenticationRoutine 함수에서 수행해야 합니다.

요구 사항

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