# Restringir o acesso ao seu site Discourse com autenticação HTTP Basic

**URL:** https://meta.discourse.org/t/restrict-access-to-your-discourse-site-with-http-basic-authentication/168192
**Category:** Sysadmins
**Tags:** how-to
**Created:** [23 Outubro , 2020 16:28 UTC](https://meta.discourse.org/t/restrict-access-to-your-discourse-site-with-http-basic-authentication/168192 "2020-10-23T16:28:18Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [23 Outubro , 2020 16:28 UTC](https://meta.discourse.org/t/restrict-access-to-your-discourse-site-with-http-basic-authentication/168192/1 "2020-10-23T16:28:18Z")

</div>

Às vezes, você não deseja que o público em geral tenha acesso à sua instância do Discourse imediatamente, como quando está preparando um site para uma migração.

NOTA: Recentemente, tive alguns problemas com autenticação básica, em que alguns ativos estáticos não estavam sendo carregados. Pode ser mais fácil simplesmente configurar seu site para `login_required` adicionando `DISCOURSE_LOGIN_REQUIRED: true` na seção `env` do seu `app.yml`.

A configuração a seguir exibirá um simples diálogo de confirmação no navegador solicitando nome de usuário e senha, comum a **todos** os visitantes, que será necessário antes que eles possam acessar o site.

> ℹ Nota: Os usuários ainda precisarão realizar o registro e o login normais do Discourse.

### Credenciais de autenticação básica

### Gerar senha criptografada

```
htpasswd -bn =username= =password=

```

Nota: Você precisará do `htpasswd` para isso. No Ubuntu/Debian, ele está no pacote `apache2-utils`. Se tiver acesso a outra máquina com `htpasswd` instalado, pode executá-lo lá. Se seu objetivo for apenas impedir que mecanismos de busca acessem, não há motivo para não usar a senha de exemplo aqui.

### Usuário/senha criptografados vão aqui

### Adicionar ao `app.yml`

```plaintext
# autenticação básica
  after_bundle_exec:
    - replace:
       filename: "/etc/nginx/conf.d/discourse.conf"
       from: "# auth_basic on"
       to: "auth_basic on"
    - replace:
       filename: "/etc/nginx/conf.d/discourse.conf"
       from: "# auth_basic_user_file /etc/nginx/htpasswd"
       to: "auth_basic_user_file /etc/nginx/htpasswd"
    - replace:
       filename: "/etc/nginx/conf.d/discourse.conf"
       from: "location = /srv/status {"
       to: "location = /srv/status {
           auth_basic off;"
    - file:
       path: "/etc/nginx/htpasswd"
       contents: |
         =auth_string=    

```

A seção `after_bundle_exec` altera a configuração do nginx dentro do contêiner do Discourse. Quando estiver pronto para colocar em produção, basta excluir esta seção e reconstruir.
