Назад | Перейти на главную страницу

авторизация mod_wsgi с пользователями Django из базы данных postgres

Я пытаюсь защитить URL-адрес с помощью базовой аутентификации и хочу использовать пользователей из моего приложения Django, которые хранятся в базе данных Postgres. Пользователь app разрешен доступ к этой базе данных, веб-приложение работает нормально, но сценарий аутентификации запускается не с тем пользователем.

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 только сообщает, разрешен ли пользователю доступ к веб-приложению. Это не меняет пользователя, от имени которого работает рабочий процесс, и он будет продолжать работать как пользователь Apache. Если вы пытаетесь использовать доступ на основе доверия к базе данных в зависимости от того, от имени какого пользователя работает клиент, это не сработает.

Единственный вариант - запустить весь Apache в качестве пользователя приложения, установив глобальную директиву Apache User. Это вряд ли то, что вы действительно хотите делать. Или настройте базу данных, чтобы разрешить доступ пользователю www-data.