{"title":"Autenticação do banco de dados de usuário do Django vindo do Apache.","version":"2.1","locale":"pt-br","docname":"howto/deployment/wsgi/apache-auth","url":"/pt-br/2.1/howto/deployment/wsgi/apache-auth/","canonical":"https://djangodocs.dev/pt-br/2.1/howto/deployment/wsgi/apache-auth/","summary":"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…","html":"<h1>Autenticação do banco de dados de usuário do Django vindo do Apache.<a class=\"heading-anchor\" href=\"#authenticating-against-django-s-user-database-from-apache\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>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 <a class=\"reference internal\" href=\"/pt-br/2.1/topics/auth/\"><span class=\"doc\">authentication system</span></a>. Isso requer o Apache versão &gt;= 2.2 e mod_wsgi &gt;= 2.0. Por exemplo você poderia:</p>\n<ul class=\"simple\">\n<li><p>Servir arquivos estáticos/media diretamente do Apache somente para usuários autenticados</p></li>\n<li><p>Autenticar o acesso a um respositório <a class=\"reference external\" href=\"https://subversion.apache.org/\">Subversion</a> para usuários Django com uma certa permissão.</p></li>\n<li><p>Possibilita certos usuários a conectar a um compartilhamento WebDav criado com <a class=\"reference external\" href=\"https://httpd.apache.org/docs/2.2/mod/mod_dav.html\">mod_dav</a>.</p></li>\n</ul>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Nota</p>\n<p>Se você tiver instalado um: ref:custom user model &lt;auth-custom-user&gt; e quiser usar esse manipulador de autenticação padrão, ele deve suportar um atributo <code class=\"docutils literal notranslate\">is_active</code>. 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.</p>\n</aside>\n<section id=\"authentication-with-mod-wsgi\">\n<h2>Autenticação com <code class=\"docutils literal notranslate\">mod_wsgi</code><a class=\"heading-anchor\" href=\"#authentication-with-mod-wsgi\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Nota</p>\n<p>O uso do <code class=\"docutils literal notranslate\">WSGIApplicationGroup %{GLOBAL}</code> 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 <a class=\"reference external\" href=\"https://modwsgi.readthedocs.io/en/develop/user-guides/configuration-guidelines.html#defining-application-groups\">Defining Application Groups</a> da documentaçao mod_wsgi para maiores informações sobre essa configuração.</p>\n</aside>\n<p>Certifique-se que o mod_wsgi está instalado e ativo e que seguiu os passos para configuração  <a class=\"reference internal\" href=\"/pt-br/2.1/howto/deployment/wsgi/modwsgi/\"><span class=\"doc\">Apache with mod_wsgi</span></a>.</p>\n<p>Depois, altere a configuração do Apache para adicionar um local que queira que somente usuários autenticados sejam capazes de ver:</p>\n<div class=\"code-block\" data-language=\"apache\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Apache</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Apache code\"><code><span class=\"nb\">WSGIScriptAlias</span> / <span class=\"sx\">/path/to/mysite.com/mysite/wsgi.py</span>\n<span class=\"nb\">WSGIPythonPath</span> <span class=\"sx\">/path/to/mysite.com</span>\n\n<span class=\"nb\">WSGIProcessGroup</span> %{GLOBAL}\n<span class=\"nb\">WSGIApplicationGroup</span> %{GLOBAL}\n\n<span class=\"nt\">&lt;Location</span> <span class=\"s\">&quot;/secret&quot;</span><span class=\"nt\">&gt;</span>\n    <span class=\"nb\">AuthType</span> Basic\n    <span class=\"nb\">AuthName</span> <span class=\"s2\">&quot;Top Secret&quot;</span>\n    <span class=\"nb\">Require</span> valid-user\n    <span class=\"nb\">AuthBasicProvider</span> wsgi\n    <span class=\"nb\">WSGIAuthUserScript</span> <span class=\"sx\">/path/to/mysite.com/mysite/wsgi.py</span>\n<span class=\"nt\">&lt;/Location&gt;</span>\n</code></pre></div>\n<p>A diretiva <code class=\"docutils literal notranslate\">WSGIAuthUserScript</code> diz ao mod_wsgi para executar função <code class=\"docutils literal notranslate\">check_password</code> no script  wsgi especificado, passando o usuário e senha que recebeu do “prompt”. Neste exemplo, o <code class=\"docutils literal notranslate\">WSGIAuthUserScript</code> é o mesmo que o <code class=\"docutils literal notranslate\">WSGIScriptAlias</code> que é quem define sua aplicação <a class=\"reference internal\" href=\"/pt-br/2.1/howto/deployment/wsgi/\"><span class=\"doc\">that is created by django-admin startproject</span></a>.</p>\n<aside class=\"admonition-using-apache-2-2-with-authentication admonition\" role=\"note\">\n<p class=\"admonition-title\">Usando Apache 2.2 com autenticação</p>\n<p>Certifique-se que <code class=\"docutils literal notranslate\">mod_auth_basic</code> e o <code class=\"docutils literal notranslate\">mod_authz_user</code> foram carregados.</p>\n<p>Esses podem ser compilados estaticamente dentro do Apache, ou é necessário usar o LoadModule para carregá-los dinamicamente no seu <code class=\"docutils literal notranslate\">httpd.conf</code>:</p>\n<div class=\"code-block\" data-language=\"apache\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Apache</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Apache code\"><code><span class=\"nb\">LoadModule</span> auth_basic_module modules/mod_auth_basic.so\n<span class=\"nb\">LoadModule</span> authz_user_module modules/mod_authz_user.so\n</code></pre></div>\n</aside>\n<p>Finalmente, altere seu script WSGI <code class=\"docutils literal notranslate\">mysite.wsgi</code> para conectar a autenticação do Apache ao mecanismo de autenticação do seu site importando a função <code class=\"docutils literal notranslate\">check_password</code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">import</span> <span class=\"nn\">os</span>\n\nos<span class=\"o\">.</span>environ<span class=\"p\">[</span><span class=\"s1\">&#39;DJANGO_SETTINGS_MODULE&#39;</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;mysite.settings&#39;</span>\n\n<span class=\"kn\">from</span> <span class=\"nn\">django.contrib.auth.handlers.modwsgi</span> <span class=\"kn\">import</span> check_password\n\n<span class=\"kn\">from</span> <span class=\"nn\">django.core.handlers.wsgi</span> <span class=\"kn\">import</span> WSGIHandler\napplication <span class=\"o\">=</span> WSGIHandler<span class=\"p\">()</span>\n</code></pre></div>\n<p>Requisições começando com <code class=\"docutils literal notranslate\">/secret/</code> não requererão autenticação do usuário.</p>\n<p>O mod_wsgi <a class=\"reference external\" href=\"https://modwsgi.readthedocs.io/en/develop/user-guides/access-control-mechanisms.html\">access control mechanisms documentation</a> fornece detalhes adicionais e finromações sobre métodos alternativos de autenticação.</p>\n<section id=\"authorization-with-mod-wsgi-and-django-groups\">\n<h3>Autorização com <code class=\"docutils literal notranslate\">mod_wsgi</code> e grupos do Django<a class=\"heading-anchor\" href=\"#authorization-with-mod-wsgi-and-django-groups\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>mod_wsgi também fornece funcionalidade para restringir membros de um grupo a um local particular.</p>\n<p>Neste caso, a configuração do Apache se pareça com essa:</p>\n<div class=\"code-block\" data-language=\"apache\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Apache</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Apache code\"><code><span class=\"nb\">WSGIScriptAlias</span> / <span class=\"sx\">/path/to/mysite.com/mysite/wsgi.py</span>\n\n<span class=\"nb\">WSGIProcessGroup</span> %{GLOBAL}\n<span class=\"nb\">WSGIApplicationGroup</span> %{GLOBAL}\n\n<span class=\"nt\">&lt;Location</span> <span class=\"s\">&quot;/secret&quot;</span><span class=\"nt\">&gt;</span>\n    <span class=\"nb\">AuthType</span> Basic\n    <span class=\"nb\">AuthName</span> <span class=\"s2\">&quot;Top Secret&quot;</span>\n    <span class=\"nb\">AuthBasicProvider</span> wsgi\n    <span class=\"nb\">WSGIAuthUserScript</span> <span class=\"sx\">/path/to/mysite.com/mysite/wsgi.py</span>\n    <span class=\"nb\">WSGIAuthGroupScript</span> <span class=\"sx\">/path/to/mysite.com/mysite/wsgi.py</span>\n    <span class=\"nb\">Require</span> <span class=\"k\">group</span> secret-agents\n    <span class=\"nb\">Require</span> valid-user\n<span class=\"nt\">&lt;/Location&gt;</span>\n</code></pre></div>\n<p>Para suportar a diretiva <code class=\"docutils literal notranslate\">WSGIAuthGroupScript</code>, o mesmo script WSGI <code class=\"docutils literal notranslate\">mysite.wsgi</code> deve importar também a função  <code class=\"docutils literal notranslate\">groups_for_user</code> que retorna uma lista de grupos aos quais o usuário pertence.</p>\n<div class=\"code-block\" data-language=\"python\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.contrib.auth.handlers.modwsgi</span> <span class=\"kn\">import</span> check_password<span class=\"p\">,</span> groups_for_user\n</code></pre></div>\n<p>Requisições para <code class=\"docutils literal notranslate\">/secret/</code> irão agora requerer que o usuário seja membro do grupo “secret-agents”.</p>\n</section>\n</section>","rootId":"authenticating-against-django-s-user-database-from-apache","toc":[{"title":"Autenticação com mod_wsgi","anchor":"authentication-with-mod-wsgi","children":[{"title":"Autorização com mod_wsgi e grupos do Django","anchor":"authorization-with-mod-wsgi-and-django-groups","children":[]}]}],"breadcrumbs":[{"docname":"howto/index","title":"Guias de “como fazer”","url":"/pt-br/2.1/howto/"},{"docname":"howto/deployment/index","title":"Fazendo deploy do Django","url":"/pt-br/2.1/howto/deployment/"},{"docname":"howto/deployment/wsgi/index","title":"Como implementar com WSGI","url":"/pt-br/2.1/howto/deployment/wsgi/"}],"prev":{"docname":"howto/deployment/wsgi/modwsgi","title":"Como usar o Django com Apache e mod_wsgi","url":"/pt-br/2.1/howto/deployment/wsgi/modwsgi/"},"next":{"docname":"howto/deployment/wsgi/gunicorn","title":"Como usar o Django com o Gunicorn","url":"/pt-br/2.1/howto/deployment/wsgi/gunicorn/"},"formats":{"html":"/pt-br/2.1/howto/deployment/wsgi/apache-auth/","markdown":"/pt-br/2.1/howto/deployment/wsgi/apache-auth.md","json":"/pt-br/2.1/howto/deployment/wsgi/apache-auth.json"},"source":"https://github.com/django/django/blob/stable/2.1.x/docs/howto/deployment/wsgi/apache-auth.txt","official":"https://docs.djangoproject.com/pt-br/2.1/howto/deployment/wsgi/apache-auth/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","zh-hans","fr","ja","id","pt-br","ko","es","el","pl"]}