---
title: "Autenticação do banco de dados de usuário do Django vindo do Apache."
version: 3.0
locale: pt-br
source: https://docs.djangoproject.com/pt-br/3.0/howto/deployment/wsgi/apache-auth/
canonical: https://djangodocs.dev/pt-br/3.0/howto/deployment/wsgi/apache-auth/
---
# Autenticação do banco de dados de usuário do Django vindo do Apache.

Uma vez que manter múltiplos banco de dados de autenticação é um problema comum quando se trata do Apache, você pode configurar o Apache para autenticar diretamente no Django [authentication system](/pt-br/3.0/topics/auth/). Isso requer o Apache versão \>= 2.2 e mod\_wsgi \>= 2.0. Por exemplo você poderia:

- Servir arquivos estáticos/media diretamente do Apache somente para usuários autenticados
- Autenticar o acesso a um respositório [Subversion](https://subversion.apache.org/) para usuários Django com uma certa permissão.
- Possibilita certos usuários a conectar a um compartilhamento WebDav criado com [mod\_dav](https://httpd.apache.org/docs/2.2/mod/mod_dav.html).

> **Note**
>
> Se você tiver instalado um: ref:custom user model \<auth-custom-user\> e quiser usar esse manipulador de autenticação padrão, ele deve suportar um atributo `is_active`. Se você quiser usar a autorização baseada em grupo, seu usuário personalizado deve ter uma relação chamada ‘groups’, referindo-se a um objeto relacionado que tenha um campo ‘nome’. Você também pode especificar seu próprio manipulador de autenticação personalizado mod\_wsgi se sua costomização não puder estar em conformidade com esses requisitos.

## Autenticação com `mod_wsgi`

> **Note**
>
> O uso do `WSGIApplicationGroup %{GLOBAL}` nas configurações abaixo presume que a instância de Apache está rodando somente uma aplicação Django. Se estiver rodando mais de uma aplicação Django, por favor refira-se a seção [Defining Application Groups](https://modwsgi.readthedocs.io/en/develop/user-guides/configuration-guidelines.html#defining-application-groups) da documentaçao mod\_wsgi para maiores informações sobre essa configuração.

Certifique-se que o mod\_wsgi está instalado e ativo e que seguiu os passos para configuração  [Apache with mod\_wsgi](/pt-br/3.0/howto/deployment/wsgi/modwsgi/).

Depois, altere a configuração do Apache para adicionar um local que queira que somente usuários autenticados sejam capazes de ver:

```apache
WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py
WSGIPythonPath /path/to/mysite.com

WSGIProcessGroup %{GLOBAL}
WSGIApplicationGroup %{GLOBAL}

<Location "/secret">
    AuthType Basic
    AuthName "Top Secret"
    Require valid-user
    AuthBasicProvider wsgi
    WSGIAuthUserScript /path/to/mysite.com/mysite/wsgi.py
</Location>
```

A diretiva `WSGIAuthUserScript` diz ao mod\_wsgi para executar função `check_password` no script  wsgi especificado, passando o usuário e senha que recebeu do “prompt”. Neste exemplo, o `WSGIAuthUserScript` é o mesmo que o `WSGIScriptAlias` que é quem define sua aplicação [that is created by django-admin startproject](/pt-br/3.0/howto/deployment/wsgi/).

> **Usando Apache 2.2 com autenticação**
>
> Certifique-se que `mod_auth_basic` e o `mod_authz_user` foram carregados.
>
> Esses podem ser compilados estaticamente dentro do Apache, ou é necessário usar o LoadModule para carregá-los dinamicamente no seu `httpd.conf`:
>
> ```apache
> LoadModule auth_basic_module modules/mod_auth_basic.so
> LoadModule authz_user_module modules/mod_authz_user.so
> ```

Finalmente, altere seu script WSGI `mysite.wsgi` para conectar a autenticação do Apache ao mecanismo de autenticação do seu site importando a função `check_password`:

```
import os

os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

from django.contrib.auth.handlers.modwsgi import check_password

from django.core.handlers.wsgi import WSGIHandler
application = WSGIHandler()
```

Requisições começando com `/secret/` não requererão autenticação do usuário.

O mod\_wsgi [access control mechanisms documentation](https://modwsgi.readthedocs.io/en/develop/user-guides/access-control-mechanisms.html) fornece detalhes adicionais e finromações sobre métodos alternativos de autenticação.

### Autorização com `mod_wsgi` e grupos do Django

mod\_wsgi também fornece funcionalidade para restringir membros de um grupo a um local particular.

Neste caso, a configuração do Apache se pareça com essa:

```apache
WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py

WSGIProcessGroup %{GLOBAL}
WSGIApplicationGroup %{GLOBAL}

<Location "/secret">
    AuthType Basic
    AuthName "Top Secret"
    AuthBasicProvider wsgi
    WSGIAuthUserScript /path/to/mysite.com/mysite/wsgi.py
    WSGIAuthGroupScript /path/to/mysite.com/mysite/wsgi.py
    Require group secret-agents
    Require valid-user
</Location>
```

Para suportar a diretiva `WSGIAuthGroupScript`, o mesmo script WSGI `mysite.wsgi` deve importar também a função  `groups_for_user` que retorna uma lista de grupos aos quais o usuário pertence.

```python
from django.contrib.auth.handlers.modwsgi import check_password, groups_for_user
```

Requisições para `/secret/` irão agora requerer que o usuário seja membro do grupo “secret-agents”.
