다음을 통해 공유


Msv1_0SubAuthenticationFilter 함수(subauth.h)

Msv1_0SubAuthenticationFilter 함수는 도메인 컨트롤러와 관련된 사용자 로그온 인증을 수행합니다.

함수는 사용자의 로그온 데이터와 도메인 컨트롤러의 SAM( 보안 계정 관리자 ) 데이터베이스에 있는 사용자에 대해 찾은 모든 정보를 수신합니다.

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

구문

NTSTATUS Msv1_0SubAuthenticationFilter(
  [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_0SubAuthenticationFilter 성공을 반환하는 경우에만 작성됩니다. 다음 값만 유효합니다.

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

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

[out] UserFlags

해당 함수의 ProfileBuffer 매개 변수에 있는 LsaLogonUser 함수에서 반환할 값입니다. 이 매개 변수는 다음 값 중 하나일 수 있습니다.

의미
LOGON_GUEST
게스트 로그온이었습니다.
LOGON_NOENCRYPTION
호출자가 암호화된 자격 증명을 지정하지 않았습니다.
 
참고 규칙에 따라 하위 인증 패키지는 UserFlags 매개 변수의 상위 바이트 단위로만 비트를 반환합니다.
 

[out] Authoritative

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

[out] LogoffTime

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

[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
암호가 잘못되었습니다.
 

Msv1_0SubAuthenticationFilter 함수를 Kerberos 인증 패키지와 함께 사용하는 경우 함수 호출이 STATUS_SUCCESS 반환하고 LogoffTime 또는 KickoffTime의 두 매개 변수 중 하나에 0이 아닌 값이 있는 경우 이 값은 티켓 수명으로 사용됩니다. 반면에 두 매개 변수의 값이 0이 아닌 경우 이 두 값 중 더 작은 값이 사용됩니다.

티켓 수명( LogoffTimeKickoffTime의 빠른 시간)에 사용되는 값이 기본 티켓 수명보다 크면 해당 값이 티켓의 최대 갱신 시간으로 사용됩니다. 반대로 두 값 중 큰 값( LogoffTimeKickoffTime 이후)이 기본 티켓 수명보다 작으면 이 값이 티켓 수명으로 사용됩니다. 자세한 내용은 Microsoft Kerberos를 참조하세요.

Kerberos 인증 패키지와 함께 사용할 경우 이 함수가 오류를 반환하는 경우 KDC(키 배포 센터)는 상태 값을 확장 오류 코드로 사용하여 Kerberos 오류 KDC_ERR_POLICY 반환합니다.

설명

이 함수의 구현은 LDAP( Lightweight Directory Access Protocol ) 트래픽을 유발하는 작업을 실행해서는 안 됩니다. 예를 들어 Active Directory 데이터베이스에 연결하고 쿼리하지 마세요.

MSV1_0 또는 Kerberos 인증 패키지가 로그온의 유효성을 검사한 후 Msv1_0SubAuthenticationFilter 함수는 추가 유효성 검사를 수행하여 사용자가 네트워크 계정에 로그온할 수 있는지 여부를 확인할 수 있습니다. 이 함수는 도메인 컨트롤러의 레지스트리에서 하위 인증 패키지 DLL이 'Auth0'으로 올바르게 등록된 경우 호출됩니다. 레지스트리 경로는 함수가 MSV1_0 또는 Kerberos 하위 인증 패키지 DLL에 있는지 여부에 따라 다릅니다.

이 필터 루틴은 로그온이 진행되어야 했음을 나타내는 STATUS_SUCCESS 반환하거나 추가 유효성 검사가 실패했음을 나타내는 오류 코드를 반환할 수 있습니다.

요구 사항

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