Cookie Consent by Free Privacy Policy Generator 📌 Exemplo prático OAuth2 Authorization Code PKCE


✅ Exemplo prático OAuth2 Authorization Code PKCE


💡 Newskategorie: Programmierung
🔗 Quelle: dev.to

Olá Mentes Tech, recentemente conclui um novo curso, e resolvi colocar em prática os aprendizados, e hoje vou escrever sobre OAuth2 e o fluxo authorization code com PKCE Proof Key for Code Exchange ou "pixie" para os íntimos.
Vou implementar um servidor de autorização e um exemplo para ilustrarmos a leitura ;)

Referências:
OAuth 2
OAuth2 - Authorization Code
OAuth2 - PKCE
Repositório auth-server-example

O Protocolo de Concessão de Credenciais de Cliente (PKCE) é uma extensão do OAuth 2.0 projetada para melhorar a segurança em aplicativos que acessam recursos protegidos por um servidor de autorização.
Ao contrário do fluxo de Cliente Confidencial padrão, que confia na segurança do cliente para proteger seu segredo, o PKCE é especialmente útil em aplicativos móveis e de navegador, onde os segredos do cliente podem ser facilmente expostos.

Em resumo, o PKCE estende o OAuth 2.0, adicionando um desafio de verificador secreto (code_verifier) ao fluxo de autorização. Este desafio é criptograficamente vinculado a um código de autorização temporário (code) que é retornado pelo servidor de autorização. O cliente envia então o código de autorização e o verificador secreto (code_verifier) para obter o token de acesso.

O PKCE não substitui os fluxos de cliente confidencial do OAuth 2.0, mas é uma adição valiosa, especialmente em cenários onde a segurança do cliente não pode ser totalmente garantida.
Ele fornece uma camada adicional de segurança sem exigir que o cliente compartilhe um segredo.
Isso o torna ideal para aplicativos móveis, de navegador e outros ambientes onde a segurança do cliente não pode ser garantida

Fluxo Authorization Code with PKCE

Bora codar ?

O objetivo aqui é criar um exemplo prático do fluxo OAuth2 Authorization Code With PKCE.

Aos engenheiros frontend peço desculpas pelas penalidades que aqui serão cometidas.

Alguns conceitos serão representados, mas não seguem toda a recomendação proposta nas RFCS, este é um exemplo não produtivo.

Sugiro que baixe o repositório que está no início do texto.

Ferramentas escolhidas:

  • Git
  • Docker
  • Golang
  • JavaScript + TailwindCss
  • VsCode

Iniciando o fluxo no frontend

//calcula o code challenge usando o code verifier
async function generateCodeChallenge(codeVerifier) 

//Gera e armazena o código para ser usado em outras etapas do fluxo
function generateCodeVerifier()

//funções de apoio para encodar e adicionar segurança usando um state
function base64urlencode(str)
function generateState()

//função para ativar o start do fluxo
async function auth()

Authorization Server

// endpoint que gera a url de authorização com PKCE
func GenerateAuthorizationURLWithPKCE(w http.ResponseWriter, r *http.Request) 

//calcula o code challenge usando o code verifier
func generateCodeChallenge(verifier string) string

//Gera um código de autorização que será trocado pelo token
func generateAuthorizationCode() string

//endpoint para retornar o token usando o authorization code
func TokenHandler(w http.ResponseWriter, r *http.Request)

//endpoint para logar usuário e solicitar consentimento
func LoginHandler(w http.ResponseWriter, r *http.Request)

Note que o fluxo com PKCE foi iniciado com sucesso, existe um code_challenger que será validada pelo servidor de autorização.

Imagem contém uma url construída no backend com fluxo iniciado no frontend

Etapa de consentimento
Exemplo etapa consentimento exibe as permissões que o usuário deve dar o consentimento e nele contém dois botões para aceitar ou declinar

Acesso autorizado

Imagem com dashboard após consentimento do usuário em compartilhar informações

E para finalizar...

Motivos para usar Authorization Code with PKCE no seu frontend

...

