我知道win32security.LogonUser。我想要做的是检查输入的凭据以了解它们是否与本地Windows机器上的用户匹配,以及密码,以便我可以通过网络授予他们访问Windows机器的权限。我们的想法是拥有一个由paramiko制作的pythonic ssh服务器,它具有默认的Windows身份验证。我不想要做的是每次建立新连接时将用户注销,或者由于用户已经登录而导致身份验证过程失败。有没有办法在不创建登录的情况下在Windows上验证用户会话?
答案 0 :(得分:2)
事实证明我只是错误地使用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()