我正在尝试使用基本身份验证保护 URL 路径,并希望使用存储在 Postgres 数据库中的 Django 应用程序中的用户。app
允许用户访问此数据库,Web 应用程序运行正常,但身份验证脚本以错误的用户运行。
WSGIDaemonProcess app user=app group=www-data home=/app
<VirtualHost>
# other stuff here
<Location /admin/protected>
AuthType Basic
AuthName "Login Required"
Require valid-user
AuthBasicProvider wsgi
WSGIAuthUserScript /app/scripts/auth.wsgi
</Location>
WSGIScriptAlias / /app/django.wsgi
WSGIProcessGroup app
</VirtualHost>
这是我在日志中收到的错误:
OperationalError: FATAL: Ident authentication failed for user "www-data"
有没有办法更改auth.wsgi
运行脚本的用户?
答案1
Apache 身份验证系统检查是在 Apache 工作进程中执行的,而不是在 WSGI 守护进程中执行的。Apache 身份验证系统仅说明用户是否被允许访问 Web 应用程序。它不会更改工作进程以哪个用户身份运行,并且它将继续以 Apache 用户身份运行。如果您尝试根据客户端以哪个用户身份运行来使用基于数据库信任的访问权限,则它将不起作用。
您唯一的选择是通过设置全局 Apache User 指令以“app”用户身份运行整个 Apache。这可能不是您真正想要做的。或者配置数据库以允许“www-data”用户访问。