From 0876d3df1d2083e127b26c717e976806162553d5 Mon Sep 17 00:00:00 2001 From: oandersonmagalhaes <83456692+oandersonmagalhaes@users.noreply.github.com> Date: Mon, 19 Jul 2021 09:46:39 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=8C=90=20Add=20Portuguese=20translation?= =?UTF-8?q?=20for=20`docs/tutorial/security/index.md`=20(#3507)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Izabela Guerreiro Co-authored-by: Sebastián Ramírez --- docs/pt/docs/tutorial/security/index.md | 101 ++++++++++++++++++++++++ docs/pt/mkdocs.yml | 2 + 2 files changed, 103 insertions(+) create mode 100644 docs/pt/docs/tutorial/security/index.md diff --git a/docs/pt/docs/tutorial/security/index.md b/docs/pt/docs/tutorial/security/index.md new file mode 100644 index 000000000..70f864040 --- /dev/null +++ b/docs/pt/docs/tutorial/security/index.md @@ -0,0 +1,101 @@ +# Introdução à segurança + +Há várias formas de lidar segurança, autenticação e autorização. + +E isso normalmente é um tópico “difícil” e complexo. + +Em muitos frameworks e sistemas, apenas lidar com segurança e autenticação exige muito esforço e código (em muitos casos isso pode ser 50% ou mais de todo o código escrito). + +**FastAPI** tem muitas ferramentas para ajudar você com a parte de **Segurança** facilmente, rapidamente, de uma forma padrão, sem ter que estudar e aprender tudo sobre especificações de segurança. + +Mas primeiro, vamos verificar alguns pequenos conceitos. + +## Está com pressa? + +Se você não se importa com qualquer um desses termos e só precisa adicionar segurança com autenticação baseada em usuário e senha _agora_, pule para os próximos capítulos. + +## OAuth2 + +OAuth2 é uma especificação que define várias formas para lidar com autenticação e autorização. + +Ela é bastante extensiva na especificação e cobre casos de uso muito complexos. + +Ela inclui uma forma para autenticação usando “third party”/aplicações de terceiros. + +Isso é o que todos os sistemas com “Login with Facebook, Google, Twitter, GitHub” usam por baixo. + +### OAuth 1 + +Havia um OAuth 1, que é bem diferente do OAuth2, e mais complexo, isso incluía diretamente as especificações de como criptografar a comunicação. + +Não é muito popular ou usado nos dias atuais. + +OAuth2 não especifica como criptografar a comunicação, ele espera que você tenha sua aplicação em um servidor HTTPS. + +!!! tip "Dica" + Na seção sobre **deployment** você irá ver como configurar HTTPS de modo gratuito, usando Traefik e Let’s Encrypt. + + +## OpenID Connect + +OpenID Connect é outra especificação, baseada em **OAuth2**. + +Ela é apenas uma extensão do OAuth2 especificando algumas coisas que são relativamente ambíguas no OAuth2, para tentar torná-lo mais interoperável. + +Por exemplo, o login do Google usa OpenID Connect (que por baixo dos panos usa OAuth2). + +Mas o login do Facebook não tem suporte para OpenID Connect. Ele tem a própria implementação do OAuth2. + +### OpenID (não "OpenID Connect") + +Houve também uma especificação “OpenID”. Ela tentou resolver a mesma coisa que a **OpenID Connect**, mas não baseada em OAuth2. + +Então, ela foi um sistema adicional completo. + +Ela não é muito popular ou usada nos dias de hoje. + +## OpenAPI + +OpenAPI (anteriormente conhecido como Swagger) é a especificação aberta para a criação de APIs (agora parte da Linux Foundation). + +**FastAPI** é baseado no **OpenAPI**. + +Isso é o que torna possível ter múltiplas automações interativas de interfaces de documentação, geração de código, etc. + +OpenAPI tem uma forma para definir múltiplos “esquemas” de segurança. + +Por usá-los, você pode ter vantagens de todas essas ferramentas baseadas nos padrões, incluindo os sistemas de documentação interativa. + +OpenAPI define os seguintes esquemas de segurança: + +* `apiKey`: uma chave específica de aplicação que pode vir de: + * Um parâmetro query. + * Um header. + * Um cookie. +* `http`: padrão HTTP de sistemas autenticação, incluindo: + * `bearer`: um header de `Authorization` com valor de `Bearer` adicionado de um token. Isso é herança do OAuth2. + * HTTP Basic authentication. + * HTTP Digest, etc. +* `oauth2`: todas as formas do OAuth2 para lidar com segurança (chamados "fluxos"). + * Vários desses fluxos são apropriados para construir um provedor de autenticação OAuth2 (como Google, Facebook, Twitter, GitHub, etc): + * `implicit` + * `clientCredentials` + * `authorizationCode` + * Mas existe um “fluxo” específico que pode ser perfeitamente usado para resolver autenticação diretamente na mesma aplicação: + * `password`: alguns dos próximos capítulos tratarão disso. +* `openIdConnect`: tem uma forma para definir como descobrir automaticamente o dado da autenticação OAuth2. + * Essa descoberta automática é o que é definido na especificação OpenID Connect. + + +!!! tip "Dica" + Integração com outros provedores de autenticação/autorização como Google, Facebook, Twitter, GitHub, etc. é bem possível e relativamente fácil. + + O problema mais complexo é criar um provedor de autenticação/autorização como eles, mas o FastAPI dá a você ferramentas para fazer isso facilmente, enquanto faz o trabalho pesado para você. + +## **FastAPI** utilitários + +**FastAPI** fornece várias ferramentas para cada um desses esquemas de segurança no módulo `fastapi.security` que simplesmente usa esses mecanismos de segurança. + +Nos próximos capítulos você irá ver como adicionar segurança à sua API usando essas ferramentas disponibilizadas pelo **FastAPI**. + +E você irá ver também como isso é automaticamente integrado dentro do sistema de documentação interativo. diff --git a/docs/pt/mkdocs.yml b/docs/pt/mkdocs.yml index d40f1a261..e4f3a62d9 100644 --- a/docs/pt/mkdocs.yml +++ b/docs/pt/mkdocs.yml @@ -57,6 +57,8 @@ nav: - tutorial/index.md - tutorial/first-steps.md - tutorial/body-fields.md + - Segurança: + - tutorial/security/index.md - Implantação: - deployment/index.md - alternatives.md