2

我知道 win32security.LogonUser。我想要做的是检查输入的凭据以了解它们是否与本地 Windows 机器上的用户和密码匹配,以便我可以授予他们通过网络访问 Windows 机器的权限。这个想法是使用具有默认 Windows 身份验证的 paramiko 制作一个 pythonic ssh 服务器。我不想做的是每次建立新连接时注销用户,或者因为用户已经登录而导致身份验证过程失败。有没有办法在 Windows 上验证用户而无需创建登录会议?

4

1 回答 1

3

事实证明,我只是LogonUser错误地使用了该功能。确实存在一个枚举值来传递函数以告诉它您希望返回一个安全上下文以使用该用户的凭据执行进程,并且如果曾经传入错误的用户名或密码,则会引发异常。

换句话说,这是调用该方法的可接受方式,因此如果用户已经登录或有多个会话正在运行,它不会引发异常。这也是一种能够即时验证用户凭据以满足任何应用程序需求的好方法:

try:
    hUser = win32security.LogonUser(username,
                                    domain,
                                    password,
                                    win32security.LOGON32_LOGON_INTERACTIVE,
                                    win32security.LOGON32_PROVIDER_DEFAULT) 
except win32security.error:
    print "Failed"
    import traceback
    traceback.print_exc()
于 2013-04-23T00:07:23.513 回答