Oauth
O que é OAuth?
Um protocolo aberto para permitir a autorização segura em um método simples e padrão de aplicativos Web, Mobile e Desktop - a partir de documentos
- A principal razão pela qual o OAuth foi configurado inicialmente foi permitir os dados do usuário de acesso ao aplicativo sem precisar fornecer a senha do usuário. Caso em questão: lembre -se de quando todos esses aplicativos de terceiros pediriam por e -mail + senha para acessar o contato do seu Gmail, etc? Violação óbvia de segurança como aplicativos poderia se manter e poder alterar sua senha. Alguns aplicativos armazenariam a senha dos usuários no texto de queixas (risco óbvio de segurança). Somente a maneira como os usuários poderiam revogar o acesso era alterar senhas
- O principal recurso distintivo do OAuth é que, em vez de permitir que os usuários digitem senhas no aplicativo de terceiros, os usuários são redirecionados para o servidor OAuth (o aplicativo principal, eu acho) para inserir sua senha e depois redirecionada para o aplicativo de terceiros que está buscando acesso.
- Outros casos de uso de OAuth após o seu caso de uso inicial em torno de organizações que estavam construindo aplicativos de primeira parte em suas próprias APIs. Caso em ponto: Ao fazer login em qualquer serviço do Google (YouTube, Gmail, etc.), você não assina diretamente o serviço. Você é redirecionado para o OAuth Server do Google (conta.google.com), onde faz login e depois redirecionado para o Serviço do Google após a autenticação.
- O benefício é centralizar o gerenciamento de senhas por razões de segurança.
- Outro benefício da centralização é que facilita a atualização da autenticação para todos os usuários/serviços
Oauth 2
- Houve alguns casos de uso, como em aplicativos móveis, onde a implementação inicial do OAuth não pôde ser usada com segurança.
- O objetivo do OAuth 2 era desenvolver o OAuth 1 para aplicativos móveis e simplificar aspectos que estavam confusos aos consumidores da API.
- A questão do OAuth 2 foi que havia conflitos entre a Web e os colaboradores corporativos do protocolo. Muitas das áreas de discórdia foram colocadas em documentos diferentes, deixando muitas lacunas no protocolo (agora sendo chamado de estrutura no documento principal como resultado).
- O resultado é que a implementação da Web para OAuth 2 pode ser complexa e confusa, pois você precisará sintetizar informações de diferentes rascunhos
- Problemas de implementação:
- o padrão não requer um tipo de token
- não requer tipos de concessão específicos
- não fornece orientação sobre o tamanho da string de token
Criando um aplicativo OAuth 2
- Crie uma conta de desenvolvedor no site do serviço e insira informações básicas sobre o aplicativo (nome, site, logotipo etc.)
- Você receberá um
client_id e client_secret (às vezes) que seu aplicativo usará para interagir com o serviço. - Crítico para registrar um ou mais URLs de redirecionamento (onde o serviço OAuth 2 retornará o usuário depois de autorizar o aplicativo) para evitar a criação de aplicativos maliciosos que possam roubar dados do usuário.
- O URL de redirecionamento deve ser um terminal HTTPS para fornecer a um invasor de interceptar código de autorização e sequestrar uma sessão
- Em vez de registrar vários URLs de redirecionamento para diferentes estados de aplicação, o OAuth 2 fornece um parâmetro de " estado " que pode ser usado para codificar um estado de aplicativo.
- O parâmetro é uma sequência que será retornada depois que o usuário estiver autorizado a trazê -los para o local certo no aplicativo. A sequência de estado deve ser criptografada com um método como o JWT.
- O estado gerado inicialmente é armazenado em sessão, depois que o usuário autoriza e é redirecionado para o aplicativo cliente, o servidor OAuth compara a sequência de estado com o que foi inicialmente armazenado na sessão antes de trocar o código de autorização por um token de acesso
Outros conceitos que aprendi
Curl
- significa URL do cliente é uma ferramenta de linha de comando que os desenvolvedores usam para transferir dados de e para um servidor. Vamos se comunicar com um servidor especificando URL (localização) e dados que você deseja enviar.
- Suporta diferentes protocolos (http, https) e é executado em quase todas as plataformas, tornando -o ideal para testar a comunicação em quase qualquer dispositivo
- Benefícios:
- altamente portátil e comparável a quase sistema operacional e dispositivo
- Útil para testar terminais
- pode ser detalhado, portanto, útil para depuração
- Bom log de erro
Executando um script python na web sem uma estrutura como frasco ou django
- Você precisaria primeiro configurar o script python como um script CGI
- CGI significa interface de gateway comum. Ele permite que os aplicativos se comuniquem com outros aplicativos na Internet
- Primeiro, crie uma pasta de cigarro e mova seu script python para lá
- Em seguida, use
http.server embutido do Python para executar um servidor HTTP simples - Execute
python -m http.server --cgi do diretório que contém CGI -BIN para iniciar o servidor HTTP no modo CGI. - Navegue para
http://localhost:8000/cgi-bin/your-script.py para executar o script CGI. - Em
your-script.py precisa incluir print("Content-type:text/htmlrnrn") para definir o tipo de conteúdo da resposta como "text/html" para ativar o script no navegador como um arquivo html
Shebang (Hashbang)
- Um código especial na forma de um
#! No início de arquivos executáveis em sistemas operacionais do tipo UNIX. - Especifica o caminho para o executável do intérprete que deve ser usado para executar o script.
- Por exemplo, um shebang como
#!/usr/bin/env python no início de um script python diz ao sistema para usar o intérprete Python localizado em usr/bin/env python para executar o script.
Recursos
- Documentação do OAuth
- O que é Oauth e por que isso importa? - Oktadev no YouTube
- OAuth 2 servidores
- IBM: O que é Curl?