在Python/C中验证Windows Server用户

2 投票
1 回答
1380 浏览
提问于 2025-04-17 22:57

我想在Python(2.6或2.7)/ C语言中进行用户身份验证。

我需要创建一个简单的身份验证模块,它会接收用户名和密码作为输入,并验证用户(就像PAM模块在UNIX系统中的作用一样)。

有没有什么方法可以做到这一点?

1 个回答

3

你是在找类似于 LogonUser 的东西吗?这个功能是用来验证本地用户的,比如:

#!python
# -*- coding: utf-8 -*-

from os import environ
from ctypes import windll, byref, POINTER, FormatError, GetLastError
from ctypes.wintypes import (
  LPCWSTR, WCHAR, DWORD, HANDLE, BOOL
)

MAX_COMPUTERNAME_LENGTH = 15
LOGON32_LOGON_NETWORK_CLEARTEXT = 8
LOGON32_PROVIDER_DEFAULT = 0

CloseHandle = windll.Kernel32.CloseHandle
CloseHandle.argtypes = [HANDLE]
CloseHandle.restype = BOOL

LogonUser = windll.Advapi32.LogonUserW
LogonUser.argtypes = [LPCWSTR, LPCWSTR, LPCWSTR, DWORD, DWORD, POINTER(HANDLE)]
LogonUser.restype = BOOL

if __name__ == '__main__':
  username = 'MyUsername'
  password = 'MyPassword'

  token = HANDLE()
  status = LogonUser(username,
                     environ['COMPUTERNAME'],
                     password,
                     LOGON32_LOGON_NETWORK_CLEARTEXT,
                     LOGON32_PROVIDER_DEFAULT,
                     byref(token))
  error = GetLastError()

  if status:
    print('OK, successes')
    CloseHandle(token)
  else:
    print(FormatError(error))

撰写回答