Aprenda OAuth 2.0 e OpenID Connect atrav�s de uma Aventura
Uma terra m�gica onde a autentica��o e autoriza��o ganham vida atrav�s de personagens, aventuras e magia. Aqui, conceitos complexos de OAuth 2.0 e OpenID Connect se transformam em uma jornada �pica de aprendizado!
H� muito tempo, em uma terra distante, existia o Reino OIDC, onde todos os cidad�os precisavam se identificar para acessar diferentes locais e servi�os.
No in�cio, cada estabelecimento tinha seu pr�prio sistema de identifica��o. Os cidad�os precisavam carregar dezenas de cart�es diferentes - um para a biblioteca, outro para o banco, outro para o hospital...
Isso n�o era muito pr�tico, n�o � mesmo?
Ent�o surgiu a Grande Alian�a OIDC - um sistema onde voc� se identifica uma vez com o Guardi�o das Identidades e ele garante sua entrada em todos os estabelecimentos aliados!
O Reino OIDC � uma met�fora completa para o funcionamento real de sistemas de autentica��o modernos:
Poder: Verificar identidades e conceder acessos
Personalidade: Rigoroso mas justo, nunca erra uma identifica��o
Papel T�cnico: Implementa OAuth 2.0/OIDC flows, gera tokens JWT, mant�m registro de clients
Jornada: Aprender os segredos da autentica��o
Objetivo: Dominar os flows OAuth e OIDC
Papel T�cnico: Usu�rio final que autoriza acesso a seus recursos atrav�s de consent screens
Servi�os: Biblioteca, Banco, Hospital, Loja
Necessidade: Verificar identidade sem gerenciar senhas
Papel T�cnico: Aplica��es que confiam no Authorization Server para autenticar usu�rios
Responsabilidade: Proteger dados e recursos valiosos
M�todo: S� aceitam pergaminhos v�lidos (tokens)
Papel T�cnico: APIs que validam tokens e servem recursos protegidos
Siga os passos do nosso her�i atrav�s dos diferentes flows OAuth/OIDC:
Cen�rio: O Aprendiz chega ao Reino e precisa se registrar
Conceito: Client Registration - como aplica��es se registram no AS
// Client Registration
{
"client_name": "Biblioteca Real",
"redirect_uris": ["https://biblioteca.reino.com/callback"],
"grant_types": ["authorization_code"],
"scope": "openid profile email"
}
Cen�rio: Aprendiz se apresenta ao Guardi�o das Identidades
Conceito: Authorization Code Flow - fluxo mais seguro
GET /auth?
response_type=code&
client_id=biblioteca_real&
redirect_uri=https://biblioteca.reino.com/callback&
scope=openid+profile&
state=xyz123
Cen�rio: Guardi�o entrega pergaminho m�gico ap�s verifica��o
Conceito: Token Exchange - trocar authorization code por tokens
{
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGc...",
"id_token": "eyJ0eXAiOiJKV1QiLCJhbGc...",
"refresh_token": "8xLOxBtZp8",
"expires_in": 3600,
"token_type": "Bearer"
}
Cen�rio: Usando pergaminho para acessar diferentes servi�os
Conceito: Resource Access - usar tokens para acessar APIs protegidas
GET /api/livros HTTP/1.1
Host: biblioteca.reino.com
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGc...
Cen�rio: Pergaminho expira, precisa de renova��o autom�tica
Conceito: Refresh Token Flow - renovar acesso sem re-autenticar
POST /token
grant_type=refresh_token&
refresh_token=8xLOxBtZp8&
client_id=biblioteca_real
O Reino OIDC n�o � apenas uma hist�ria - � um projeto funcional que implementa todos os conceitos!
Implementado com Flask e bibliotecas OAuth especializadas:
# app/auth_server.py
from flask import Flask
from authlib.integrations.flask_oauth2 import AuthorizationServer
from authlib.oauth2.rfc6749.grants import AuthorizationCodeGrant
app = Flask(__name__)
authorization = AuthorizationServer(app)
@app.route('/authorize', methods=['GET', 'POST'])
def authorize():
# Implementa authorization endpoint
return authorization.create_authorization_response()
@app.route('/token', methods=['POST'])
def issue_token():
# Implementa token endpoint
return authorization.create_token_response()
Biblioteca Real implementada como cliente OAuth:
# biblioteca/app.py
from authlib.integrations.flask_client import OAuth
oauth = OAuth(app)
reino_oidc = oauth.register(
name='reino',
client_id='biblioteca_real',
client_secret='secret_super_seguro',
server_metadata_url='https://reino.oidc.com/.well-known',
client_kwargs={'scope': 'openid profile email'}
)
@app.route('/login')
def login():
redirect_uri = url_for('callback', _external=True)
return reino_oidc.authorize_redirect(redirect_uri)
Acesse https://reino.caracore.com.br para experimentar todos os flows em um ambiente controlado e educativo!
Aprenda o fluxo b�sico OAuth sem complica��es. Perfeito para entender os conceitos fundamentais.
Enfrente situa��es mais complexas com m�ltiplos clients e scopes diferentes.
Domine conceitos avan�ados como PKCE, device flow e federa��o de identidades.
Todo o material est� dispon�vel no GitHub com licen�a MIT. Clone o reposit�rio e comece sua jornada:
git clone https://github.com/cara-core/reino-oidc
cd reino-oidc
docker-compose up -d
# Acesse http://localhost:3000 para come�ar!
Veja como os conceitos do Reino se aplicam em cen�rios reais:
"Login com Google" usa exatamente o mesmo flow que o Reino OIDC - Authorization Code com PKCE.
Funcion�rios acessam m�ltiplas aplica��es internas com um �nico login - como os estabelecimentos do Reino.
Apps m�veis usam refresh tokens para manter sess�es ativas - como renovar pergaminhos no Reino.
Cada servi�o valida tokens JWT independentemente - como os Guardi�es dos Tesouros.
Experimente implementar seu pr�prio Reino OIDC seguindo nosso tutorial passo a passo!
mkdir meu-reino-oidc
cd meu-reino-oidc
python -m venv venv
pip install flask authlib
Pronto para se tornar um mestre da autentica��o no Reino OIDC?
Complete todos os cen�rios do Reino e implemente seu pr�prio Authorization Server. Ao final, voc� ter� dominado OAuth 2.0 e OIDC! Pol�tica institucional: vers�o Free sem cobran�a; recursos Premium liberados somente ap�s confirma��o de pagamento e registro LGPD.