无法使用LDP身份验证提供程序对Askbot进行身份验证

时间:2019-11-26 09:27:05

标签: python django ldap askbot

无法在Ubantu 18.04上对Askbot django应用程序进行身份验证

可以ping通LDAP服务器,但仍然显示“无法联系LDAP服务器”

错误日志显示:-

  

回溯(最近通话最近):文件   “ /srv/askbot/venv/local/lib/python2.7/site-packages/askbot/deps/django_authopenid/ldap_auth.py”,   ldap_authenticate_default中的第127行       get_attrs文件“ /srv/askbot/venv/local/lib/python2.7/site-packages/ldap/ldapobject.py”,   第854行,在search_s中       返回self.search_ext_s(base,scope,filterstr,attrlist,attrsonly,None,None,timeout = self.timeout)   文件   “ /srv/askbot/venv/local/lib/python2.7/site-packages/ldap/ldapobject.py”,   第847行,在search_ext_s中       msgstr = self.search_ext(基本,范围,filterstr,attrlist,attrsonly,serverctrls,clientctrls,超时,大小限制)   文件   “ /srv/askbot/venv/local/lib/python2.7/site-packages/ldap/ldapobject.py”,   第843行,在search_ext中       超时,大小限制,文件“ /srv/askbot/venv/local/lib/python2.7/site-packages/ldap/ldapobject.py”,   _ldap_call中的第331行       reraise(exc_type,exc_value,exc_traceback)文件“ /srv/askbot/venv/local/lib/python2.7/site-packages/ldap/ldapobject.py”,   _ldap_call中的第315行       结果= func(* args,** kwargs)SERVER_DOWN:{u'info':'传输端点未连接','errno':107,'desc':u“无法联系LDAP   服务器”}

1 个答案:

答案 0 :(得分:1)

Ping使用ICMP协议。 LDAP使用TCP连接到(通常)端口389(对于LDAPS则使用636)。那是两件事。

因此,您可以ping服务器的事实仅意味着服务器在线。这并不意味着LDAP服务正在运行,也不意味着防火墙没有阻止TCP流量流向正确的端口。

您可以通过以下两种方式之一来测试打开与Ubuntu上正确端口的TCP连接:

        for (int i = 0; i < 3; i++)         
        {

            do
            {
                randQuestion = r.Next(0, 5);

            }
            while (equal(beforeQ, randQuestion));

            randQuestion = r.Next(0, 5);

            for (int j = 1; j < 5; j++)
            {

                do
                {
                    randBogi = r.Next(1, 5);
                }
                while (equal(beforeB, randBogi));

                beforeB[j - 1] = randBogi;
                R_Question[i, j] = Question[randQuestion, randBogi];
            }
        }

        bool equal(int[] before, int rand)
        {
            for (int k = 0; k < before.Length ; k++)
            {
                if (before[k].Equals(rand))
                {
                    return true;
                }
            }
            return false;
        }

或者,

telnet yourserver 389

有关here的更多信息。

您可能必须安装telnet或nmap才能运行。而且,如果您使用的是LDAPS(基于SSL的LDAP),则应测试端口636。