neg*_*nbe 0 mysql authentication sabredav
我开始在本地环境中使用SabreDav创建自己的测试服务器,并且一切正常。
现在,我想我的配置迁移到我的生产Web服务器和我遇到各种各样的麻烦与PDO认证的描述在这里。
我成功创建了数据库,并且无需身份验证即可浏览主体节点(这意味着数据库连接正常)。
添加服务器pdo身份验证插件时,尽管我使用了默认值,但它会不断询问登录名/密码,就好像登录名/密码错误。
我测试了许多方案,但无法弄清楚为什么它会阻止我继续登录-因为我很确定login / pwd是正确的!
测试场景:请参见myServer / server.php / principals / admin /中的节点(admin是在mysql脚本中创建的默认用户,如此处所示)。
尝试0:成功在我的server.php中禁用身份验证
$authBackend = new Sabre\DAV\Auth\Backend\PDO($pdo);
// -- comment out $authPlugin = new Sabre\DAV\Auth\Plugin($authBackend);
// -- comment out $server->addPlugin($authPlugin);
Run Code Online (Sandbox Code Playgroud)
尝试1:在我的server.php中使用默认配置失败,并不断提示输入密码
$authBackend = new Sabre\DAV\Auth\Backend\PDO($pdo);
$authPlugin = new Sabre\DAV\Auth\Plugin($authBackend);
$server->addPlugin($authPlugin);
Run Code Online (Sandbox Code Playgroud)
尝试2:失败,强制server.php中的默认领域不断提示输入密码
$authBackend = new Sabre\DAV\Auth\Backend\PDO($pdo);
$authBackend->setRealm('SabreDAV');
$authPlugin = new Sabre\DAV\Auth\Plugin($authBackend);
$server->addPlugin($authPlugin);
Run Code Online (Sandbox Code Playgroud)
尝试3:强制在server.php中强制默认领域的FAIL备用方法不断提示输入密码
$authBackend = new Sabre\DAV\Auth\Backend\PDO($pdo);
$authPlugin = new Sabre\DAV\Auth\Plugin($authBackend, 'SabreDAV');
$server->addPlugin($authPlugin);
Run Code Online (Sandbox Code Playgroud)
尝试4:失败,保持相同的域“ SabreDAV”,并生成不同的摘要(实际上,我确保使用与本地服务器上完全相同的登录名/密码,该本地服务器在本地工作,但不在Web生产服务器上...)
$authBackend = new Sabre\DAV\Auth\Backend\PDO($pdo);
$authPlugin = new Sabre\DAV\Auth\Plugin($authBackend, 'SabreDAV');
$server->addPlugin($authPlugin);
Run Code Online (Sandbox Code Playgroud)
重要说明:看来我的生产mysql DB存储了加密数据-如果这是问题的根源,是否有办法解决该问题?
登录窗口显示“ https://mywebsite.com正在请求用户名和密码” 。该网站说:“ SabreDAV”。
然后,当按Escape键时,这是错误页面:
<d:error>
<s:sabredav-version>3.0.3</s:sabredav-version>
<s:exception>Sabre\DAV\Exception\NotAuthenticated</s:exception>
<s:message>No 'Authorization: Digest' header found. Either the client didn't send one, or the server is mis-configured</s:message>
</d:error>
Run Code Online (Sandbox Code Playgroud)
我确实在服务器配置中设置了摘要,因为我使用了教程中介绍的标准方法:
$authPlugin = new Sabre\DAV\Auth\Plugin($authBackend, 'SabreDAV');
Run Code Online (Sandbox Code Playgroud)
感谢Evert使用.htaccess服务器根目录下的文件将我指向正确的方向,该文件包含以下代码:
RewriteEngine on
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
Run Code Online (Sandbox Code Playgroud)