python – authGSSServerInit非常慢

我正在为在Ubuntu 16.04上运行的Flask服务器实现单点登录机制,该机制根据Windows域中的Active Directory服务器对用户进行身份验证.

当我在Flask服务器上运行https://github.com/mkomitee/flask-kerberos/tree/master/example的示例应用程序时,我可以从登录的客户端计算机访问Flask服务器,服务器正确协商访问并返回登录用户的名称.然而,这非常缓慢,大约需要两分钟.

按照flask-kerberos中发生的步骤,我发现该过程在authGSSServerInit step停止.我可以使用以下最小程序重现行为:

import kerberos
rc, state = kerberos.authGSSServerInit("HTTP@flaskserver.mydomain.local")

初始化成功完成,但大约需要两分钟.

我已在AD服务器上成功注册了服务主体(HTTP / flaskserver.mydomain.local),并将keytab导出到Flask服务器.我可以使用kinit -k HTTP / flaskserver.mydomain.local在Flask服务器上获得票证授予票证.我还可以使用kerberos库在Python中验证密码:

import kerberos
kerberos.checkPassword('username', 'password', 'HTTP/flaskserver.mydomain.local', 'MYDOMAIN.LOCAL'

这种运行正确,几乎是即时的.

运行kerberos.authGSSServerInit会导致延迟的原因是什么?我该如何调试?

解决方法:

延迟是由主机名的反向DNS查找失败引起的. host flaskserver正确返回了IP,但是主机< ip-of-flaskserver>返回主机< ip-of-flaskserver> .in-addr.arpa未找到:2(SERVFAIL).

https://web.mit.edu/kerberos/krb5-1.13/doc/admin/princ_dns.html所述,在krb5.conf中禁用反向DNS查找解决了以下问题:

[libdefaults]
    rdns = false
上一篇:python – WinRM – 服务器拒绝指定的凭据


下一篇:【我的Linux,我做主!】常用共享存储--NFS服务配置应用与实战