·

Engenharia de Computação ·

Engenharia de Software

Envie sua pergunta para a IA e receba a resposta na hora

Fazer Pergunta
Equipe Meu Guru

Prefere sua atividade resolvida por um tutor especialista?

  • Receba resolvida até o seu prazo
  • Converse com o tutor pelo chat
  • Garantia de 7 dias contra erros

Texto de pré-visualização

04092023 0956 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp11pli1authuser1 131 Controle de Sessão Autenticação e Autorização Desenvolvimento Web 04092023 0956 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp11pli1authuser1 231 Início de conversa Desenvolvimento Web 04092023 0956 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp11pli1authuser1 331 Olá Cursista Nesta parte vamos explorar o tema controle de sessão autenticação e autorização Assista o vídeo com os principais tópicos sobre o tema e anote suas dúvidas Envie suas dúvidas no Classroom da disciplina Classroom Atividades Dúvidas sobre o conteúdo interaja com o professor e colabore com seus colegas Aproveite para aprofundar os estudos explorando o material organizado na seção SAIBA MAIS Objetivos de aprendizagem Desenvolvimento Web 04092023 0956 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp11pli1authuser1 431 Os objetivos de aprendizagem desta parte são Aprender como receber dados de formulários no servidor Entender o fluxo de autenticação geral de aplicações web Utilizar o mecanismo de autenticação do Flask Entender como o controle de sessão é feito na Internet Cuidados com o armazenamento de senhas no servidor Desenvolvimento Web 04092023 0956 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp11pli1authuser1 531 Conteúdo A seguir vamos ao vídeo Desenvolvimento Web 04092023 0956 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp11pli1authuser1 631 Controle de Sessão Autenticação e Autorização Desenvolvimento Web Controle de Sessão Autenticação e Autorização Desenvolvimento Web NEaD Faculdade Impacta NEaD Faculdade Impacta Clique no ícone ao lado e aproveite para fazer suas anotações durante os estudos utilizando o Google Keep Desenvolvimento Web 04092023 0956 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp11pli1authuser1 731 Desenvolvimento Web 04092023 0956 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp11pli1authuser1 831 Leitura do texto de apoio Desenvolvimento Web 04092023 0956 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp11pli1authuser1 931 Leia o texto para aprofundar os temas discutidos no vídeo Entre em contato com o professor para esclarecer suas dúvidas Classroom Atividades Dúvidas sobre o conteúdo Controle de Sessão Autenticação e Autorização Prof MSc Yuri Maximian Rottner Dirickson Texto revisto atualizado e ampliado por Prof Dr Rafael Will M de Araujo Resumo Nem tudo que existe na Internet deve ser visto por todos A sua caixa de email é apenas sua para ver a área de um professor no site de uma universidade é para apenas ele mexer e assim por diante Existem conteúdos que não são públicos e endereçados a pessoas específicas e para garantir isso existem os sistemas de autenticação garantem que usuário é ele mesmo e autorização garantem que o usuário tem permissão para isso nas aplicações de forma a proteger nosso conteúdo Introdução Com o crescimento do uso da internet para praticamente todos os tipos de negócios e usos cresce também a preocupação com os dados que estão trafegando na rede Além de segurança na parte física roteadores redes cabeamentos etc precisamos nos preocupar com a segurança nas nossas aplicações Os dados dos usuários devem estar protegidos de modo a garantir que apenas eles consigam ver esses dados ou alguém com sua permissão Nesse sentido surgem dois sistemas comuns em aplicações da web o sistema de autenticação e o sistema de autorização Ambos são complementares um do outro sendo necessários para termos certeza de que as funcionalidades e dados estejam sendo acessadas pelas pessoas corretas na nossa aplicação Existem diversos mecanismos para garantir a segurança e modelagem destes sistemas Em nossa disciplina iremos cobrir o mais clássico e utilizado o sistema de autenticação por usuário e senha Fluxo de Autenticação Existem diversos mecanismos de autenticação de usuários sejam pessoas ou outros computadores certificados digitais biometria facial ou dos dedos captchas etc AMOROSO 2009 Mas até os dias atuais o mais comum encontrado nos sites da Internet é o sistema de usuário e senha Desenvolvimento Web 04092023 0956 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp11pli1authuser1 1031 Dependendo do mecanismo de autenticação utilizado o fluxo do sistema de autenticação pode variar um pouco mas a estrutura é muito similar entre eles A Figura 111 mostra a sequência de passos referente ao sistema de usuário e senha Em seguida vamos detalhar um pouco mais cada uma dessas cinco etapas Figura 111 Fluxo de Autenticação de Usuário e Senha Fonte do autor 2021 Desenvolvimento Web 04092023 0956 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp11pli1authuser1 1131 Envio de dados de autenticação Essa fase é a que envolve a interação direta do usuário No nosso exemplo o usuário deverá digitar seu nome de usuário sua senha e submeter o formulário ao servidor Em alguns casos temos a utilização de um captcha um mecanismo de identificação de robôs na navegação dos sites Algumas outras técnicas permitem que o nosso site delegue essa função para outros provedores de identidade Esse é o caso do OAuth2 que permite que a nossa aplicação delegue para um outro serviço ou aplicação como o Google a verificação de autenticidade do usuário Nesse caso pulamos direto para a etapa 4 da Figura 111 pois a 1 2 e 3 seriam feitos por esse serviço OAuth2 ANDREY 2017 Recebendo valores por GET e POST Para construir uma aplicação que permita o usuário autenticarse através de usuário e senha primeiro precisamos saber receber esses dados em uma rota Para entender o mecanismo necessário para o recebimento de valores de formulários em uma rota usaremos o projeto Flask disponível em httpsgithubcomrwillimpactaflasksessao cliente Todos os controles no Flask por padrão respondem apenas às requisições com o método GET Para responder às requisições com o método POST método HTTP que permite enviar os dados do formulário no corpo da requisição é necessário mudar uma configuração na definição de rota como mostrado no decorador da função exemplopost No projeto de exemplo temos dois controles similares que exemplificam como receber valores por GET rota exemploget e POST rota exemplopost Em ambos os casos configuramos templates exemplogethtml e exemploposthtml respectivamente que carregam um formulário simples com os campos de usuário com o name usuario e senha com o name senha Para receber os valores associados a esses campos dentro dos controles usamos um objeto chamado request que deve ser importado a partir do módulo Flask O objeto request disponibiliza dois atributos que funcionam como dicionários requestargs que contém os valores enviados via GET e requestform que contém os valores enviados por POST As chaves desses dicionários são os names enviados pelo formulário enquanto que os valores representam os valores associados a cada um desses names Ambas as rotas exemploget e exemplopost verificam se os valores de usuário e senha recebidos são strings vazias e se não forem mostram esses valores Os controles no Flask permitem configurar também os métodos HTTP que eles aceitarão no formato de uma lista do Python usando o parâmetro methods Exemplo approuteexemplopost methodsGET POST Ou seja podemos ter rotas que aceitam somente requisições por GET ou somente por POST ou ambas No caso de rotas que aceitam múltiplos métodos HTTP podemos identificar se a requisição foi feita Desenvolvimento Web 04092023 0956 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp11pli1authuser1 1231 usando GET ou POST através do atributo requestmethod cujo valor é uma string com o nome do método usado na requisição Exemplo if requestmethod POST testa se a requisição foi feita usando o método POST Definindo a sessão do usuário De posse dos dados de autenticação o servidor precisa verificar a autenticidade deles Primeiro o servidor procura em seu catálogo de usuários que pode ser um banco de dados arquivos ou serviço externo Caso não exista a requisição já retorna com alguma mensagem de erro Um exemplo simplista que demonstra a autenticação de usuário está disponível no projeto o mesmo que usamos na seção 1122 httpsgithubcomrwill impactaflasksessaocliente Em nosso exemplo a rota login carregará um formulário quando acessada diretamente pelo navegador através do método GET Uma vez que este formulário é submetido ao servidor através do método POST utilizaremos essa mesma rota para acessar as credenciais enviadas nome de usuário e senha e comparamos com dois usuários hipotéticos rafael com a senha 1234 e maria com a senha 4321 Mais adiante veremos como isso pode ser feito com um catálogo de usuários em um banco de dados Quando a aplicação tem certeza que o usuário é ele mesmo definimos um objeto que representa a sessão do usuário A sessão é uma vinculação da utilização da aplicação por um usuário em um contexto específico Esse contexto em geral abrange qual computador o usuário está usando para acessar especificamente o endereço de IP qual navegador ele está usando no caso da web e dados de geolocalização entre outros que o servidor tenha acesso e ache pertinente Na estrutura de sessão podemos guardar informações específicas da interação do usuário com a aplicação como um carrinho de compras em uma aplicação de ecommerce por exemplo A sessão pode estar representada por um objeto em uma estrutura de dados na memória do servidor uma linha de tabela de banco de dados ou um arquivo de texto No Flask existe um objeto global que pode ser importado a partir do módulo chamado de session para importálo usamos o comando from flask import session Esse objeto se comporta como um dicionário Python uma estrutura de dados que permite guardar os dados referentes à sessão de usuário Em nosso exemplo vamos guardar o nome do usuário da seguinte forma sessionusuario NOMEDOUSUARIO obviamente substituindo essa string pelo nome do usuário em questão A única restrição é que os dados guardados no objeto session sejam possíveis de serializar e desserializar em strings Note que por ser um dicionário poderíamos guardar outros valores úteis como por exemplo o perfil do usuário Exemplo sessionperfil aluno e assim autorizar ou não o usuário a visualizar certas páginas da aplicação Na rota login após guardar os valores na sessão basta retornar um redirecionamento para a página arealogada usando a função redirect que também deve ser importada do pacote flask A rota arealogada representa uma página privada que só pode ser visualizada por usuários devidamente autenticados pelo sistema Desenvolvimento Web 04092023 0956 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp11pli1authuser1 1331 devidamente autenticados pelo sistema Controle de Sessão Vimos que a sessão de usuário é uma referência do acesso do usuário em um contexto navegador ip computador etc com a nossa aplicação Essa referência é feita para que qualquer outra requisição do usuário à nossa aplicação não precise efetuar a autenticação novamente pois já sabemos que nesse contexto as requisições são feitas pelo nosso usuário autenticado Como as requisições HTTP são stateless sem estado ou seja uma requisição não guarda informações para a outra precisamos de outros mecanismos para guardar a sessão A maneira mais clássica é a utilização dos cookies Resumidamente um cookie é composto por no mínimo um nome identificador para o navegador e um valor nesse caso um identificador de sessão Cookies HTTP sd Esses valores são armazenados pelo navegador e sempre estão disponíveis em futuras requisições para o servidor que definiu aquele cookie até que ele expire isso pode ser definido por tempo de duração ou ao fechar o navegador etc Há técnicas mais atuais para a transmissão da informação da sessão em formato de tokens criptografados que usam a linguagem JavaScript na tradução armazenamento e transmissão A técnica mais utilizada atualmente é a do JWT JSON Web Token JSON Web Tokens sd mas em nossa disciplina usaremos os cookies pois o Flask já vem com a lógica simplificada para usar essa técnica Voltando ao exemplo definido no nosso projeto em Flask se olharmos a resposta após a manipulação do session veremos que um cookie foi criado no navegador com o nome session você pode visualizar esse cookie usando as Ferramentas de Desenvolvedor no Chrome ou Firefox por exemplo O Flask pega os dados presentes no objeto session e serializa traduz para string no cookie usando criptografia e envia essa informação ao cliente A criptografia é um processo de codificar uma certa quantidade de dados de forma que eles fiquem impossíveis de serem interpretados sem que o leitor conheça o segredo para decodificar esses dados KASPERSKY sd É um mecanismo muito importante em todas as comunicações de rede não só no HTTP inclusive o HTTPS usa uma forma de criptografia Após esse processo toda requisição em que esse cookie esteja presente ele será desserializado traduzido de volta para objeto e o objeto session fica povoado no Flask Para que esse mecanismo funcione temos que configurar uma chave secreta na aplicação Flask que será utilizada nesse processo de criptografia No objeto que representa a nossa aplicação variável app devemos definir o atributo secretkey com uma chave string secreta que só o servidor deve saber appsecretkeySENHAMUITO SECRETA na vida real utilize uma string muito grande com vários caracteres especiais letras maiúsculas e minúsculas números etc Em resumo essa chave secreta será usada internamente pelo Flask para criptografar o bj t d ã iá l d d á i á i f ã Desenvolvimento Web 04092023 0956 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp11pli1authuser1 1431 objeto de sessão e enviálo ao navegador do usuário que armazenará essa informação como um cookie Note que apesar do usuário ter acesso à string criptografada pois é fácil visualizar os cookies armazenados não é possível que o usuário mude o valor do cookie para um valor válido que faça sentido para o servidor pois isso implicaria na quebra da criptografia utilizada Ou seja o servidor envia o objeto criptografado ao usuário e pede que ele o armazene assim o objeto ficará disponível em futuras requisições mas só o servidor conseguirá decifrar o que há dentro daquele objeto É assim que as sessões dos usuários são mantidas Exibindo uma página privada ao usuário Em nosso projeto de exemplo a rota arealogada mostra uma página que o usuário só pode ver caso tenha realizado o processo de autenticação corretamente Para verificar se o usuário está logado o servidor deve verificar se o objeto de sessão está povoado com informações que só o servidor poderia ter colocado lá No nosso caso verificamos se a chave usuario do objeto session que funciona como um dicionário do Python está definida e se está quem é o usuário logado Note que um usuário mal intencionado não conseguiria montar esse objeto uma vez que do lado do cliente no navegador essa informação está armazenada criptografada Somente o servidor consegue ter acesso a esses valores pois só ele conhece a chave secreta usada na criptografia Adicionalmente poderíamos ter adicionado mais informações no objeto da sessão Suponha que essa rota só deve ser exibida para usuários do perfil aluno Ao autenticar o usuário seria possível adicionar duas chaves no dicionário sessionusuario NOMEDOUSUARIO e também sessionperfil aluno Assim seria possível conferir essas duas informações a cada nova requisição à rota arealogada e caso o usuário não tenha o perfil adequado para visualizála o controle associado a essa rota retornaria um template de erro informando que o usuário não possui a permissão adequada Expiração do coockie de sessão Por padrão o cookie de sessão do Flask expira quando o navegador é fechado fazendo com que a sessão do usuário expire ou seja o usuário terá que refazer o processo de autenticação Podemos mudar essa configuração para que ele expire depois de algum tempo Exemplo 1 minuto 5 minutos 1 hora e meia etc mesmo que o usuário não tenha fechado o navegador Para isso precisamos criar uma sessão permanente no Flask incluindo o seguinte controle em nossa aplicação A Figura 112 ilustra o código adicional necessário para que todas as sessões definidas pelo servidor expirem em 1 minuto e meio Figura 112 Modificando o tempo de expiração das sessões Arquivo apppy Desenvolvimento Web 04092023 0956 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp11pli1authuser1 1531 Além de importar as classes funções e objetos do Flask você deve importar a seguinte função do módulo datetime from datetime import timedelta appbeforerequest def beforerequest sessionpermanent True apppermanentsessionlifetime timedeltaminutes1 seconds30 Fonte do autor 2022 Encerramento da sessão Como a sessão está intimamente ligada com o cookie um só pode existir em conjunto com o outro Dessa forma o encerramento de sessão deve ser acompanhado com o encerramento do cookie e isso ocorre de duas formas possíveis encerramento por ação do usuário logout e expiração do cookie Caso o usuário queira encerrar sua sessão por conta própria o servidor irá limpar o objeto de sessão e avisar o navegador de que o cookie associado a sessão deve ser removido Isso é feito criandose um controle no Flask onde dentro dele chamamos o método sessionclear A rota sair do nosso projeto de exemplo faz exatamente isso e logo em seguida redireciona o usuário para a rota login Você quer ler Existem diversos sistemas de autenticação e autorização utilizados nas aplicações web mais modernas OAuth SAML OpenID são alguns desses sistemas Associado a eles existe um mecanismo de controle de sessão moderno que permite o controle ser feito a partir do cliente além do servidor Esse mecanismo é o JWT ou JSON Web Token O JWT transmite informações da sessão de maneira criptografada permitindo que ele seja controlado e acessado por todos que sabem como lêlo Veja mais detalhes em httpsimasterscombrbackendentendendoo jwt Desenvolvimento Web 04092023 0956 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp11pli1authuser1 1631 Aprimorando o nosso projeto com banco de dados Agora que você entendeu como funciona o mecanismo de sessão de usuário no Flask vamos aprimorar o nosso exemplo com um banco de dados contendo alguns usuários Para facilitar a criação e manipulação do banco de dados usaremos o SGBD Sistema Gerenciador de Banco de Dados relacional SQLite disponível em httpswwwsqliteorg que já vem embutido na linguagem de programação Python facilitando a instalação e possui uma sintaxe baseada no PostgreSQL O projeto completo está disponível no seguinte link httpsgithubcomrwillimpactaflask autenticacaobd Antes de rodar esse projeto será necessário instalar o pacote SQL Alchemy dispoível em httpswwwsqlalchemyorg um módulo Python que facilita a manipulação e integração do Python com SGBDs Neste novo projeto nós importamos esse pacote portanto não será possível executálo sem fazer essa instalação Para isso utilize o comando mostrado na Figura 113 no CMD do Windows ou terminal do LinuxMAC você deve usar a conta de administrador do computador Figura 113 Instalação do pacote SQL Alchemy Instalação no Windows através do cmd py m pip install U sqlalchemy Instalação no Linux ou Mac através do Terminal python3 m pip install U sqlalchemy Fonte do autor 2022 Uma vez que as configurações necessárias tenham sido efetuadas com sucesso vamos criar as tabelas do banco de dados e adicionar alguns dados No diretório models você encontrará o arquivo bancodedadospy Execute esse arquivo diretamente e escolha a opção 1 Criar tabelas e inserir dados no Banco de Dados Note que um novo arquivo será criado nesse mesmo diretório com o nome dadosdb Esse arquivo armazena todo o nosso banco de dados que criamos com o SGBD SQLite Como o objetivo é ser didático nosso banco de dados é muito simples e só possui uma única tabela chamada Aluno A Figura 114 ilustra todas as 6 colunas dessa tabela e seus dados armazenados Se desejar você pode listar todos os dados armazenados rodando novamente o arquivo bancodedadospy e escolhendo a opção 2 Listar os dados gravados no Banco de Dados Desenvolvimento Web 04092023 0956 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp11pli1authuser1 1731 Figura 114 Dados contidos na tabela Aluno arquivo dadosdb Fonte do autor 2022 Desenvolvimento Web 04092023 0956 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp11pli1authuser1 1831 O diretório models possui outro arquivo chamado alunopy Esse arquivo implementa a classe Aluno que define 6 atributos mapeando cada um dos atributos da tabela de mesmo nome contida no BD em SQLite Já o arquivo bancodedadospy possui a classe BancoDeDados que disponibiliza alguns métodos para manipulação dos dados contidos no banco de dados Cada um dos métodos possui um comentário explicando a sua função mas vamos focar a nossa atenção no método obteralunousuario que recebe um nome de usuário como parâmetro e retorna um objeto da classe Aluno caso exista um aluno com esse nome de usuário ou o valor None caso não exista nenhum aluno com o nome de usuário informado Armazenando senhas É extremamente não recomendável guardar as senhas dos usuários como texto limpo plain text pois isso abre brechas para vazamentos e quebra de privacidade se qualquer outra pessoa obtiver acesso onde as senhas estão guardadas O ideal é criptografar as senhas dos usuários e guardar somente esse resultado Jamais armazene as senhas originais no sistema Ao observar os dados listados na Figura 114 você deve ter notado que a coluna senha do BD parece um pouco estranha Na verdade antes de gravar a senha no BD usamos um algoritmo de criptografia de mão única algoritmo de hashing SOUZA 2020 chamado SHA512 Essa categoria de criptografia garante que uma mesma sequência de dados sempre resulte na mesma sequência criptografada toda vez que for aplicado o mesmo algoritmo no nosso caso o SHA512 Dessa forma quando o usuário define sua senha pela primeira vez usamos o algoritmo para guardar o valor criptografado e toda vez que ele usar sua senha criptografamos essa senha e comparamos com o que está guardado no banco de dados Se ambas as versões codificadas forem iguais sabemos que as senhas também são mesmo sem saber a senha em específico Veja uma explicação mais detalhada em PALMEIRA 2018 Caso não sejam iguais devemos retornar uma mensagem de erro ao usuário A Figura 115 ilustra como calcular o hash SHA512 de uma string variável s em Python Note que a variável hash sempre possui tamanho fixo 128 caracteres independente do texto contido na string s Figura 115 Trecho de código que ilustra como calcular o hash SHA512 de uma string em Python Desenvolvimento Web 04092023 0956 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp11pli1authuser1 1931 import hashlib s 1234 hash hashlibsha512sencodeUTF8hexdigest printhash printTamanho do hash lenhash Desenvolvimento Web 04092023 0956 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp11pli1authuser1 2031 Fonte do autor 2022 Na prática somente calcular o hash da senha e armazenála no BD ainda não configura uma boa prática de segurança Adicionalmente é necessário salgar as senhas técnica conhecida como password salting para evitar que dois usuários que usem a mesma senha produzam hashes idênticos Não implementamos essa técnica em nosso projeto para não adicionar mais níveis de complexidade mas você pode ler a respeito sobre esse problema e a técnica de salting em BRITO 2019 Manipulando a sessão A lógica de autenticação está presente no controle associado à rota login Ele verifica se a requisição utiliza o método POST e em caso afirmativo obtém as strings de usuário e senha que foram enviadas Em seguida calculase o hash SHA512 da senha digitada pelo usuário isto é a senha que foi enviada por POST pois desejamos comparála com o hash armazenado no banco de dados se forem iguais é a prova de que o usuário é de fato quem ele diz ser Com o nome do usuário é fácil verificar se ele existe no BD através do método obteralunousuario da classe BancoDeDados e se existir trazemos todos os dados daquele usuário através de um objeto da classe Aluno A partir deste objeto temos acesso à senha criptografada para comparar o seu valor com o hash que acabamos de calcular Uma vez que o nome do usuário existe comparando se o objeto retornado não é igual a None e as senhas criptografadas são iguais autenticamos o usuário criando a sua sessão com a instrução sessionusuario objalunousuario Ou seja o nome do usuário logado será guardado junto à chave usuario no objeto de sessão do servidor ao mesmo tempo em que o servidor definirá o cookie session com essa informação criptografada com a chave secreta definida no atributo appsecretkey que só o servidor conhece Proteção dos controles Alguns controles não deverão ser acessados por usuários não autenticados Para isso em cada controle que deve haver essa proteção podemos verificar o nome do usuário logado através do objeto global session Caso não exista usuário logado então não devemos deixar o usuário continuar nesse controle redirecionandoo para a tela de autenticação É possível inclusive construir um decorador customizado para esse propósito View Decorators sd Em nossa aplicação de exemplo o controle associado à rota arealogada verifica se o objeto global session possui a chave usuario pois se existir é um sinal de que só o servidor poderia ter adicionado esse valor lá Se existir obtemos o nome do usuário logado e buscamos os seus dados no banco de dados novamente usando o método Desenvolvimento Web 04092023 0956 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp11pli1authuser1 2131 logado e buscamos os seus dados no banco de dados novamente usando o método obteralunousuario da classe BancoDeDados Como este método retorna um objeto da classe Aluno podemos passar esse objeto carregado com os dados de um aluno diretamente para a função rendertemplate e acessar seus atributos públicos propriedades properties e métodos dentro de um template qualquer através de template tags Referências AMOROSO Danilo O que é autenticação TecMundo 17 abr 2009 Disponível em httpswwwtecmundocombrseguranca1971oqueeautenticacaohtm Acesso em 04 set 2022 ANDREY Lucas Como funciona o protocolo OAuth 20 iMasters 03 jul 2017 Disponível em httpsimasterscombrdesenvolvimentocomofuncionaoprotocolooauth20 Acesso em 04 set 2022 BRITO B Salt no hash de senha 2019 Disponível em httpswwwbrunobritonetbrsegurancasalthashsenha Acesso em 07 set 2022 COOKIES HTTP MDN Web Docs sd Disponível em httpsdevelopermozillaorgpt BRdocsWebHTTPCookies Acesso em 04 set 2022 JSON Web Tokens jwtio sd Disponível em httpsjwtio Acesso em 05 set 2022 KASPERSKY O que é criptografia Kaspersky sd Disponível em httpswwwkasperskycombrresourcecenterdefinitionsencryption Acesso em 07 set 2022 PALMEIRA Alessandro Autenticação de forma segura com criptografia Alura 25 jan 2018 Disponível em httpswwwaluracombrartigosautenticacaodeformasegura comcriptografia Acesso em 05 set 2022 SESSIONS Pallet Projects sd Disponível em httpsflaskpalletsprojectscomen11xquickstartsessions Acesso em 06 set 2022 VELASCO Ariane O que é login CanalTech 21 jan 2020 Disponível em httpscanaltechcombrredessociaisoqueelogin Acesso em 06 set 2022 VIEW Decorators Pallet Projects sd Disponível em httpsflaskpalletsprojectscomen11xpatternsviewdecorators Acesso em 06 set 2022 SOUZA Fernando Funções hash ou hashing Medium 21 mar 2020 Disponível em httpsmediumcomprognosysfunC3A7C3B5eshashouhashing Desenvolvimento Web 04092023 0956 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp11pli1authuser1 2231 ttps ed u co p og osys u C3 C3 5es as ou as g b2c90ac5c398 Acesso em 07 set 2022 Saiba mais Desenvolvimento Web 04092023 0956 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp11pli1authuser1 2331 Agora que você sabe receber valores via path parameter e via query string requisições GET surge a dúvida qual deles usar e em quais situações Clique no link a seguir para ler o artigo When Should You Use Path Variable and Query Parameter by Fullsour Medium Também não deixe de ler o artigo Autenticação e Autorização Entenda os termos disponível na página logo a seguir Desenvolvimento Web 04092023 0956 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp11pli1authuser1 2431 Autenticação e Autorização Entenda os termos FARIA Tulio Autenticação e autorização entenda os termos Devpleno 05 jun 2017 Disponível em httpsdevplenocomautenticacaoeautorizacao Acesso em 12 set 2022 Desenvolvimento Web 04092023 0956 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp11pli1authuser1 2531 Finalizando Desenvolvimento Web 04092023 0956 Desenvolvimento Web Nesta parte buscamos os seguintes objetivos de aprendizagem Aprender como receber dados de formularios no servidor Entender o fluxo de autenticaao geral de aplicagdes web Utilizar o mecanismo de autenticaao do Flask Entender como o controle de sesso 6 feito na Internet Cuidados com o armazenamento de senhas no servidor Reflita sobre o conteudo que vocé explorou e faca um debate com seus colegas e professores pelo Classroom ou na prdéxima aula ao vivo live Fique atento ao prazo de encerramento da atividade continua que compdem esses conteudos de aprendizagem Esperamos que vocé tenha aprofundado seus conhecimentos durante os estudos e tenha aproveitado todo o conteudo apresentado httpssitesgooglecomfaculdadeimpactacombrdwp11pli1authuser1 2631 04092023 0956 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp11pli1authuser1 2731 Desenvolvimento Web 04092023 0956 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp11pli1authuser1 2831 Desenvolvimento Web 04092023 0956 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp11pli1authuser1 2931 Desenvolvimento Web 04092023 0956 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp11pli1authuser1 3031 Desenvolvimento Web 04092023 0956 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp11pli1authuser1 3131 Classroom Gmail Drive Portal do Aluno Núcleo de Educação a Distância Faculdade Impacta Telefone 11 55935382 Horário de atendimento 10h às 18h Desenvolvimento Web