g4u*_*r4v 3 security django kerberos
我正在面临一个问题,理解为什么要使用服务器mod_auth_kerb身份验证的原因Kerberos.
我正在开发一个使用的网站Django + mod_wsgi + Apache.
我网站的第一页要求用户输入username/password,我的一个Django app将使用username/password并用于Python kerberos module向kerberos服务器验证用户身份.
我在哪里需要使用mod_auth_kerb?
我明白,我将有能力利用username/password我的优势,这是使用的原因mod_auth_kerb吗?
mod_auth_kerb可以做两件事:
通过HTTP Basic提示用户输入用户名和密码,并在服务器端使用Kerberos验证它们,或者
允许浏览器通过HTTP Negotiate在两端使用Kerberos进行身份验证.如果客户端支持Kerberos,则会提供单点登录:客户端通过Kerberos系统自动向服务器进行身份验证,而无需通过用户登录时获取的凭据提示输入密码.
您正在申请中排名第一.将它移到Apache中可能会很有用,可以在所有应用程序中一致地完成它.#2你根本没做,但它只适用于Kerberos基础设施可用的环境.
一句警告:我不知道"Python kerberos模块",但它很可能没有安全地进行密码验证.声称这样做的许多事情都相当于"kinit":他们使用用户名和密码来获取初始Kerberos凭证(TGT),并声称它是否成功.问题是他们已经要求第三方(Kerberos身份验证服务器(密钥分发中心)或KDC)验证密码 - 但他们没有检查到他们实际上正在与真实的KDC交谈.他们可能刚收到来自给他们密码的同一用户的消息,当然消息说"密码是正确的".为了正确地执行此操作,验证程序需要在Kerberos领域("委托人")中拥有自己的标识,并采取额外步骤使用TGT为自己获取票证并进行验证; 这可以确保回复来自真正的KDC.
如果您的KDC是Windows域控制器,另一种常见的方法是使用LDAP:通过LDAP连接到域控制器并使用密码进行身份验证; DC将根据Kerberos本身检查密码.当然,您遇到了同样的问题:您需要验证您是否正在与真正的域控制器进行通信 - 但您可以通过证书进行TLS,这可能更容易.
| 归档时间: |
|
| 查看次数: |
915 次 |
| 最近记录: |