1.Conceito
OAuth 2.0 é um protocolo de autorização aberto e padrão que permite que aplicativos de terceiros obtenham acesso limitado a recursos de um usuário em outro serviço, sem a necessidade de compartilhar suas credenciais de acesso. Ele fornece uma estrutura para delegação de acesso seguro e simplificado para APIs e serviços web.
2.Arquitetura e Componentes
2.1. Componentes Principais:
- Resource Owner (RO): Usuário detentor dos recursos e responsável por conceder permissões de acesso.
- Client (C): Aplicativo de terceiros que solicita acesso aos recursos do usuário.
- Authorization Server (AS): Servidor responsável por autenticar o usuário e emitir tokens de acesso.
- Resource Server (RS): Servidor onde os recursos estão armazenados e que aceita tokens de acesso para fornecer acesso aos recursos.
2.2. Tokens
- Authorization Code: Código temporário gerado pelo AS, utilizado para trocar pelo token de acesso.
- Access Token: Token utilizado pelo aplicativo para acessar os recursos no RS.
- Refresh Token (opcional): Token utilizado para solicitar novos tokens de acesso sem a necessidade de autenticar o usuário novamente.
3.Funcionamento
3.1. Fluxo Básico
- O aplicativo solicita autorização do usuário (RO) para aces-sar os recursos.
- O usuário (RO) concede ou nega a autorização.
- Se autorizado, o aplicativo solicita um Authorization Code do AS, fornecendo informações sobre si mesmo e a autorização do usuário.
- O AS emite o Authorization Code para o aplicativo.
- O aplicativo troca o Authorization Code por um Access To-ken, fornecendo suas credenciais e o Authorization Code ao AS.
- O AS valida as informações, emite e envia o Access Token (e opcionalmente um Refresh Token) para o aplicativo.
- O aplicativo usa o Access Token para acessar os recursos do usuário no RS.
- O RS valida o Access Token e, se válido, fornece acesso aos re-cursos solicitados.
3.2. Outros Fluxos
– Implicit Grant: Adequado para aplicativos clientes que não têm capacidade de armazenar segredos do cliente (por exemplo, aplicativos JavaScript).
– Client Credentials Grant: Adequado para aplicativos que acessam recursos em seu próprio nome, em vez de em nome do usuário.
– Resource Owner Password Credentials Grant: Adequado para aplicativos confiáveis que têm acesso direto às credenciais do usuário (não recomendado para a maioria dos casos de uso).
4.Segurança
OAuth 2.0 utiliza mecanismos de segurança, como SSL/TLS e crip-tografia, para garantir a confidencialidade, integridade e autenticidade dos dados transmitidos entre os componentes envolvidos no processo de autorização e acesso aos recursos.
5.Considerações e boas práticas
5.1. Limitação de escopo
– Ao solicitar acesso aos recursos do usuário, é importante solicitar apenas os escopos necessários para o funcionamento do aplicativo. Isso minimiza os riscos de segurança e protege a priva-cidade do usuário.
5.2. Tokens de curta duração
– Utilizar Access Tokens com duração limitada para reduzir o risco de comprometimento de tokens. O uso de Refresh Tokens pode ajudar a manter a sessão do usuário ativa sem a necessidade de autenticação frequente.
5.3. Armazenamento seguro de tokens
– Armazenar tokens de forma segura (por exemplo, usando criptografia) para evitar vazamento de informações e acesso não autorizado aos recursos do usuário.
5.4. Verificação de redirecionamento
– Verificar se a URL de redirecionamento é a mesma que foi registrada durante o cadastro do aplicativo no AS. Isso evita ata-ques de interceptação e garante que o Authorization Code seja en-viado apenas para a aplicação correta.
6.Implementações e bibliotecas
Existem várias implementações e bibliotecas disponíveis para diferentes linguagens e plataformas que facilitam a integração com o OAuth 2.0. Algumas delas incluem:
- Spring Security OAuth2 (Java)
- OAuthLib (Python)
- Passport (Node.js)
- OmniAuth (Ruby)
- league/oauth2-client (PHP)
7.Conclusão
OAuth 2.0 é um protocolo de autorização flexível e seguro que permite que aplicativos de terceiros acessem recursos em nome do usuário sem comprometer suas credenciais. Ele oferece vários fluxos para atender a diferentes casos de uso e cenários de aplicativos. Ao seguir as melhores práticas e diretrizes de seguran-ça, é possível criar soluções robustas e seguras para gerenciamen-to de acesso e autorização.
Vamos ver como essa teoria já foi cobrada em questão de concurso?
- Ano: 2022 Banca: FCC Órgão: TRT – 4ª REGIÃO (RS) Prova: FCC – 2022 – TRT – 4ª REGIÃO (RS) – Analista Judiciário – Especialidade: Tecnologia da Informação
O protocolo OAuth 2.0 permite que serviços de terceiros troquem informações sem que seja necessário fornecer uma senha. No OA-uth 2.0
- A) há total compatibilidade com as versões anteriores deste proto-colo.
- B) um único servidor de autorização pode emitir tokens de acesso aceitos por vários servidores de recursos.
- C) o servidor de autorização não pode ser o mesmo que o servidor de recursos.
- D) há cinco funções: proprietário do recurso, servidor de recursos, cliente, servidor de logs e repositório de credenciais.
- E) os refresh tokens são emitidos para o cliente pelo servidor de recursos e são usados para obter um novo access token quando o atual expira.
Letra B.
Comentário:
O protocolo OAuth 2.0 permite que serviços de terceiros troquem informações sem que seja necessário fornecer uma senha.
Em relação às alternativas apresentadas, a letra A está incorreta, pois o OAuth 2.0 não possui compatibilidade total com as versões anteriores.
A letra B está correta, pois um único servidor de autorização pode emitir tokens de acesso aceitos por vários servidores de recursos, o que permite uma maior escalabilidade e flexibilidade.
A letra C está incorreta, pois o servidor de autorização pode ser o mesmo que o servidor de recursos.
A letra D está incorreta, pois o OAuth 2.0 possui quatro funções: proprietário do recurso, servidor de recursos, cliente e servidor de autorização.
Por fim, a letra E está correta, pois os refresh tokens são emitidos para o cliente pelo servidor de autorização e são usados para obter um novo access token quando o atual expira.
- Ano: 2023 Banca: FEPESE Órgão: EPAGRI Prova: FEPESE – 2023 – EPAGRI – Analista de Suporte
O OAuth 2.0 é um protocolo padrão de autorização. Este protocolo possui alguns papéis (roles) definidos.
Em qual “role” são emitidos os “Access Token”?
- A) Client
- B) Client Owner
- C) Resource Server
- D) Resource Owner
- E) Authorization Server
Letra E.
Comentário:
No protocolo OAuth 2.0, o papel do Authorization Server é autenti-car o usuário e emitir o Access Token, que será usado pelo Client para acessar recursos protegidos no Resource Server.
As demais alternativas não correspondem ao papel responsável pela emissão dos Access Tokens.
O Client (alternativa A) é a aplicação que solicita acesso aos recur-sos protegidos.
O Client Owner (alternativa B) é o proprietário da aplicação Client.
O Resource Server (alternativa C) é o servidor que hospeda os re-cursos protegidos e que requer o Access Token para acessá-los.
Já o Resource Owner (alternativa D) é o proprietário dos recursos protegidos que autoriza o acesso a eles.
- OAuth 2.0 é um protocolo de autenticação e autorização de usuários para que possam acessar recursos de serviços web de terceiros.
Errado.
Comentário:
Embora o OAuth 2.0 seja um protocolo de autorização, ele não se destina à autenticação de usuários. Em vez disso, ele se concentra em permitir que um usuário conceda permissões a um aplicativo de terceiros para acessar recursos em seu nome, sem compartilhar suas credenciais de login.
Então é isso!
Bons estudos e até o nosso próximo artigo.
Prof. Jósis Alves
Analista de TI no Supremo Tribunal Federal
Clique nos links abaixo:
Receba gratuitamente no seu celular as principais notícias do mundo dos concursos!
Clique no link abaixo e inscreva-se gratuitamente: