authGSSServerInit 极慢
authGSSServerInit extremely slow
我正在 Ubuntu 16.04 上为 Flask 服务器 运行ning 实施单点登录机制,该机制根据 Windows 域中的 Active Directory 服务器对用户进行身份验证。
当我在 Flask 服务器上 运行 来自 https://github.com/mkomitee/flask-kerberos/tree/master/example 的示例应用程序时,我可以从登录的客户端计算机访问 Flask 服务器,服务器正确协商访问并且 returns 登录用户的名称。但是,这很慢,大约需要两分钟。
按照 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,但 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
我正在 Ubuntu 16.04 上为 Flask 服务器 运行ning 实施单点登录机制,该机制根据 Windows 域中的 Active Directory 服务器对用户进行身份验证。
当我在 Flask 服务器上 运行 来自 https://github.com/mkomitee/flask-kerberos/tree/master/example 的示例应用程序时,我可以从登录的客户端计算机访问 Flask 服务器,服务器正确协商访问并且 returns 登录用户的名称。但是,这很慢,大约需要两分钟。
按照 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,但 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