【问题标题】:authGSSServerInit extremely slowauthGSSServerInit 极慢
【发布时间】:2017-10-25 11:05:16
【问题描述】:

我正在为在 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 运行延迟的原因可能是什么?我该如何调试?

【问题讨论】:

  • 你有没有检查过wireshark的踪迹?
  • 我没有跟踪(只是因为我没有任何经验),但是您的关键字帮助我搜索了这个问题。事实证明,这种停滞是由反向 DNS 查找失败引起的。谢谢!

标签: python linux active-directory single-sign-on kerberos


【解决方案1】:

延迟是由于主机名的反向 DNS 查找失败造成的。 host flaskserver 正确返回了 IP,但 host <ip-of-flaskserver> 返回了 Host <ip-of-flaskserver>.in-addr.arpa not found: 2(SERVFAIL)

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

[libdefaults]
    rdns = false

【讨论】:

    猜你喜欢
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-29
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多