OAuth explicado: papéis, fluxo PKCE e OAuth vs SAML

OAuth explicado

O que é OAuth? Papéis, fluxo PKCE, OAuth vs SAML vs OIDC | We.Inc

OAuth 2.0 em palavras simples: os quatro papéis, o fluxo authorization code com PKCE passo a passo, scopes e como o OAuth se diferencia do OpenID Connect e do SAML.

OAuth 2.0 é um padrão que permite a um app agir em seu nome em outro serviço sem nunca ver sua senha. Você aprova um pedido na própria página de login do serviço, e o app recebe um access token limitado aos scopes que você autorizou. Ele cuida da autorização; o OpenID Connect adiciona o login por cima.

OAuth 2.0 vs OpenID Connect vs SAML 2.0

Antes do OAuth, conectar dois serviços muitas vezes significava digitar a senha de um no outro. O OAuth trocou isso por tokens de curta duração e escopo restrito, emitidos só depois da sua aprovação. O gerador abaixo cria um verifier e um challenge PKCE reais no seu navegador e monta a URL de autorização, para você ver cada parâmetro que o fluxo usa.

Perguntas frequentes

OAuth é autenticação ou autorização?

Autorização. Um access token diz o que um app pode fazer, não quem é o usuário, e as APIs podem nem informar isso. Quando você precisa da identidade da pessoa, use o OpenID Connect, que retorna um ID token assinado com claims como sub, iss, aud e exp.

O que é PKCE e eu preciso dele?

O PKCE (RFC 7636) vincula o authorization code ao app que iniciou o fluxo. O app envia primeiro o hash de um segredo aleatório e depois o próprio segredo, então um code roubado não serve para nada. Use S256, que os servidores são obrigados a suportar, em vez de plain.

Qual é a diferença entre OAuth e SAML?

SAML é um padrão mais antigo, baseado em XML, em que um provedor de identidade envia uma asserção assinada sobre o usuário para um provedor de serviço, principalmente para single sign-on corporativo no navegador. O OAuth emite tokens para acesso a APIs e funciona bem para apps mobile e APIs. O OpenID Connect é o equivalente mais próximo, no mundo OAuth, do login com SAML.

O que são scopes?

Scopes são as permissões que um app pede, escritas como uma lista de strings separadas por espaço, que diferenciam maiúsculas de minúsculas e são definidas pelo servidor de autorização, por exemplo openid email ou repo read:user. A tela de consentimento mostra esses scopes, e o token só cobre o que foi aprovado.

Ainda devo usar o fluxo implicit?

Não em projetos novos. Ele retornava os tokens no fragmento da URL, onde podem vazar pelo histórico e pelos logs. O fluxo authorization code com PKCE dá aos apps de navegador a mesma praticidade sem essa exposição.

Os quatro papéis

Por que existe a troca do code

Onde entra o OpenID Connect

O fluxo authorization code com PKCE

Cada etapa e os parâmetros que ela carrega

PKCE em código

Criar um verifier e um challenge S256 no navegador

32 bytes aleatórios codificados em base64url geram um verifier de 43 caracteres, o menor tamanho que a RFC 7636 permite.

Trocar o code por tokens

Roda depois do redirecionamento. Compare o state primeiro e depois envie o verifier guardado junto com o code.

Gerador de PKCE e URL de autorização

Cria um code_verifier novo e o code_challenge S256 dele com a criptografia do seu navegador e depois monta uma URL de autorização a partir das suas configurações. Nada é enviado; o endpoint abaixo é um exemplo que você substitui.

Endpoint de autorização

Scopes (separados por espaço)

Novo verifier

code_verifier ({n} caracteres, mantenha em segredo até a etapa 4)

code_challenge (S256)

URL de autorização

Comece grátis · Sem cartão de crédito

Relacionados: Guias

Produto

Para quem é

Recursos

Recursos

Empresa

Mapa do site