✅ Exemplo prático OAuth2 Authorization Code PKCE


📈 123.44 Punkte

✅ CVE-2023-50714 | yii2-authclient prior 2.2.15 Oauth2 PKCE improper authentication


📈 46.92 Punkte

✅ Open Authorization 2.0 (OAuth2.0) - Authorization Code Grant


📈 39.4 Punkte

✅ OpenID Connect Flows: From Implicit to Authorization Code With PKCE and BFF


📈 39.11 Punkte

✅ OpenID Connect Flows: From Implicit to Authorization Code with PKCE & BFF


📈 39.11 Punkte

✅ CVE-2024-22258 | Vmware Spring Authorization Server up to 1.0.5/1.1.5/1.2.2 PKCE downgrade


📈 35.58 Punkte

✅ Exemplo de MVVM com Redux em React Native


📈 34.67 Punkte

✅ Um Guia prático para iniciantes em ChatGPT


📈 30.14 Punkte

✅ Elevando a Qualidade: Guia Prático de Testes em Cypress para Componentes e E2E em Aplicações React


📈 30.14 Punkte

✅ Views, Sequences e Synonyms: Um tutorial prático


📈 30.14 Punkte

✅ OAuth2-Proxy up to 7.0.0 authorization [CVE-2021-21411]


📈 27.7 Punkte

✅ Step up OAuth security with PKCE - IETF for the win!


📈 27.4 Punkte

✅ OAuth em aplicações SPA / Mobile (PKCE extension)


📈 27.4 Punkte

✅ CVE-2024-23647 | authentik PKCE downgrade


📈 27.4 Punkte

✅ google-oauth-java-client up to 1.30.x PKCE Request privileges management


📈 27.4 Punkte

✅ CVE-2019-17268 | omniauth-weibo-oauth2 Gem up to 0.4.6 on Ruby code injection (Issue 36)


📈 23.05 Punkte

✅ oauth2-server up to 3.1.1 OAuth 2.0 code injection [Disputed]


📈 23.05 Punkte

✅ Multiple OAuth2 Schemes FastAPI


📈 19.52 Punkte

✅ The complete guide to protecting your APIs with OAuth2 (part 1)


📈 19.52 Punkte

✅ Mulesoft/Mulesoft API Gateway APIkit/http-connector/OAuth2 Provider directory traversal


📈 19.52 Punkte

✅ CVE-2023-31580 | light-oauth2 up to 2.1.26 JWT Token access control (Issue 369)


📈 19.52 Punkte

✅ Tutorial: OAuth2.0 with ORY Hydra, Vapor 3 and iOS - Part 1: Setup Hydra


📈 19.52 Punkte

✅ Python FastAPI: Integrating OAuth2 Security with the Application's Own Authentication Process


📈 19.52 Punkte

✅ CVE-2020-26938 | oauth2-server up to 3.1.1 URI Pattern redirect_uri cross site scripting (ID 637)


📈 19.52 Punkte

✅ OAuth2 Client Extension up to 0.3 on MediaWiki Parameter cross site request forgery


📈 19.52 Punkte

✅ Nextcloud Server bis 12.0.7/13.0.2 OAuth2 unbekannte Schwachstelle


📈 19.52 Punkte

✅ Advanced Email Functionality with Node.js, React.js, Nodemailer, and OAuth2 in 2023


📈 19.52 Punkte

✅ OAuth2.0


📈 19.52 Punkte

✅ Internet Bug Bounty: OAUTH2 bearer not-checked for connection re-use


📈 19.52 Punkte

✅ ORY Hydra prior v1.0.0-rc.3+oryOS.9 oauth2/fallbacks/error error_hint cross site scripting


📈 19.52 Punkte

✅ Advanced Email Functionality with Node.js, React.js, Nodemailer, and OAuth2 in 2023


📈 19.52 Punkte

✅ Sichere Authentisierung durch die Einbindung von OAuth2


📈 19.52 Punkte

✅ How to Implement an OAuth2 Resource Server with Spring Security


📈 19.52 Punkte











matomo

Datei nicht gefunden!