移动设备上的用户导航到受windows ntlm security保护的网站/页面。用户提供其凭据并使用该站点。他们走开后回来,他们不需要重新输入他们的凭证..
问题:什么决定了身份验证的有效期?在他们必须重新输入他们的Windows凭证之前,我们如何最好地限制它的有效时间?
THX
答案 0 :(得分:1)
什么决定了身份验证的有效期?
简单地说,你的申请。针对受保护资源的任何请求都将强制执行整个SPNEGO进程。
SPNEGO works基本上由服务器向初始请求发送HTTP 401响应,标头指示它将支持Negotiate或NTLM等认证。记住HTTP是无状态的。当然,SPEGNO协议通过在每个连接的基础上维护服务器端状态来解决这个问题。尽管如此,服务器始终可以通过以下方式控制:1)关闭连接或2)向客户端发送初始401响应,强制进行SPNEGO握手。
在他们必须重新输入Windows凭据之前,我们如何才能最有效地限制它的有效时间?
这里要认识到的重要一点是,许多用户代理(即浏览器)会在输入后缓存用户的凭据,只需使用这些凭据来回复任何协商挑战(这与他们的方式类似)处理基本身份验证)。任何“强迫”用户重新输入其凭据的方式都必须有点棘手,因为用户代理实际上是在诱使服务器相信用户已经重新输入了他们的密码(技术上,仅限SPNEGO)验证用户代理知道用户的ID和密码 - 协议本身无法验证是否有人在设备键盘上输入了任何内容。
在我的头脑中,可能有用的(我不知道如何在不编写自己的SPNEGO处理程序服务器端的情况下做这样的事情)是欺骗用户代理使凭证缓存无效。为此,您的服务器需要发送初始HTTP 401以启动SPNEGO协商,然后,当客户端在握手的第一步响应时,重新发送初始401错误。这里的问题是如何处理它将严重依赖于所讨论的用户代理。有些人可能会提示用户验证他们的凭据(因为从客户端的角度来看,服务器说的是凭据是错误的),但其他人可能只是显示错误页面,这可能是不可取的。