如何用Python对activedirectory服务器进行两阶段身份验证?

2024-05-15 02:46:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我在FreeBSD机器上运行python2.6,我想对activedirectory进行两阶段身份验证(我不知道这个术语的正确含义)。在

基本上,登录用户“myuserid”的过程是:

  1. 使用为此目的创建的系统帐户绑定到adldap服务器(称之为DOMAIN\gatekeeper
  2. 根据AD中存储的该用户的凭据验证myuserid的密码。在

我有下面的代码,看起来很像this question中的代码。在

l = ldap.initialize(Server)
l.protoco_version = 3
l.set_option(ldap.OPT_REFERRALS, 0)
l.simple_bind_s('cn=gatekeeper,dc=DOMAIN,dc=COMPANY,dc=TLD', 'gatekeeper_password')

最后的结果是:

^{pr2}$

我看到的每一个教程似乎都假定我在Windows上运行,事实并非如此。如何在Unix上执行此操作?在


Tags: 代码用户机器身份验证过程domaindcldap
2条回答

你有多重麻烦:

  1. 不带SSL的简单身份验证通常在AD上禁用(甚至SSL版本也经常关闭)
  2. simpleauth并没有真正指定密码编码(但是通常utf-8可以工作)
  3. 简单身份验证可能会给推荐带来麻烦
  4. 您的广告用户可能有一个不同的CN,当它的Gatekeeper\DOMAIN,通常是 比如cn=Gatekeeper,dc=Users,dc=DOMAIN,dc=COMPANY,dc=TLD等等(网守) 名称来自sAMAccountName属性,cn可能完全不相关…)

因此,通常你至少需要做以下几件事才能让它发挥作用:

  • 确保你的广告完全接受简单授权
  • 与您的网守帐户绑定,并在AD中找到用户名的DN (通常通过搜索类似于sAMAccountName或userPrincipalName的内容)
  • 用户找到了试图绑定您提供的密码的DN
  • 如果绑定成功,您可以将用户视为经过身份验证的用户。。。在

但是,如果到目前为止,使用PAM或Kerberos并不需要太多的工作。在

子代码为525的LDAP returning error 49不是错误的密码,而是错误的绑定DN。52e是个坏证件。请检查您是否有正确的网守使用者DN。在

相关问题 更多 >

    热门问题