HTTP使用python-kerberos协商Windows与Unix服务器的实现

时间:2010-04-15 16:50:31

标签: python kerberos

我试图在我的python Web服务器中实现一个简单的单点登录。我使用了python-kerberos包很好用。我已经从我的Linux盒子中测试过它(对活动目录进行身份验证)并且没有问题。 但是,当我尝试使用Windows机器上的Firefox进行身份验证时(没有特殊设置,只需让用户登录到域+将我的服务器添加到negotiate-auth.trusted-uris中),它就不起作用了。我查看了发送的内容,它甚至不像Linux机器发送的东西。这个过程的Microsoft description非常类似于我与Linux的交互方式,但Windows机器通常发送一个非常短的字符串,它甚至不像微软文档所说的那样,当base64解码时,它是类似12个零字节后跟3或4个非零字节(GSS函数然后返回它不支持这样的方案)

客户端Firefox设置有问题,或者我应该遵循Negotiate协议的一些协议,但我无法在任何地方找到任何参考。有什么想法有什么不对吗?您是否知道我应该通过尝试找到哪种协议,因为它看起来不像SPNEGO,至少从MS文档开始。

更新:现在它似乎至少产生了合理的数据(在不同于windows7的东西上安装了firefox ......)但是我得到了: (('未指定的GSS失败。次要代码可能提供更多信息',851968),('',100004)) 谈判数据现在似乎没问题,所以这是一些其他错误。任何想法我在哪里可以解码100004的含义?

1 个答案:

答案 0 :(得分:1)

在Windows上,您还需要确保 network.auth.use-sspi = true ,以便Firefox使用本机Windows Kerberos(SSPI)而不是查找GSSAPI DLL。

如果不是这样,并且您想提供Kerberos和HTTP流量的数据包捕获,我很高兴看到它。