Pessoal, seguem algumas observações importantes sobre o vídeo: 1. Quando eu falo sobre o token opaco, esqueci de citar a vantagem de com ele ser possível invalidar uma sessão de usuário. No caso do JWT, ele possui uma data de expiração, mas caso esse token tenha sido vazado ou algo do tipo eu não consigo expirá-lo, porque eu não salvo esse token em lugar nenhum no sistema. Já o opaco, como falei, aponta para um registro salvo, que pode conter um propriedade “expirado", por exemplo, permitindo assim facilmente invalidar esse token de acesso. 2. No fluxo Implicit eu citei o uso do PKCE, mas esqueci de mencionar que essa camada de segurança também é usada no fluxo Authorization Code. A necessidade é proteger as credenciais do cliente, que estão carregadas no navegador, e por isso acabam podendo ser obtidas por usuários mal intencionados. Com o PKCE esse risco é mitigado, pois além de ter as credenciais do cliente é necessário informar o código secreto conhecido pelo Authorization Server para realizar requisições autorizadas. 3. Quando falo sobre o Authorization Server (AS) e provedores de identidade (IDPs), talvez não tenha ficado claro que eles são coisas diferentes. O google, facebook e github a gente pode usar pra prover identidade (IDPs) e até recuperar tokens de acesso. Mas como AS de fato, nós costumamos usar um intermediário na comunicação com eles, como o Okta, Keycloak ou Spring Authorization Server.
Giuliana, primeiro de tudo, parabéns pelo conteúdo explicado de forma simples, com exemplos claros e de forma rápida, me ajudou muito a esclarecer os conceitos do OAuth2. Lendo seu comentário acima me surgiu uma dúvida com relação ao ponto 3: O ASs, por exemplo Keycloak, além de ser um AS, ele poderia ser um IDP, dependendo do caso de uso, ou seu papel está restrito ao intermediário (AS)?
@@knowledge4352 , eu tenho planos de fazer um focado em segurança e envolveria o authorization server do spring, mas ainda não estou trabalhando nisso. Inclusive, sobre o Auth Server do Spring eu fiz vídeo aqui pro canal, depois dá uma olhada ;)
Giuliana, sou dev Java iniciante e não tenho palavras pra explicar o quanto seu conteúdo sobre Spring Batch (Medium e curso na Udemy) me ajudaram ultimamente! Parabéns pela qualidade de todo material que você produz, dá pra perceber o empenho em simplificar os conceitos sem deixar de trazer riqueza de detalhes nas explicações. Obrigada por compartilhar seu conhecimento conosco!!
Obrigada, Thaís! Eu tenho paixão por tecnologia e por produzir conteúdos, é muito bom saber que eles ajudam a comunidade. Fico bem feliz que acompanhes o meu trabalho e que ele tenha contribuído positivamente para o seu aprendizado. Sucesso pra ti!
To há um tempo tentando entender o fluxo usado no Oauth2 e nunca consegui, mas esse vídeo me tirou as dúvidas e ficou extremamente claro pra mim. Agora é implementar o fluxo no código. Está salvo nos meus favoritos e vou recomendar para amigos que também tem a mesma dúvida. Obrigado pelo conteudo
Que conteúdo fantástico. Menina, onde você estava que só lhe encontrei agora ? Ganhou like e mais uma inscrição. Parabéns pela postagem. Altíssima qualidade e didática.
Tem conteúdo que dá gosto de ver e rever, Parabens a professora pois esta muitooo bem explicado, estou pelo menos há duas semanas buscando conteúdo sobre o assunto e este foi com toda certeza o mais claro e direto de se entender.
Que bom, Oscar! Os materiais sobre segurança costuma ser bem técnicos e desnecessariamente rebuscados, por isso quis trazer esse conteúdo com uma abordagem diferente. Agradeço o feedback! 🙏
Aula muito completa, me ajudou demais a entender os conceitos. Estou implementando todo ciclo de autenticação e autorização usando o authorization server e spring security. Confesso que a parte do authorization server é bem complicadinha rsrsrs, ainda mais porque ambos estão em constantes atualizações, mas depois que pegar é sucesso. Parabéns pelo conteúdo Giuliana, +1 like e +1 sub
Que ótimo, Luan! Realmente o AS é mais complicado, mas devo trazer conteúdo sobre ele em breve aqui pro canal. Agradeço demais o like e sub, e sucesso pra ti!
Parabéns, Giuliana! Você é uma raridade no ensino brasileiro, em poucos minutos conseguiu ensinar o que muitos brasileiros não conseguem em 2 horas de vídeo. Só faltou mostrar o código de cada e explicar para fechar com chave de ouro. Ainda fiquei com dúvidas: 1. Sobre os IDPs, são tipos de AS e servem para fazer logins? 2.O que fazer com o access code? Devo armazenar no navegador ou no client? 3. Seria interessante mostrar um exemplo do fluxo com openID e o código também.
Antônio, já fiz alguns desses vídeos, dá uma olhada nesse aqui: Aulão: Proteja o acesso aos seus serviços web com o Spring Security 6! ruclips.net/video/EQ5EwIYsgIE/видео.html
Olá, Andre! Já fiz um vídeo prático com o Spring Security, inclusive integrando com o Google, mas devo trazer mais conteúdos, incluindo um com o uso do Authorization Server do Spring. Obrigada pela sugestão! 🙏
Muito muito bom mesmo, esse tipo de didática "no code" (rsrs) é muito bom também, poderia trazer outros temas assim. Parabéns!! E trás a implementação rsrs
Excelente conteúdo, se você poder me responder umas dúvidas abaixo por gentileza 1.1 - O client no caso seria por exemplo o "RUclips" ou "Outlook"? Seria uma Aplicação em que estamos tentando logar correto? 1.2 - Se sim nesse caso em aplicações como o "RUclips" nós não dizemos ao "RUclips" o que ele pode acessar correto? 1.3 - Mas se estivermos tentando usar a nossa conta do "Facebook" para se registrar em uma aplicação terceira ai sim nós dizemos para essa aplicação terceira o que ela vai ter de permissão dos nossos dados do "Facebook" correto? 1.4 - Pelo que entendi é que quando nós vamos nos logar no "RUclips" ele nos redireciona para uma página fornecida pelo AS tipo o Keycloak e lá passamos as nossas credenciais que usamos quando nos cadastramos no "RUclips" correto? 1.5 - E então se o AS nos reconheceu ele nos redireciona de volta para o "RUclips" com o access token, e então o "RUclips" faz uma requisição pro Backend dele pedindo por algum recurso e passando no header o access token correto? 1.6 - E o Backend do "RUclips" quando recebe a requisição faz uma requisição pro Keycloak para checar se o access token é valido e se for ele retorna o recurso para o "RUclips" correto? 2.1 - Em uma aplicação onde o RO tem por exemplo um cartão cadastrado não devemos usar o JWT para a comunicação externa correto? 2.2 - No Grant Type do tipo >Password< São aplicações do tipo o "Outlook" onde obrigatoriamente precisamos passar as credenciais para ele consultar o AS dele correto? 2.3 - No minuto 14:47 não compreendi direito, quando vamos logar em um banco nós utilizamos o Grant type do Tipo >Password< não? Conseguiria dar um exemplo em relação a isso por gentileza?
Opa, claro, vamo lá: 1.1. Não, o client é a aplicação que tem aquela opção "logar com RUclips". O RUclips / Outlook seriam os provedores de identidade, que podem funcionar também como authorization servers se vc não usar um outro intermediário (eles também geram tokens de acesso) 1.2. Respondido em 1.1., nós dizemos a aplicação terceira oq ela tem permissão de acessar no RUclips da pessoa que logou 1.3. Essa aplicação terceira é o client, vc sempre precisa informar na tela de consentimento as permissões concedidas (scopes) 1.4. Quem te redireciona é o client, lembre da historinha que mostrei no vídeo. Esse client é que tem credenciais cadastradas no Keycloak, uma espécie de usuário e senha desse client e não o nosso. Lembrando que existem 2 pares de credenciais: as do resource owner e as do client (aplicação terceira) 1.5. Seu entendimento todo deve ficar mais claro depois da resposta em 1.1, como o client é a aplicação terceira ela que faz a requisição para o Backend com o token de acesso no header 1.6. O resource server é que checa a validade do token 2.1. O JWT deve conter dados não sensíveis, e ele normalmente contém informações do usuário. O cartão dele provavelmente não deveria estar dentro desse JWT. 2.2. Não, lembre que o client é a aplicação terceira que loga no Outlook, o Outlook funciona apenas como IDP ou authorization server. Nesses fluxos de logar em outra conta estamos usando o Authorization Code 2.3. O banco não usa Oauth, as credenciais fornecidas são do próprio banco e não de uma terceiro. O que ele faz pra ser mais seguro é introduzir múltiplo fator de autenticação (MFA). O problema do password Grant type é você informar suas credenciais para alguém que não é o dono delas. Por exemplo, se a aplicação terceira pede suas credenciais do Facebook ela pode guardar essas informações, o que deveria acontecer é ela te redirecionar para o Facebook e assim ela nem vai ver tuas credenciais de lá. Assiste o vídeo outras vezes depois de ler as respostas, tenho certeza que vai clarificar bastante! ;)
Excelente explicação Giuliana, só um ponto que observei, no final do vídeo (22:43)+/- você resumiu que, Oauth seria o protocolo de autorização, e o OpenId seria o de autenticação. Não seria o inverso?
É o que eu falei mesmo, Jeferson. O Oauth é sobre autorizar um terceiro a acessar um recurso protegido, o OpenID é sobre autenticar e obter dados do usuário autenticado.
Achei seu curso ótimo, uma dúvida que tenho é que como vi no site do spring que o Spring Oauth está sendo descontinuado e seria utilizado o Spring Authorization Server. Para uma aplicação monolita, você utilizaria o que você utilizaria para implementar a segurança tokens?
Estou apredendo mais sobre autenticação e autorização, seu vídeo me tirou muitas dúvidas, obrigado !! Queria tira só mais uma dúvida. Dentro do fluxo de Authorization code, o servidor de autorização retorna um codigo para o cliente e o cliente usa esse codigo para solicitar o token de acesso para o servidor de autorização, correto ? minha pergunta é, por que o servidor de autorização não retorna o token de acesso no primeiro momento ao invés do codigo de autorização ?
Excelente pergunta! Com essa etapa intermediária podemos garantir que o cliente Oauth é quem está pedindo o access token, pois o code é enviado para a sua callback uri. Sem essa etapa, qualquer um com as credenciais do cliente conseguiria emitir tokens, inclusive aplicações não autorizadas. Até interceptar as chamadas seria um risco, pois o access code já estaria lá na resposta. Então a ideia dessa camada extra é obter o access token por um canal seguro (via callback da próprio cliente oauth) garantindo que é a aplicação cliente que está solicitando o access token.
Opa, tem sim: Aulão Spring Security (ruclips.net/video/EQ5EwIYsgIE/видео.html) e Tutorial Spring Authorization Server + OpenID (ruclips.net/video/hgLKOPHfuis/видео.html)
Giuliana, agradeço muito. No campo teórico já deu uma boa clareada. Estou tendo uma grade dificuldade pra encontrar conteudo sobre Spring security Oauth2 Authorization Server 1.0 - tbm pelas constantes mudanças rescentes na API. Por onde vc sugere que eu estude a implementaçao prática dessa API (não estou conseguindo 'conjugar' TDS os conceitos na prática PR meio da documentação)?
Felipe, realmente pela documentação é meio complicado estudar o Authorization Server do Spring. Eu sugiro que vc dê uma olhada nas samples do projeto (github.com/spring-projects/spring-authorization-server/tree/main/samples), talvez vendo o código seja mais simples entender. Também quero trazer um conteúdo sobre isso aqui no canal, algo prático que pode te ajudar também, fica de olho ;)
Travei nesse ponto que comentei acima. Dei uma pausa nos estudos de Java por conta da dificuldade em relação a documentação do spring e estava me dedicando mais ao front-end (angular). Retomando agora, encontrei seu conteúdo. Excelente trabalho, Giuliana, seguirei acompanhando.
interessante só dizer aqui, que muitas vezes, principalmente em grant_type de client credentials, o id_token costuma estar junto do access_token, como um JWT que contém informações de user e email (id_token), e roles e scopes (access_token), mas tudo isso junto em um só. Assim ajuda bastante a não ter tanta complexidade. só dizendo aqui Giuliana, a sua voz e o leve sotaque é muito bom hahah, esse sotaque é de que região?.
Boa observação, Guilherme! Pro OpenId é separado mesmo, mas pra quem usa Oauth apenas acaba usando apenas um token como vc falou. Sobre o sotaque é de Natal, RN! Hehe, eu tento trabalhar a dicção pra comunicar melhor por aqui, que bom que está agradando 😊
Nerd, dá uma olhada nesse vídeo, já tem bastante coisa sobre essa implementação - Aulão: Proteja o acesso aos seus serviços web com o Spring Security 6! ruclips.net/video/EQ5EwIYsgIE/видео.html
@@giulianabezerra eu vi ele, aí depois q vi esse vídeo aqui q vc fala pra não usar o grant_type password sendo q só sei implementar ele, quero saber como fazer os outros
@@bruno-dev , lá no vídeo que mencionei eu mostro como implementar o authorization code, que seria o mais indicado na maioria dos casos, falta apenas sair o vídeo com o client credenciais :D
Seus conteúdos são incríveis, eu sempro tento assistir para aprender. Eu sou estagiário e esse assunto ainda é um pouco complexo para mim, você recomenda algum livro para se aprofundar nisso. Eu sei bem pouco ainda, como o JWT, eu sei construir uma API, criar um endpoint para o usuário se logar e esse token ser gerado para depois ser passado no header para ele consumir os recursos, mas e se quem gera o token for um serviço externo, aí que eu bugo, meus conhecimentos me limitam aqui.
Olá, Junior! Obrigada por acompanhar meu trabalho. E você já sabe bastante coisa viu, gerar o JWT e usá-lo para consumir recursos é a etapa mais crucial da autenticação / autorização, sair desse modelo para usar um token de terceiros é bem mais simples. Devo trazer conteúdos práticos sobre esse assunto aqui no canal, fica ligado! E em relação à livros, eu gosto do Spring Security in Action, mas ele é bem específico pro Spring, e também meio salgado $.$
@@giulianabezerra obrigado, e tô na torcida aqui para assistir conteúdos sobre isso. 😊. Sobre os livros, obrigado pela dica, eu vou colocar na minha lista, a empresa aqui tem parceria com a O'Reilly, eu já li o Spring Start Here, e agora estou lendo o Spring Boot in Practice. Mais uma vez, muito obrigado. 😊
Pessoal, seguem algumas observações importantes sobre o vídeo:
1. Quando eu falo sobre o token opaco, esqueci de citar a vantagem de com ele ser possível invalidar uma sessão de usuário. No caso do JWT, ele possui uma data de expiração, mas caso esse token tenha sido vazado ou algo do tipo eu não consigo expirá-lo, porque eu não salvo esse token em lugar nenhum no sistema. Já o opaco, como falei, aponta para um registro salvo, que pode conter um propriedade “expirado", por exemplo, permitindo assim facilmente invalidar esse token de acesso.
2. No fluxo Implicit eu citei o uso do PKCE, mas esqueci de mencionar que essa camada de segurança também é usada no fluxo Authorization Code. A necessidade é proteger as credenciais do cliente, que estão carregadas no navegador, e por isso acabam podendo ser obtidas por usuários mal intencionados. Com o PKCE esse risco é mitigado, pois além de ter as credenciais do cliente é necessário informar o código secreto conhecido pelo Authorization Server para realizar requisições autorizadas.
3. Quando falo sobre o Authorization Server (AS) e provedores de identidade (IDPs), talvez não tenha ficado claro que eles são coisas diferentes. O google, facebook e github a gente pode usar pra prover identidade (IDPs) e até recuperar tokens de acesso. Mas como AS de fato, nós costumamos usar um intermediário na comunicação com eles, como o Okta, Keycloak ou Spring Authorization Server.
Giuliana, primeiro de tudo, parabéns pelo conteúdo explicado de forma simples, com exemplos claros e de forma rápida, me ajudou muito a esclarecer os conceitos do OAuth2.
Lendo seu comentário acima me surgiu uma dúvida com relação ao ponto 3: O ASs, por exemplo Keycloak, além de ser um AS, ele poderia ser um IDP, dependendo do caso de uso, ou seu papel está restrito ao intermediário (AS)?
Olá Giulia, gostei muito dessa parte de segurança, pense no caso de ter um curso na udemy com o authorization server com Spring.
@@vitorjpr, ele poderia ser IDP também, pq vc consegue configurar user stores nele. Eu devo trazer um vídeo sobre esse assunto aqui pro canal.
@@knowledge4352 , eu tenho planos de fazer um focado em segurança e envolveria o authorization server do spring, mas ainda não estou trabalhando nisso. Inclusive, sobre o Auth Server do Spring eu fiz vídeo aqui pro canal, depois dá uma olhada ;)
Giuliana, sou dev Java iniciante e não tenho palavras pra explicar o quanto seu conteúdo sobre Spring Batch (Medium e curso na Udemy) me ajudaram ultimamente! Parabéns pela qualidade de todo material que você produz, dá pra perceber o empenho em simplificar os conceitos sem deixar de trazer riqueza de detalhes nas explicações. Obrigada por compartilhar seu conhecimento conosco!!
Obrigada, Thaís! Eu tenho paixão por tecnologia e por produzir conteúdos, é muito bom saber que eles ajudam a comunidade. Fico bem feliz que acompanhes o meu trabalho e que ele tenha contribuído positivamente para o seu aprendizado. Sucesso pra ti!
seu video foi tão bom que eu vi 2 vezes, mesmo tendo entendido na primeira.
Muito bom! Parabéns pela didática!
To há um tempo tentando entender o fluxo usado no Oauth2 e nunca consegui, mas esse vídeo me tirou as dúvidas e ficou extremamente claro pra mim. Agora é implementar o fluxo no código. Está salvo nos meus favoritos e vou recomendar para amigos que também tem a mesma dúvida. Obrigado pelo conteudo
O melhor video que eu encontrei, parabens
Excelente seu vídeo, muito didático e objetivo. PARABÉNS!!!
Assistindo agora. Domingou ♥️. Domingo à noite sem sofrer pela segunda. Só agradecer pelo aprendizado de hj 😘
Caramba! Muito bom! Um show de didática! Parabéns pelo video e por favor posta mais conteúdo eu amei! 💕
Claro, Deyse! Obrigada pelo feedback! 🤩
Que conteúdo maravilhoso Giuliana parabens, sou iniciante com Java e Spring e seu conteúdo tem ajudado muito, sua didática é incrível. Continue! ❤
Que bom ouvir isso, Adailton 🤩! Obrigada pelo apoio e sucesso nos estudos! 🫶
O melhor vídeo de OAuth2 disparado que vi até hj. Parabéns! Clareou todas as minhas dúvidas! 👏👏👏👏
Que video espetacular! Parabéns pela didática.
Que vídeo maravilhoso. Parabéns!!!!
Boa Noite!! Era isso que estava precisando. Estou com problema na autorização do bsc wallet
Você é muito didática. Obrigado.
Muito bom, Giuliana. Obrigado!
Sem dúvidas, o melhor vídeo que já vi sobre o assunto! Parabéns, excelente conteúdo. 🚀
essa sim é uma aula top, totalmente clara e objetiva. Muito bem! Parabéns!
Parabéns, Seu canal tem melhor conteúdo e agradeço por compartilhar seu conhecimento. Desejo para você sucesso na vida pessoal e profissional.
Muito obrigada pelo apoio!
Que conteúdo fantástico. Menina, onde você estava que só lhe encontrei agora ? Ganhou like e mais uma inscrição. Parabéns pela postagem. Altíssima qualidade e didática.
Muito obrigada! Espero que continue curtindo os conteúdos do canal 😊
Meus parabéns, foi uma bela aula: sucinta, direta, clara e objetiva!
Muito bom o video. Bem completo.
Tem conteúdo que dá gosto de ver e rever, Parabens a professora pois esta muitooo bem explicado, estou pelo menos há duas semanas buscando conteúdo sobre o assunto e este foi com toda certeza o mais claro e direto de se entender.
Que bom, Oscar! Os materiais sobre segurança costuma ser bem técnicos e desnecessariamente rebuscados, por isso quis trazer esse conteúdo com uma abordagem diferente. Agradeço o feedback! 🙏
Aula muito completa, me ajudou demais a entender os conceitos.
Estou implementando todo ciclo de autenticação e autorização usando o authorization server e spring security.
Confesso que a parte do authorization server é bem complicadinha rsrsrs, ainda mais porque ambos estão em constantes atualizações, mas depois que pegar é sucesso.
Parabéns pelo conteúdo Giuliana, +1 like e +1 sub
Que ótimo, Luan! Realmente o AS é mais complicado, mas devo trazer conteúdo sobre ele em breve aqui pro canal. Agradeço demais o like e sub, e sucesso pra ti!
Giuliana, obrigada pela aula! Parabéns!
De nada, Erivania! 😉
hahahahah ADOREI a apresentação! Parabéns! Imagino a trabalheira que eu, mas ficou sensacional!
Que bom que curtiu, Daniel! Deu trabalho mas o resultado valeu a pena 😁
Uai. Que conteúdo sensacional. Muito didático. Parabéns!
Vlw, Ricardo! 🤩
Ótima explicação. Valeu pelo vídeo!!
Parabéns Giuliana, muito bom o conteúdo passado.
Muito obrigada! 😁
Parabéns Giuliana, muito boa a explicação. Obrigado!
Excelente didâtica!
Saúde, paz e prosperidade!
🙌🏻🙏🏻
Excelente aula! Obrigado por compartilhar o conhecimento 😀
Que bom que gostou! 🤩
Conteúdo perfeito!! Sem dúvidas o melhor vídeo introdutório sobre esse assunto.
Poxa, que bom que curtiu, Itrio! Vlw demais pelo feedback 🤩
Parabéns pela explicação!
Vindo aqui para acompanhar o tutorial de Autorization Server. Muito obrigado pelo conteúdo maravilhoso.
Vlw, Lemuk! Agradeço a tua audiência 🤩
Melhor explicação de todas, incluindo vídeos estrangeiros!!! Parabéns!!
Que honra! Obrigada, Igor 🤩🙏
Bacana a explicação, assunto muito importante nos dias de hoje, parábens!
Que bom que gostou! 🎉
Muito grato por este conteúdo tão didático, não conhecia seu canal, vou dar uma maratona nele logo mais, e mais uma vez obrigado pelo conteúdo.
Que bom, Vitor! Espero que goste do conteúdo, quero saber suas impressões sobre os outros vídeos aqui do canal🤩
PARABÉNS!!!! Excelente aula!
Vlw, Fábio! 🙏
Gostei muito da aula, muito didática!
Vídeo bem completinho sobre o assunto, muito bom!
Muito obrigada 😊
Parabéns, Giuliana! Você é uma raridade no ensino brasileiro, em poucos minutos conseguiu ensinar o que muitos brasileiros não conseguem em 2 horas de vídeo. Só faltou mostrar o código de cada e explicar para fechar com chave de ouro.
Ainda fiquei com dúvidas:
1. Sobre os IDPs, são tipos de AS e servem para fazer logins?
2.O que fazer com o access code? Devo armazenar no navegador ou no client?
3. Seria interessante mostrar um exemplo do fluxo com openID e o código também.
Excelente vídeo, muito obrigado pelo conteúdo.
Eu que agradeço a sua audiência, Gustavo!
Aula top!
Muito obrigado, estava precisando muito desse conteúdo! Obrigado
Que bom que curtiu! 🤩
Muito obrigado pela aula. Parabens❤
Fico feliz que tenhas gostado, Caio! 🙏
Excelente conteúdo, parabéns!!!
Obrigada, Gabriel! 😁
Que explicação maravilhosa!
Que bom que curtiu, Arthur! Obrigada pelo feedback 🙏
Vídeo Excelente, muito bem explicado. Me ajudou bastante!
Que bom que ajudou, Gian! 🙏
material excelente, parabéns, tua didática é ótima. obrigada pelo conteúdo!
Obrigado pela aula.
Otima aula! Voce poderia falar mais sobre o padrao BFF (Backend for Frontend) e como isso afeta o metodo de autenticacao/autorizacao? Obrigado!
traga esses protocolos pra nos. obg pelo conteudo
Antônio, já fiz alguns desses vídeos, dá uma olhada nesse aqui: Aulão: Proteja o acesso aos seus serviços web com o Spring Security 6!
ruclips.net/video/EQ5EwIYsgIE/видео.html
Excelente vídeo Giuliana, bem objetivo e com exemplos de fácil entendimento. Traga a série implementando com o Spring Boot =D
Olá, Andre! Já fiz um vídeo prático com o Spring Security, inclusive integrando com o Google, mas devo trazer mais conteúdos, incluindo um com o uso do Authorization Server do Spring. Obrigada pela sugestão! 🙏
Muito bem explicado!!!!
Obrigado por compartilhar seus conhecimentos 🙌🙌
Mandou bem! super didática com o tema.
Excelente explicação, obrigado!
Disponha! 🤗
Melhor explicação de Oauth
Muito boa aula
Boa, acompanhando a partir de Angola!
Que legal, Domingos! Bom te ver por aqui :)
a explicação esta excelente. me ajudou muitoooo.
Valeu!
Obrigada pelo apoio!
Muito muito bom mesmo, esse tipo de didática "no code" (rsrs) é muito bom também, poderia trazer outros temas assim. Parabéns!!
E trás a implementação rsrs
Vlw, Kelvin! Pode deixar 😉
Giu, tava fuçando seu perfil no Linkedin e fiquei surpreso quando vi que estudou aqui na UFRN e trabalhou na ESIG. Que coincidência haha
Que video bom em geovana show de bola ^^
Excelente conteúdo, se você poder me responder umas dúvidas abaixo por gentileza
1.1 - O client no caso seria por exemplo o "RUclips" ou "Outlook"? Seria uma Aplicação em que estamos tentando logar correto?
1.2 - Se sim nesse caso em aplicações como o "RUclips" nós não dizemos ao "RUclips" o que ele pode acessar correto?
1.3 - Mas se estivermos tentando usar a nossa conta do "Facebook" para se registrar em uma aplicação terceira ai sim nós dizemos para essa aplicação terceira o que ela vai ter de permissão dos nossos dados do "Facebook" correto?
1.4 - Pelo que entendi é que quando nós vamos nos logar no "RUclips" ele nos redireciona para uma página fornecida pelo AS tipo o Keycloak e lá passamos as nossas credenciais que usamos quando nos cadastramos no "RUclips" correto?
1.5 - E então se o AS nos reconheceu ele nos redireciona de volta para o "RUclips" com o access token, e então o "RUclips" faz uma requisição pro Backend dele pedindo por algum recurso e passando no header o access token correto?
1.6 - E o Backend do "RUclips" quando recebe a requisição faz uma requisição pro Keycloak para checar se o access token é valido e se for ele retorna o recurso para o "RUclips" correto?
2.1 - Em uma aplicação onde o RO tem por exemplo um cartão cadastrado não devemos usar o JWT para a comunicação externa correto?
2.2 - No Grant Type do tipo >Password< São aplicações do tipo o "Outlook" onde obrigatoriamente precisamos passar as credenciais para ele consultar o AS dele correto?
2.3 - No minuto 14:47 não compreendi direito, quando vamos logar em um banco nós utilizamos o Grant type do Tipo >Password< não? Conseguiria dar um exemplo em relação a isso por gentileza?
Opa, claro, vamo lá:
1.1. Não, o client é a aplicação que tem aquela opção "logar com RUclips". O RUclips / Outlook seriam os provedores de identidade, que podem funcionar também como authorization servers se vc não usar um outro intermediário (eles também geram tokens de acesso)
1.2. Respondido em 1.1., nós dizemos a aplicação terceira oq ela tem permissão de acessar no RUclips da pessoa que logou
1.3. Essa aplicação terceira é o client, vc sempre precisa informar na tela de consentimento as permissões concedidas (scopes)
1.4. Quem te redireciona é o client, lembre da historinha que mostrei no vídeo. Esse client é que tem credenciais cadastradas no Keycloak, uma espécie de usuário e senha desse client e não o nosso. Lembrando que existem 2 pares de credenciais: as do resource owner e as do client (aplicação terceira)
1.5. Seu entendimento todo deve ficar mais claro depois da resposta em 1.1, como o client é a aplicação terceira ela que faz a requisição para o Backend com o token de acesso no header
1.6. O resource server é que checa a validade do token
2.1. O JWT deve conter dados não sensíveis, e ele normalmente contém informações do usuário. O cartão dele provavelmente não deveria estar dentro desse JWT.
2.2. Não, lembre que o client é a aplicação terceira que loga no Outlook, o Outlook funciona apenas como IDP ou authorization server. Nesses fluxos de logar em outra conta estamos usando o Authorization Code
2.3. O banco não usa Oauth, as credenciais fornecidas são do próprio banco e não de uma terceiro. O que ele faz pra ser mais seguro é introduzir múltiplo fator de autenticação (MFA). O problema do password Grant type é você informar suas credenciais para alguém que não é o dono delas. Por exemplo, se a aplicação terceira pede suas credenciais do Facebook ela pode guardar essas informações, o que deveria acontecer é ela te redirecionar para o Facebook e assim ela nem vai ver tuas credenciais de lá.
Assiste o vídeo outras vezes depois de ler as respostas, tenho certeza que vai clarificar bastante! ;)
@@giulianabezerra Ok, muito obrigado pelas respostas
Giuliana você e demais
Obrigada, Emerson! 🤩
Excelente explicação Giuliana, só um ponto que observei, no final do vídeo (22:43)+/- você resumiu que, Oauth seria o protocolo de autorização, e o OpenId seria o de autenticação. Não seria o inverso?
É o que eu falei mesmo, Jeferson. O Oauth é sobre autorizar um terceiro a acessar um recurso protegido, o OpenID é sobre autenticar e obter dados do usuário autenticado.
Muito bom. Obrigado!
Amei, parabéns 👏❤
Muito obrigada, Ana! 🤩
Meus sinceros parabéns!
Vlw, Léo! 🙏
Achei seu curso ótimo, uma dúvida que tenho é que como vi no site do spring que o Spring Oauth está sendo descontinuado e seria utilizado o Spring Authorization Server. Para uma aplicação monolita, você utilizaria o que você utilizaria para implementar a segurança tokens?
O Spring oauth continuará como spring oauth client e spring oauth resource server, na playlist de security eu mostro como utilizá-los na prática.
Caramba que tutorial bom
Muito bom!
Estou apredendo mais sobre autenticação e autorização, seu vídeo me tirou muitas dúvidas, obrigado !! Queria tira só mais uma dúvida. Dentro do fluxo de Authorization code, o servidor de autorização retorna um codigo para o cliente e o cliente usa esse codigo para solicitar o token de acesso para o servidor de autorização, correto ? minha pergunta é, por que o servidor de autorização não retorna o token de acesso no primeiro momento ao invés do codigo de autorização ?
Excelente pergunta! Com essa etapa intermediária podemos garantir que o cliente Oauth é quem está pedindo o access token, pois o code é enviado para a sua callback uri. Sem essa etapa, qualquer um com as credenciais do cliente conseguiria emitir tokens, inclusive aplicações não autorizadas. Até interceptar as chamadas seria um risco, pois o access code já estaria lá na resposta. Então a ideia dessa camada extra é obter o access token por um canal seguro (via callback da próprio cliente oauth) garantindo que é a aplicação cliente que está solicitando o access token.
Conteúdo nobre e fino💪🌝🍷
Obrigada, Jefferson! 😁
Muito bom! 👏🏽👏🏽👏🏽👏🏽👏🏽👏🏽
Gostei muito!
Que bom que curtiu, Alan!
Parabéns
Meu aplicativo da Nike
Tá pedindo para eu autenticar e vincular na OIDC e eu não sei como fazer isso pode me ajudar ?
Conteúdo massa. Estou à procura de um projeto prático implementando a autenticação via Google.
No vídeo sobre spring security eu falo exatamente sobre esse assunto, depois dá uma olhada 😉
@@giulianabezerra vou conferir, obrigado 😊
aula top, valeuuuu dms
Tmj, Lucas!
Excelente
Vlw, Felipe!
Gostei bastante hein, ja me inscrevi no canal, faz um de teste unitarios com o Mockito e Spy por favor
Opa, tá anotado!
Muito bom!
Sensacional!
Olá, tem o vídeo implementando com spring?
Opa, tem sim: Aulão Spring Security (ruclips.net/video/EQ5EwIYsgIE/видео.html) e Tutorial Spring Authorization Server + OpenID (ruclips.net/video/hgLKOPHfuis/видео.html)
Giuliana, agradeço muito. No campo teórico já deu uma boa clareada.
Estou tendo uma grade dificuldade pra encontrar conteudo sobre Spring security Oauth2 Authorization Server 1.0 - tbm pelas constantes mudanças rescentes na API. Por onde vc sugere que eu estude a implementaçao prática dessa API (não estou conseguindo 'conjugar' TDS os conceitos na prática PR meio da documentação)?
Felipe, realmente pela documentação é meio complicado estudar o Authorization Server do Spring. Eu sugiro que vc dê uma olhada nas samples do projeto (github.com/spring-projects/spring-authorization-server/tree/main/samples), talvez vendo o código seja mais simples entender. Também quero trazer um conteúdo sobre isso aqui no canal, algo prático que pode te ajudar também, fica de olho ;)
Travei nesse ponto que comentei acima. Dei uma pausa nos estudos de Java por conta da dificuldade em relação a documentação do spring e estava me dedicando mais ao front-end (angular).
Retomando agora, encontrei seu conteúdo. Excelente trabalho, Giuliana, seguirei acompanhando.
interessante só dizer aqui, que muitas vezes, principalmente em grant_type de client credentials, o id_token costuma estar junto do access_token, como um JWT que contém informações de user e email (id_token), e roles e scopes (access_token), mas tudo isso junto em um só. Assim ajuda bastante a não ter tanta complexidade.
só dizendo aqui Giuliana, a sua voz e o leve sotaque é muito bom hahah, esse sotaque é de que região?.
Boa observação, Guilherme! Pro OpenId é separado mesmo, mas pra quem usa Oauth apenas acaba usando apenas um token como vc falou. Sobre o sotaque é de Natal, RN! Hehe, eu tento trabalhar a dicção pra comunicar melhor por aqui, que bom que está agradando 😊
pow faz o video implementando esse Authorization Code e o OpenId no Spring Boot 3.x e Spring Secutiry 6, por favorrrr já maratonei seu canal todo kkk
Opa, tá certo, Nerd! Pode deixar que farei esse vídeo e obrigada pelo apoio ao canal, isso ajuda demais! 🙏
Nerd, dá uma olhada nesse vídeo, já tem bastante coisa sobre essa implementação -
Aulão: Proteja o acesso aos seus serviços web com o Spring Security 6!
ruclips.net/video/EQ5EwIYsgIE/видео.html
@@giulianabezerra eu vi ele, aí depois q vi esse vídeo aqui q vc fala pra não usar o grant_type password sendo q só sei implementar ele, quero saber como fazer os outros
Usando as tecnologias novas
@@bruno-dev , lá no vídeo que mencionei eu mostro como implementar o authorization code, que seria o mais indicado na maioria dos casos, falta apenas sair o vídeo com o client credenciais :D
Seus conteúdos são incríveis, eu sempro tento assistir para aprender. Eu sou estagiário e esse assunto ainda é um pouco complexo para mim, você recomenda algum livro para se aprofundar nisso. Eu sei bem pouco ainda, como o JWT, eu sei construir uma API, criar um endpoint para o usuário se logar e esse token ser gerado para depois ser passado no header para ele consumir os recursos, mas e se quem gera o token for um serviço externo, aí que eu bugo, meus conhecimentos me limitam aqui.
Olá, Junior! Obrigada por acompanhar meu trabalho. E você já sabe bastante coisa viu, gerar o JWT e usá-lo para consumir recursos é a etapa mais crucial da autenticação / autorização, sair desse modelo para usar um token de terceiros é bem mais simples. Devo trazer conteúdos práticos sobre esse assunto aqui no canal, fica ligado! E em relação à livros, eu gosto do Spring Security in Action, mas ele é bem específico pro Spring, e também meio salgado $.$
@@giulianabezerra obrigado, e tô na torcida aqui para assistir conteúdos sobre isso. 😊. Sobre os livros, obrigado pela dica, eu vou colocar na minha lista, a empresa aqui tem parceria com a O'Reilly, eu já li o Spring Start Here, e agora estou lendo o Spring Boot in Practice. Mais uma vez, muito obrigado. 😊
Já tem video dessa implementação? Rsrsr
Tem sim, dá uma olhada na playlist Segurança do canal
up
um tanto complexo