我已经安装了 Apache HTTPD 服务器及其mod_authn_otp
用于身份验证的模块。一切正常。
但是,有一个小问题。我无法“结束”用户会话。在阅读文件后,我发现了如何做到这一点。mod_authn_otp文档说:
登出
由于 HTTP 身份验证本质上是无状态的,因此没有实际的“登录”过程。每个 HTTP 请求都需要自己的身份验证。同样,也没有“注销”过程。换句话说,用户或服务器没有办法强制用户的浏览器“注销”,因为浏览器永远不会“登录”。使用 mod_authn_otp,“注销”恰好在达到最大逗留时间时发生。
实际上,在实践中,服务器有一种方法可以“注销”用户:返回 401 Unauthorized HTTP 错误代码。这将导致浏览器“忘记”它一直在使用的用户名/密码对并提示输入一个新的。然而,这必须在脚本级别完成(例如,通过 PHP 脚本)。此外,这只会“注销”该用户的浏览器。能够在最长逗留时间内从不同浏览器使用相同一次性密码的攻击者仍然能够进入。
因此,我只是编写了一个小 bash 脚本来返回 HTTP 错误,如下所示:
#/bin/bash
echo -e 'HTTP/1.0 401 Unauthorized'
echo -e 'WWW-Authenticate: Basic realm=\"mod_authn_otp\"’
但是,当我调用此脚本时,它会再次弹出身份验证提示,即使我提供了正确的详细信息,身份验证也会失败。此外,该脚本不会重定向 HTTP 错误页面。请帮忙。
提前致谢!