如何使用Python + LDAP对AD进行身份验证.我目前正在使用python-ldap库,它所产生的就是眼泪.
我甚至无法绑定执行简单的查询:
import sys
import ldap
Server = "ldap://my-ldap-server"
DN, Secret, un = sys.argv[1:4]
Base = "dc=mydomain,dc=co,dc=uk"
Scope = ldap.SCOPE_SUBTREE
Filter = "(&(objectClass=user)(sAMAccountName="+un+"))"
Attrs = ["displayName"]
l = ldap.initialize(Server)
l.protocol_version = 3
print l.simple_bind_s(DN, Secret)
r = l.search(Base, Scope, Filter, Attrs)
Type,user = l.result(r,60)
Name,Attrs = user[0]
if hasattr(Attrs, 'has_key') and Attrs.has_key('displayName'):
displayName = Attrs['displayName'][0]
print displayName
sys.exit()
Run Code Online (Sandbox Code Playgroud)
运行它myusername@mydomain.co.uk password username
会给我两个错误之一:
Invalid Credentials
- 当我输入错误或故意使用错误的凭据时,它无法进行身份验证.
ldap.INVALID_CREDENTIALS:{'info':'80090308:LdapErr:DSID-0C090334,评论:AcceptSecurityContext错误,数据52e,vece','desc':'凭证无效'}
要么
ldap.OPERATIONS_ERROR:{'info':'00000000:LdapErr:DSID-0C090627,注释:为了执行此操作,必须在连接上完成成功绑定.,data 0,vece','desc':'操作错误"}
我错过了什么来正确绑定?
我在fedora和windows上遇到了同样的错误.
我听说过一些方法,但都没有卡住.我个人试图避免C中的复杂类型,并尝试将它们分解为组件typedef.
我现在面临着从一个所谓的"三星级程序员"维护一些遗留代码的问题,而且我很难阅读一些***代码[] [].
你如何阅读复杂的C声明?
我不得不在python中进行一些内省,它并不漂亮:
name = sys._getframe(1).f_code
name = "%s:%d %s()" %(os.path.split(name.co_filename)[1],name.co_firstlineno,name.co_name)
Run Code Online (Sandbox Code Playgroud)
得到类似的东西
foo.py:22 bar() blah blah
Run Code Online (Sandbox Code Playgroud)
在我们的调试输出中.
理想情况下,我希望通过这种信息向stderr添加任何内容 - 是否有可能在python中全局更改print的行为?
虽然一般情况是不可判定的,但许多人仍然可以解决日常使用中相当不足的问题.
在科恩关于计算机病毒的博士论文中,他展示了病毒扫描如何与停止问题等效,但我们有一个完整的行业围绕着这一挑战.
我也见过微软的终结者项目 - http://research.microsoft.com/Terminator/
这让我想问一下 - 停止问题被高估 - 我们是否需要担心一般情况?
随着时间的推移,类型是否会变得完整 - 依赖类型似乎是一个很好的发展?
或者,从另一个角度来看,我们是否会开始使用非图灵完整语言来获得静态分析的好处?