Aulão: Spring Security 6 + JWT!

Поділитися
Вставка
  • Опубліковано 16 гру 2024

КОМЕНТАРІ • 143

  • @adrianosantos1970
    @adrianosantos1970 9 місяців тому +3

    Não conhecia seu canal, cheguei aqui pelo spring security e agradeço por compartilhar seu conhecimento! Ganhou mais um inscrito com certeza!

  • @samueledson
    @samueledson 8 місяців тому +1

    😇Valeu! Estava travado tentando implementar uma autenticação JWT com Spring e esse vídeo me ajudou muito a destravar e continuar estudando.

    • @giulianabezerra
      @giulianabezerra  8 місяців тому +1

      Que bom que ajudou! Obrigada e sucesso 🙏🤗

  • @CoderA-Tech-pe2uq
    @CoderA-Tech-pe2uq Місяць тому +2

    Sensacional!
    Tem muitos conteúdos bons no youtube, mas o problema é que muitos deles estão ensinando com bibliotecas antigas que já tiveram diversas features do spring security deprecadas e isso é um grande problema pra quem está aprendendo com versões atualizadas. Como você usou o Spring 6, fica muito mais fácil agora!
    Obrigado pela ótima aula, continue assim!

    • @giulianabezerra
      @giulianabezerra  Місяць тому

      É que nem na vida real, tem que se adaptar com as novas versões 😉

  • @regisamaral5756
    @regisamaral5756 3 місяці тому +1

    obrigado por facilitar meu trabalho! posso tirar o dia de folga agora...

  • @JulioCesarAlves0013
    @JulioCesarAlves0013 4 місяці тому +1

    Sensacional, muito obrigado pelo conhecimento compartilhado.

  • @humbertovieira8717
    @humbertovieira8717 6 місяців тому +1

    conteúdo de altíssima qualidade e muuuiito bem explicado!

  • @bojeff276
    @bojeff276 28 днів тому

    Obrigadão Giu aula maravilhosa, mesmo em um conteúdo tão denso como o spring Security.

  • @elicarlosferreira
    @elicarlosferreira 2 місяці тому +3

    Se com o Spring é desse jeito! Imagina se não tivesse kkk. Ótima a sua aula!

  • @luizeduardobartolassi6493
    @luizeduardobartolassi6493 11 днів тому +1

    Muito bom o vídeo, me ajudou a entender melhor, não estava compreendendo a documentação. Sabe se esse mecanismo/biblioteca de OAuth2 do Spring já implementa refresh tokens? Para gerar novos access tokens ?

    • @giulianabezerra
      @giulianabezerra  10 днів тому +1

      Tem suporte sim, inclusive falei sobre isso nesse vídeo: Guia COMPLETO de Segurança para SPA com React, Java e Spring
      ua-cam.com/video/OTl2hyeEVv0/v-deo.html

  • @giovanitamanini7816
    @giovanitamanini7816 5 місяців тому

    Explicação e didática excelente. Muito obrigado!!!

  • @knd5540
    @knd5540 9 місяців тому +1

    Parabens, conteúdo excelente!

  • @ezequielotoni3228
    @ezequielotoni3228 8 місяців тому +1

    Tô na torcida por um vídeo com token opaco também. Amei o vídeo. Muito obrigado ♥

  • @ittech311
    @ittech311 11 місяців тому +1

    Salva demais esses vídeos atualizados

  • @wesleymrosa
    @wesleymrosa 11 місяців тому +1

    Muito bom Professora !

  • @diogodmoreira
    @diogodmoreira 7 місяців тому +1

    Excelente, Giuliana! Muito obrigado por compartilhar :)

  • @CoderA-Tech-pe2uq
    @CoderA-Tech-pe2uq Місяць тому +2

    Giuliana, finalmente concluí aqui a camada de segurança no meu projeto. Funcionou tudo! 🤙🤙
    A única coisa que ficou meio rushado no final foi essa questão do password com BCrypt. Eu vi que você já inseriu direto no banco o password encryptado, mas seria legal ensinar como usar o BCrypt pelo código pra criptografar após colocar a senha na criação do usuário. Você tem uma aula explicando sobre isso? Se não, podia fazer uma continuação dessa aula explicando melhor isso.

    • @LucasSouza-hg2tu
      @LucasSouza-hg2tu Місяць тому

      Cara, eu estou com o mesmo problema KKKKKK ela colou um texto criptografado do que seria o primeiro usuário do sistema já que não se tem acesso a demais rotas para criar usuários, mas não nos disse onde conseguimos criptografar esta primeira senha que será descriptografado pelo spring.

    • @CoderA-Tech-pe2uq
      @CoderA-Tech-pe2uq Місяць тому

      ​@@LucasSouza-hg2tu eu achei um tutorial na net, mas nao é vídeo e tá em inglês.
      Pesquisa "how to generate bcrypt password in java" no google e pega o resultado do link 'dzone'.
      Lá tem um código que mostra bem simples como usar a lib

    • @fabioec2010
      @fabioec2010 Місяць тому

      @@LucasSouza-hg2tu Você pode colocar no main mesmo, cria um metodo simples para isso.

  • @LuizGuilherme-ru6nt
    @LuizGuilherme-ru6nt 5 місяців тому

    Muito obrigado pelo conteúdo enriquecedor Giuliana estou a alguns dias tentando entender como faz isso no spring security, após vê esse vídeo me deu bastante clareza e acredito que vou conseguir implementar

  • @bielvianadearaujo
    @bielvianadearaujo 11 місяців тому +1

    Excelente conteúdo. Parabéns!

  • @ygorboucher8420
    @ygorboucher8420 7 місяців тому

    simplesmente giuliana bezerra! era exatamente o q eu precisava. parabéns pelo conteúdo

  • @joaoalen
    @joaoalen 10 місяців тому

    Trabalho a um tempo com C# .NET, e me interessei a pouco tempo em estudar um pouco de Java.
    Essa parte de autenticação com JWT achei até meio complexa, em relação a implementação que o .NET tem, mas achei bastante interessante. Da a impressão de ter muito mais controle sobre a validação e a geração do Token, embora seja mais verbosa.
    Parabéns pela aula excelente!!

  • @Joaopedro-qj6kz
    @Joaopedro-qj6kz 11 місяців тому +1

    Muito bom Giuliana! simplesmente perfeita a sua abordagem começando primeiro com a motivação, pra quem fica meio em dúvida do que estudar. Já vou seguir a playlist e procurar saber mais sobre! Gostaria de deixar como sugestão se aprofundar um pouco mais nessa questão de testes automatizados, unitários e integração. Já vi os vídeos do canal, mas seria muito massa um vídeo com exemplos práticos do que cada teste deve realizar (sempre fico perdido) :)

    • @giulianabezerra
      @giulianabezerra  11 місяців тому

      Anotado aqui, obrigada pela sugestão! 🙏

  • @HenriqueSantos88
    @HenriqueSantos88 5 місяців тому

    esse space 2 ai me incomdou demais ... mas valeu pelo conteudo ... top demais.

  • @W__Dev
    @W__Dev 2 місяці тому

    Ótimo vídeo!! Faz uma implementação de refresh token e logout também. Tenho visto várias implementações, mas de versões mais antigas. Estou criando uma mega gambiarra no meu código pra tentar criar essas funções haha

  • @esqueloto01
    @esqueloto01 5 місяців тому +1

    Excelente!

  • @petroniobonavides3530
    @petroniobonavides3530 Місяць тому

    Depois da Requisição de Autenticacao, quando pego o token, onde guardo esse token para enviar nas outras requisições? Uso o cabecalho da requisição para enviar o token? Obrigado

    • @giulianabezerra
      @giulianabezerra  Місяць тому +1

      O token JWT é enviado no header da requisição, você pode usar um interceptor para adicionar o token em cada request. Tenho um vídeo que mostra esse fluxo complexo com um SPA, BFF e Backend, dá uma olhada que vai ficar mais claro: ua-cam.com/video/OTl2hyeEVv0/v-deo.html

  • @renerpires
    @renerpires 11 місяців тому

    Apenas elogios. Aula excelente como de praxe. Parabéns Giuliana!

  • @eliabekun
    @eliabekun Місяць тому

    Fantástico! Tem algum vídeo mostando as extensões que vc utiliza nesse projeto?

  • @wagnerdba
    @wagnerdba 29 днів тому

    Juliana faz um completo usando todos os padrões e camadas corretamente e buscando as credenciais no banco postgres

  • @emiliocalvet672
    @emiliocalvet672 10 місяців тому +1

    Excelente vídeo, parabens! Fiquei apenas com uma dúvida. A rotas protegidas podem ser acessadas por basic auth (sem o jwt, apenas com credenciais ou com o jwt). Como faço para restringir o basic auth somente a rota de login?

    • @giulianabezerra
      @giulianabezerra  10 місяців тому +1

      Você pode criar duas filtre chains separadas no SecurityConfig, e aí teria a possibilidade de em uma usar o jwt e na outra o basic auth

  • @MegaGustavosc
    @MegaGustavosc 11 місяців тому +3

    Parabéns Giuliana por mais esse excelente conteúdo! Tenho uma dúvida: Em uma arquitetura de microsserviços a parte de autenticação tem que estar no Gateway ou em um "user service"?

    • @ApsProg1
      @ApsProg1 11 місяців тому

      Tenho a mesma dúvida já procurei vídeos sobre o assunto e não encontro nada

    • @giulianabezerra
      @giulianabezerra  10 місяців тому

      Existe um pattern chamado access token e no desenho dele o gateway fica responsável pela autenticação , dessa forma o userservice seria apenas responsável pelas operações de usuário (crud)

  • @AnamarinaSaraivadeLemos
    @AnamarinaSaraivadeLemos 4 місяці тому

    Você é ninja!!!!!!!! 👋👋👋👋👋

  • @davidsouza2830
    @davidsouza2830 4 місяці тому

    Muito bom o vídeo, achei a implementação muito simples... Porém passei horas tentando encontrar/aprender a forma correta de gerar o par de chaves necessários.
    Em alguns lugares eu encontrava tutorias para gerar as chaves porém quando eu tentava utilizar elas, o código dava algum erro no enconding na hora de ler a private key.
    No final eu encontrei esses comandos aqui para gerar as chaves via CMD usando OPENSSL:
    openssl genrsa -out keypair.pem 2048
    openssl rsa -in keypair.pem -pubout -out public.pem
    openssl pkcs8 -in keypair.pem -topk8 -nocrypt -inform PEM -outform PEM -out private.pem
    Obs: O OPENSSL deve ser instalado separadamente, basta buscar pelo instalador internet. No site da fabricante você vai achar uma versão para fazer o build na sua máquina, mas também dá para achar versões para Windows que é só executar o instalador.

  • @vm3f
    @vm3f 9 місяців тому

    Excelente conteúdo. Acho interessante quando vai criar um sistema com springboot a partir de um sistema legado que já tem o banco consolidado.

    • @giulianabezerra
      @giulianabezerra  9 місяців тому +1

      Exatamente! Pq pra projetos mais novos normalmente a gente usa um IDP corporativo pra prover a identidade, e nesse cenário acaba sendo usada a config com Oauth mesmo, como mostro no aulão de Spring Security aqui do canal.

  • @LeeO0704
    @LeeO0704 2 місяці тому

    tentei fazer conectando com o banco do postgrelsql e nao consigo passar do 401, nao tenho mais ideia dq fazer

  • @pagotto11
    @pagotto11 5 місяців тому

    GIu, seu conteúdo é extreamamente bom! Obrigado pelas aulas. Ja assisti a aula de oauth também e é nota 10! Gostaria de saber como disponibilizar tanto a atutenticação do google quanto essa via aplicação proprietária, seria um baita conteúdo!

    • @giulianabezerra
      @giulianabezerra  5 місяців тому

      Nesse caso seria através de múltiplos registros de client oauth, vou trazer um vídeo a respeito em breve

  • @lagoawb
    @lagoawb 9 місяців тому +1

    muito bom, excelente didatica. como eu faco pra ter uma autenticacao que pode ser feita via banco ou via ferramenta de terceiros como o google ou facebook?

    • @giulianabezerra
      @giulianabezerra  7 місяців тому

      Sobre a autenticação de terceiros tem vídeo na playlist de spring security, aulão spring security. Sobre usar banco, ainda não fiz vídeo mas vou adicionar a sugestão aqui na lista.

  • @fillipeamg5877
    @fillipeamg5877 6 місяців тому

    Obrigado pelo video

  • @app2028
    @app2028 11 місяців тому

    Muito top tô tentando ver pela 3 vez para tentar entender

  • @franklyndamaceno7294
    @franklyndamaceno7294 19 днів тому

    ja esta adptado para o spring 3.4.0? , mudei do 3.1.0 para 3.4.0 e deu problema justamente a parte de AuthorizationServer mas não fiz esse do video ainda , estou perguntando antecipadamente.

  • @rodrigodaniel1467
    @rodrigodaniel1467 5 місяців тому

    Na injeção de dependências do Repository, faz alguma diferença fazer com a annotation @Autowired?

    • @giulianabezerra
      @giulianabezerra  4 місяці тому +1

      Pode usar ambas as formas, maaaas, o pessoal do spring recomenda fazer injeção via construtor

  • @renatogomesdf
    @renatogomesdf 7 місяців тому +2

    Parabens pelo trabalho e pela excelente didática. Giuliana, você teria algum exemplo de projeto que implemente a renovação do token jwt seguindo essa mesma linha de implementação? Muito grato!

  • @alissonvieira4006
    @alissonvieira4006 10 місяців тому

    Poderia ter a parte 2 desse video, aonde poderia passar o grant type, client_id e client_secret para autenticação, juntamente com login e senha. Muitos bacanas seus vídeos, com otima didáctica

    • @giulianabezerra
      @giulianabezerra  10 місяців тому

      Tem um aulão spring security onde falo exatamente desse cenário, depois dá uma olhada 😉

  • @marcelovenancio26
    @marcelovenancio26 4 місяці тому

    Excelente video. Seria possível retornar a exceção em caso de erro de usuário ou senha inválidos? Ou por exemplo token expirado? Acho que faltou esse detalhe importante, visto que só é retornado 401 nesses casos.

    • @giulianabezerra
      @giulianabezerra  4 місяці тому +1

      Como as credenciais pertencem ao idp, depende dele retornar uma mensagem no corpo da resposta. Os códigos são genéricos e de fato não dizem muita coisa, precisaria observar o corpo da resposta para entender o que aconteceu.

  • @neophd
    @neophd 10 місяців тому

    Show de bola, top demais! Só ficou uma dúvida, teria algum material de como fica usando client_secret_jwt invés de private_key_jwt?

  • @danielhertal7277
    @danielhertal7277 11 місяців тому +1

    Ótima aula, só tenho algumas duvidas por exemplo voce adicionou o httpBasic como custom default isso faz com que qualquer endpoint possa se autenticar usando o usuario e senha não apenas o login, por causa disso se você remover esse parte requestMatchers("/authenticate").permitAll() o endpoint ira funcionar normalmente pois o httpBasic ira executar antes como estará passando o user:pass pelo header estara autenticando e gerando o token
    Estou procurando uma solução somente para basic no endpoint de login e jwt nas demais, como poderia bloquear o basic nos outro endpoints?

    • @emiliocalvet672
      @emiliocalvet672 10 місяців тому

      Tbm tenho essa mesma dúvida 😅
      Queria isolar o basic para o login

    • @giulianabezerra
      @giulianabezerra  10 місяців тому

      Basta criar duas filter chain e separar a lógica do jwt e http basic

  • @PauloGabrielGomesMatias
    @PauloGabrielGomesMatias 6 місяців тому

    Uma duvida na criação do SecurityFilterChain tendo em vista que eu tenho um token de duração longa exemplo 2 dias preciso atribuir o httpBasic no builder ? tendo em vista que posso ter um token longo ?
    outra duvida na hora do par de chaves nos não vamos subir isso pro git provavelmente. ou colocamos direto no maquina de prod os arquivos ? podemos usar os valores dessas chaves como uma variavel de ambiente

    • @giulianabezerra
      @giulianabezerra  5 місяців тому

      Dois dias de token? Não recomendo, mas vc consegue configurar a duração no idp ou no gateway, se estiver usando um (tem vídeo sobre o access token pattern aqui no canal). Sobre as chaves, pode utilizar como variável de ambiente ou utilizar algum tipo de encriptação para não colocar os arquivos em texto puro no git.

  • @instrutorvilsonmoro7730
    @instrutorvilsonmoro7730 11 місяців тому +5

    Como vc fez para gerar as chaves privada e publica usadas para gerar e ler o token?

    • @JoaoLucas-mg9mv
      @JoaoLucas-mg9mv 6 місяців тому +1

      Você pode gerar usando OpenSSL (pesquise: generate public and private key openssl)
      Se estiver usando Windows rode os comandos dentro do Git Bash

    • @BrunoHenrique-vd1ry
      @BrunoHenrique-vd1ry 5 місяців тому

      @@JoaoLucas-mg9mv Valeu Joao, eu estava travado nisso e agora consegui!

  • @RaphaelSousa-or1dl
    @RaphaelSousa-or1dl 3 місяці тому

    Qual a diferença do OAuth implicit flow para essa implementação passando usuario e senha? Não é basicamente a mesma coisa?
    No seu video sobre OAuth você comentou que não é seguro que front end tenha acesso as secrets ou tokens, nessa implementação não estamos indo contra isso?

  • @AntonioCabralNumberOne
    @AntonioCabralNumberOne 8 місяців тому

    Muito obrigado, este vídeo foi extremamente útil.
    Só não é perfeito por, na minha humilde opinião, por ter uma classe a mais, pois não parece fazer muito sentido: UserAuthenticated.
    Parece-me fazer mais sentido a própria classe User implementar o interface UserDetails.
    De todas as formas, agradeço-te imenso pois entendi muito melhor como implementar com uma versão mais recente do Spring Boot, no meu caso 3.2.4, com Spring Security e JWT.
    A maioria dos tutoriais que anda por aí de facto está muito desactualizada e este foi sem dúvida o melhor.
    Subscrito!

  • @jean-pi5xv
    @jean-pi5xv 9 місяців тому

    Excelente aula! Eu tenho uma duvida em como eu poderia implementar Roles nos usuários. Eu criei um arquivo com os enums de roles, porém quando eu adiciono como um atributo na entity User eu não consigo fazer autenticação porque a rota /authenticate e todas as outras me retornam Unauthorized mesmo deixando como permitAll. Como eu poderia implementar?

  • @carlosoliveira8439
    @carlosoliveira8439 6 місяців тому

    Como fica a questão das chaves quando for fazer um deploy? Elas são passadas por variáveis de ambiente ? Qual a melhor forma?

  • @joaowilian01
    @joaowilian01 2 місяці тому

    Excelente aula, Giuliana!! 👏👏👏
    Eu fiquei com uma dúvida, nesse cenário podemos ter vários usuários cadastrados na aplicação, certo? Uma vez que o usuário se autenticou ele recebe seu token para acessar os recursos privados, nesse token contém o e-mail do usuário. Quando um recurso privado é acessado como podemos saber qual usuário fez o acesso? (Como pegar o e-mail a partir do token?)

  • @bojeff276
    @bojeff276 28 днів тому

    Uma dúvida, alguém sabe pq ela fez injeção das dependências
    via construtor ao invés de usar @AutoWired?

  • @juniorsantos-lk2ue
    @juniorsantos-lk2ue Місяць тому

    Boa noite Giuliana, tudo bem? Primeiro quero te dar os parabéns, pois seus conteúdos são extraordinários. Só que nesse video fiquei com uma dúvida, pois não consegui fazer login enviando Json no corpo da requisição, com o email e senha, dessa forma que foi desenvolvido, não funciona passando os dados no RequestBody?

  • @eduardoorlandimelle9229
    @eduardoorlandimelle9229 11 місяців тому

    Bom dia Giuliana, tudo bem?
    Muito obrigado por mais um conteúdo excelente!
    Não sei se aqui é o lugar certo para eu te fazer essas perguntas. Se não for já peço desculpas antecipadas 🤦‍♂
    Vou começar a fazer seu curso de testes com Spring Boot na Udemy. Será que vira um cupom de desconto? 😅
    Outra pergunta, você tem no seu radar vídeos sobre Docker e Kubernetes?
    Sabe um tipo de conteúdo que sinto falta na Internet? Principalmente em português?
    Uma arquitetura de micro serviços utilizando os projetos Spring Cloud deployados no Kubernetes.
    Sabe, como fazer, boas práticas, etc.
    Tenho certeza que seria um diferencial muito bacana do seu canal.
    Muito obrigado e mais uma vez agradeço por compartilhar conosco conteúdos de muita qualidade!😉

    • @giulianabezerra
      @giulianabezerra  11 місяців тому

      Tenho muitos planos, só tá difícil por em prática pq preciso conciliar meu trabalho com UA-cam e outras atividades. Quem sabe um dia quando der pra viver com minhas atividades de ensino eu consiga colocar em prática todos os planos, por enquanto tá devagarzinho mesmo , mas vai sair 😅

  • @rodrigofelixdev
    @rodrigofelixdev Місяць тому

    Oi Giuliana, primeiramente, muito obrigado pela Aula! Eu fiquei meio perdido, nao sei se a playlist esta em ordem correta. Mas como vc testou via linha de comando? que User:Password eh esse que vc implementou?
    Na hora do cadastro na criacao do usuario, como faz a codificacao da senha quando manda para o banco de dados?
    Eu fazia a moda antiga com todos os detalhes expiracoes etc..

  • @johnspeaks55
    @johnspeaks55 3 місяці тому +1

    Não consegui importar esse JwtEncoder por nada... to usando a mesma versão do vídeo. Não sei o que ocorre

    • @guilhermelage798
      @guilhermelage798 2 місяці тому

      conseguiu solução colega? to com o mesmo b.o

  • @rafaelmartins5423
    @rafaelmartins5423 21 день тому

    Giuliana, obg.... Tentei executar seu código, mas o authentication não es´ta sendo autointejado.... Eu tavai mplementando em groovy peloi seu modelo.. passei a tarde toda tentando arrumar kkkk, aí fui testar o seu, deu a mesma coisa... estranho, no video funcionou.. Tem alguma ideia? Faço um request post para logar (usuário cadastrado) A questão´e que o authentication fica null.. aí da erro na hora de pegar as authorities..

    • @rafaelmartins5423
      @rafaelmartins5423 21 день тому

      Acho que tinha que limpar as dependencias... executei após o clean o seu projeto e deu certo.. e o meu tbm...

  • @danielfaustinosilva8505
    @danielfaustinosilva8505 8 місяців тому

    fantástico Juliana. Como faço para cadastrar as claims?

  • @giovanny1850
    @giovanny1850 10 місяців тому

    Aulão top Giuliana, parabéns! Eu gostaria de saber uma coisa, você lê de uma forma especifica a documentação para poder captar informações de forma mais assertiva? tem um jeito que você faz que prefere ou qualquer coisa assim?
    Volto a repetir, conteúdo de extrema qualidade, obrigado!

    • @giulianabezerra
      @giulianabezerra  10 місяців тому +3

      Sim, eu tenho um método que funciona bem pra mim. Costumo ver algum tutorial prático ou artigo e depois vou pra doc apenas pra aprofundar algo que precise, eu sinto mais resultado dessa forma

  • @Tersites499
    @Tersites499 10 місяців тому

    Não sei se o problema é só comigo mas o CORS não ta desabilitando de maneira nenhuma. Alguém mais teve esse problema ?

  • @matheusvitorferreira
    @matheusvitorferreira 10 місяців тому

    Estou tendo Problemas na Autenticação pra combinar com Swagger o Servlet está conflitando com o Swagger

  • @naplanilha
    @naplanilha Рік тому

    Parabéns Giuliana pela aula, consegue transmitir o conteúdo de forma bastante simplificada sem perder a profundidade teórica, gostei muito do vídeo! Tenho uma dúvida quanto a viabilidade desta solução em outro contexto. Quero disponiblizar para o usuário final os dois métodos de autenticação, o primeiro neste formato (login/senha com JWT), o segundo através de social login (oauth2). A forma mais correta seria utilizar cada método separadamente e criar endpoints específicos, ou existe alguma forma mais adequada para fornecer esta solução (2 tipos de login na aplicação)?

    • @giulianabezerra
      @giulianabezerra  Рік тому +1

      Isso, vc teria duas formas diferentes de login, serviços diferentes, e aí no front teria um link pra redirecionar pra cada opção. Eu costumo ver mais a opção com oauth mesmo, usando um idp dentro do próprio auth server, é mais desacoplada e permite trocar facilmente os componentes caso necessário.

    • @naplanilha
      @naplanilha 11 місяців тому

      @@giulianabezerra, olá, tudo bem? É possível elaborar um vídeo onde integra as duas soluções? Queria ver como este código ficaria na classe de configuração e no resources com os end-points

  • @rickdroio
    @rickdroio 7 місяців тому

    Olá Giu! estou tentando ler os campos do JWT após ele ser validado... consegue me dar um help onde seria?

  • @ABC-k2t9q
    @ABC-k2t9q 11 місяців тому +5

    Muito boa a iniciativa!!! Mas seguindo seus passos encontro um erro:
    java.lang.IllegalArgumentException: Could not resolve placeholder 'jwt.public.key' in value "${jwt.public.key}", apesar de estarem definidos conforme o vídeo.
    Faltou alguma configuração a ser mostrada no vídeo? Esse código está no seu git hub?

    • @giulianabezerra
      @giulianabezerra  10 місяців тому

      O código tá no github sim, dá uma olhada: github.com/giuliana-bezerra/spring-security-jwt

    • @vitor__________
      @vitor__________ 10 місяців тому

      tive o mesmo erro, como vc resolveu?

    • @jeffersonXPLODE
      @jeffersonXPLODE 8 місяців тому +1

      @@vitor__________ aos 26:30 ela comenta, você tem que criar os dois arquivos de chave publica e privada(use algum gerador de chaves) e colocar o caminho deles na properties.

  • @ellnonoel2905
    @ellnonoel2905 6 місяців тому

    excelente conteúdo. Porém travei nessa parte para gerer as chaves pública e privado. como gerar?

    • @carlosalexandresilva3697
      @carlosalexandresilva3697 6 місяців тому +1

      Mano, te dar uma luz, se vc tem o git instalado na tua maquina, abre o git bash, pode ir num diretorio teu, pelo explorador de arquivos mesmo, com botao direito do mouse (sem estar com o cursor em cima de uma pasta), em "mais opcoes" aparece o git bash
      vc vai rodar dois comandos, a geracao das chaves é feita pelo próprio git
      PRIMEIRO VC GERA A CHAVE PRIVADA
      openssl genrsa -out private_key.pem 2048
      AGORA VC EXTRAI A CHAVE PÚBLICA DA CHAVE PRIVADA
      openssl rsa -in private_key.pem -pubout -out public_key.pem
      entao vc vai ter dois arquivos diferentes com formato .pem
      depois é fazer os passos do vídeo

    • @isinha66
      @isinha66 6 місяців тому

      @@carlosalexandresilva3697 tem q baixar o openssl e colocar como variavel de ambiente tbm

  • @Alfrad3D
    @Alfrad3D 8 місяців тому

    Em aplicações que utilizam uma arquitetura de microserviços, como seria o desacoplamento da camada de segurança (criação de usuário e geração de token) para um microserviço separado e, posteriormente, a validação dos papéis (roles) apropriados em outros microserviços? Sei que existem alternativas como o Keycloak, que poderiam desempenhar essa função, mas em um projeto em estágio inicial, talvez não seja prático estabelecer uma infraestrutura tão robusta.

    • @giulianabezerra
      @giulianabezerra  8 місяців тому +1

      A parte de segurança a gente costuma usar o acess token pattern, falei disso num vídeo aqui do canal. O gateway centralizaria essa responsabilidade de se comunicar com o auth server e devolver o jwt. Em relação aos papéis seria nas aplicações mesmo pois se trata de regra de negócio, não é legal colocar muita inteligência nos barramentos da solução. Essa parte é tranquilo fazer com o spring security. O id token pode inclusive ser enviado como cabeçalho pelo gateway e assim passar os papéis que o usuário logado possui para que seja feita a validação do acesso.

  • @gabrafo
    @gabrafo 7 днів тому

    Como ficaria um cadastro pra gerar a senha encriptografada?

  • @eduardokohn9134
    @eduardokohn9134 4 місяці тому

    Você pretende fazer um vídeo complementar sobre RefreshToken? Fiz o seu curso de Testes na Udemy, muito bom !

    • @giulianabezerra
      @giulianabezerra  4 місяці тому +1

      Eduardo, eu já fiz, é o último vídeo da playlist de segurança, da uma olhada

  • @carlosalexandresilva3697
    @carlosalexandresilva3697 6 місяців тому

    Como implementar o refresh token baseado nessa implementação?

  • @sergiosdosreis5174
    @sergiosdosreis5174 18 днів тому

    Cannot invoke "org.springframework.security.core.Authentication.getAuthorities()" because "authentication" is null, aparece esse erro quando tento autenticar pelo insomnia, clonei o seu projeto e não alterei nada. :(

  • @luan_ferreira_
    @luan_ferreira_ 3 місяці тому

    vi que vc usou vscode, na empresa que vc trabalha eles não exigem uma IDE especifica? não gosto de nenhuma a não ser o vscode

  • @nilton5366
    @nilton5366 11 місяців тому +1

    Ótimo vídeo, poderia passar o código para resolver o problema de CORS ?

    • @giulianabezerra
      @giulianabezerra  10 місяців тому

      Dá uma olhada minha playlist da arquitetura ao deploy, nela mostro um código que habilita o cors para o frontend desenvolvido

  • @JosiasWandoNobredeQueiroz
    @JosiasWandoNobredeQueiroz 5 місяців тому

    Na parte das chaves, não é o contário? Se codificado com o chave pública e decodificado com a chave privada?

    • @giulianabezerra
      @giulianabezerra  5 місяців тому

      Não, na criptografia assimétrica o token é codificado com a chave privada (ela assina o token) e decodificado com a pública (ela verifica o token). Se fosse possível codificar com a chave pública, ela não poderia ser pública pq aí seria possível adulterar tokens e assiná-los novamente.

    • @JosiasWandoNobredeQueiroz
      @JosiasWandoNobredeQueiroz 5 місяців тому

      @@giulianabezerra Sei. Acho que embaralhei um pouco. mas me lembro sim do conceito de criptografia assiétrica.

    • @JosiasWandoNobredeQueiroz
      @JosiasWandoNobredeQueiroz 5 місяців тому

      @@giulianabezerra Já entendi minha confusão. a ordem é ao contrário quando você quer criptografar a informação. Fazer uma ponte segura. Mas no caso estamos assinando as chave, não embaralhando ela. Esse era um uso que eu não conhecia da criptografia assimétrica.

  • @phanteonv1457
    @phanteonv1457 3 місяці тому

    E para o usuário se cadastrar, tem algum outro vídeo que tem isso?

  • @robertocostarc
    @robertocostarc Рік тому

    Top...Top!👏

  • @elzosantos1253
    @elzosantos1253 5 місяців тому

    Será que poderia implementar os papeis de usuários e o refresh token nesse projeto

  • @avnercaleb8867
    @avnercaleb8867 Рік тому

    Professora, existem várias formas de trabalhar com segurança em nossas aplicações, vc mesmo tem trazido várias, em vídeos bem explicados. E necessário conhecer todas, ou seria melhor tentar focar em uma de forma bem aprofundada? Qual seu conselho?

    • @giulianabezerra
      @giulianabezerra  Рік тому +3

      Eu sugiro aprofundar no uso do Oauth, pois costuma ser a alternativa mais usada corporativamente. A figura do auth server + id provider traz mais modularidade pra solução, é simples substituir caso desejado um componente por outro, além do mais esses caras costumam ser robustos e nos poupam retrabalho.

    • @avnercaleb8867
      @avnercaleb8867 Рік тому

      @@giulianabezerra vlw

  • @petroniobonavides3530
    @petroniobonavides3530 2 місяці тому

    Professora. Que tal um authentication oauth2, mas com 39minutinhos.. rapidinho e simplificado.. fica aqui a sugestão

  • @fabricio2945
    @fabricio2945 11 днів тому

    Como chama esse programa que você fez o Design

  • @wagnerdba
    @wagnerdba 29 днів тому

    Toooooooooooop

  • @NSjoao3
    @NSjoao3 8 місяців тому

    Giulia, qual o site/software que usas para fazer esses diagrama?

    • @giulianabezerra
      @giulianabezerra  8 місяців тому +1

      Eu uso o Whimsical nesse vídeo, mas também uso o FreeForm e o Notas do Mac

  • @spacec0der
    @spacec0der 5 місяців тому +1

    The master

  • @stevenswendell3416
    @stevenswendell3416 8 місяців тому +1

    "Nossa, funcionou" hahhaha

  • @guilhermefranciscogoveiaba4390
    @guilhermefranciscogoveiaba4390 8 місяців тому +2

    valeu, mas pq vc faz a injeção de dependência manualmente?

  • @robdig
    @robdig 11 місяців тому

    ótimo conteudo, Faz um com cognito? Não vejo muito contudo em portugues para o uso

  • @RuitherBorba
    @RuitherBorba 9 місяців тому

    Gostei. Você tem uma npub no nostr pra eu te mandar alguns sats?

    • @giulianabezerra
      @giulianabezerra  8 місяців тому

      Nem conhecia, eu não tenho nenhuma rede social, apenas LinkedIn 😅

  • @elzosantos1253
    @elzosantos1253 5 місяців тому

    Fiz todo o passo a passo e no fim não autenticou, estou frustrado não consigo implementar o spring security nem que a vaca tuça

  • @davifaustino3045
    @davifaustino3045 3 дні тому

    Olha, essa matéria aí deu um pouco de medo kkkkkk. Deve ser por essas coisas que pagam bem um programador = )

    • @giulianabezerra
      @giulianabezerra  2 дні тому +1

      Segurança é talvez um dos tópicos mais avançados de programação, tem que ter paciência mesmo e ir estudando aos poucos cada conceito

  • @marcosgarcia179
    @marcosgarcia179 11 місяців тому

    Vídeo excelente, mas ainda é muita coisa né 🤔

  • @daviamerico2268
    @daviamerico2268 5 місяців тому

    Namoral spring security é ctrl c ctrl v kkkk