Estou tentando proteger um caminho de url com autenticação básica e quero usar os usuários do meu aplicativo Django que estão armazenados em um banco de dados Postgres. O usuário app
tem permissão para acessar este banco de dados, o aplicativo da web funciona bem, mas o script de autenticação é executado com o usuário errado.
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>
Este é o erro que recebo nos meus logs:
OperationalError: FATAL: Ident authentication failed for user "www-data"
Existe uma maneira de alterar o usuário com o qual o auth.wsgi
script é executado?
As verificações do sistema de autenticação Apache são executadas nos processos de trabalho Apache e não no processo daemon WSGI. O sistema de autenticação Apache diz apenas se um usuário tem permissão para acessar o aplicativo da web. Ele não altera o usuário com o qual o processo de trabalho é executado e continuará sendo executado como o usuário do Apache. Se você estiver tentando usar o acesso baseado em confiança do banco de dados com base em qual usuário o cliente executa, isso não funcionará.
Sua única opção seria executar todo o Apache como o usuário do 'aplicativo', definindo a diretiva global do usuário do Apache. Isso provavelmente não é o que você realmente deseja fazer. Ou configure o banco de dados para permitir o acesso do usuário 'www-data'.