摘要身份验证拒绝接受有效凭据

Posted

技术标签:

【中文标题】摘要身份验证拒绝接受有效凭据【英文标题】:Digest authentication refuses to accept valid credentials 【发布时间】:2009-10-12 10:35:45 【问题描述】:

我正在尝试通过 .htaccess 文件使用摘要式身份验证来保护文件夹:

AuthType Digest
AuthName "Restricted Area"
AuthUserFile /web/htdocs/www.domain.com/.../.htdigest

Require valid-user

我已经使用命令“htdigest”创建了密码文件。 在我的本地服务器上一切正常......但在我的远程服务器(托管网站)上却不行! 即使我输入了正确的密码,浏览器也会显示登录面板!

在远程服务器上,php 作为 CGI 而不是作为 Apache 的模块运行...应该是这个原因吗?有什么解决方法吗?

使用 .htaccess 的基本身份验证可以在同一远程服务器上正常工作!

【问题讨论】:

【参考方案1】:

如果脚本作为 CGI 运行,这意味着它作为本地用户运行,而不是作为 www,这可能是问题所在,是的。 CGI 是唯一的选择吗?

【讨论】:

感谢您的回复!是的,CGI 这是唯一的选择,我无法修改服务器配置以将 php 作为 Apache 模块加载! 等等,你是说所有的 php 吗?你到底是怎么运行脚本的? 我认为我混淆了你的想法!我要做的是使用摘要身份验证保护目录中的简单 html 页面。我在 HTML 页面的同一个文件夹中放置了一个 .htaccess(使用上面的代码)和一个 .htdigest 文件!但是当我尝试使用正确的凭据登录时,浏览器会要求我再次输入我的凭据!在我的本地服务器(PHP 作为 Apache 的模块安装)上一切正常,但在我的远程服务器(PHP 作为 CGI 运行)上没有。所以我认为原因应该是服务器配置......但是托管服务不要让我修改设置!【参考方案2】:

上面的代码缺少 AuthDigestDomain 指令,the documentation 说:

这个指令应该总是 指定并至少包含 此空间的(一组)根 URI。 不这样做会导致 客户端发送授权 发送到此的每个请求的标头 服务器。除了增大尺寸 的请求,它也可能有一个 对性能的不利影响,如果 AuthDigestNcCheck 已开启。

但是,我确实通过启用 Apache 模块 mod_auth_digest 而不是模块 mod_digest 解决了这个问题。

【讨论】:

以上是关于摘要身份验证拒绝接受有效凭据的主要内容,如果未能解决你的问题,请参考以下文章

FCM 推送 - 请求具有无效的身份验证凭据。预期的 OAuth 2 访问令牌、登录 cookie 或其他有效的身份验证凭据

Windows 身份验证 - 如何使用代码拒绝用户

摘要和基本身份验证有啥区别?

RestSharp OAuth2 承载身份验证失败,访问被拒绝

HTTPS 和摘要式身份验证

角度摘要身份验证