我正在尝试使用基本身份验证保护 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
脚本运行的用户?
Apache 身份验证系统检查在 Apache 工作进程中执行,而不是在 WSGI 守护进程中执行。Apache 身份验证系统仅说明是否允许用户访问 Web 应用程序。它不会更改工作进程运行的用户,它将继续作为 Apache 用户运行。如果您尝试根据客户端运行的用户身份使用基于数据库信任的访问,它将无法正常工作。
您唯一的选择是通过设置全局 Apache User 指令以“app”用户身份运行整个 Apache。这不太可能是您真正想要做的。或者配置数据库以允许“www-data”用户访问。