有没有办法用python的win32security验证用户权限

时间:2013-04-23 00:01:20

标签: python windows security ssh pywin32

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

1 个答案:

答案 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()