🧪 Fake GovBr - Modo Desenvolvimento
FakeGovBrService
- class govbr_auth.fake_govbr.FakeGovBrService(users: dict[str, FakeUserData], session_ttl: int = 600, jwt_secret: str = 'fake-govbr-secret-key-dev-only', client_id: str = 'fake-client-id')[source]
Bases:
objectServiço que simula o comportamento do Gov.br para desenvolvimento.
Mantém sessões e autorizações em memória, sem necessidade de banco de dados. Simula o fluxo OAuth 2.0 com PKCE do Gov.br real.
- Parameters:
users – Dicionário de usuários válidos (chave=CPF, valor=FakeUserData).
session_ttl – Tempo de vida da sessão em segundos (padrão: 600 = 10 minutos).
jwt_secret – Chave secreta para assinar o id_token.
client_id – ID do cliente OAuth (deve coincidir com a config).
- __init__(users: dict[str, FakeUserData], session_ttl: int = 600, jwt_secret: str = 'fake-govbr-secret-key-dev-only', client_id: str = 'fake-client-id')[source]
- create_session(state: str, code_challenge: str, redirect_uri: str, nonce: str, scope: str = 'openid profile email') str[source]
Cria uma sessão temporária para armazenar os parâmetros OAuth.
- Parameters:
state – State criptografado do OAuth.
code_challenge – Desafio PKCE.
redirect_uri – URI de redirecionamento.
nonce – Nonce para validação.
scope – Escopos solicitados.
- Returns:
ID único da sessão criada.
- Return type:
request_id
- get_session(request_id: str) dict[source]
Recupera uma sessão pelo ID.
- Parameters:
request_id – ID da sessão.
- Returns:
Dados da sessão.
- Raises:
ValueError – Se a sessão não existir ou estiver expirada.
- authenticate_user(request_id: str, email: str, cpf: str) str[source]
Autentica um usuário e gera o código de autorização.
- Parameters:
request_id – ID da sessão OAuth.
email – E-mail fornecido pelo usuário.
cpf – CPF fornecido como senha.
- Returns:
URL de redirecionamento com code e state.
- Raises:
ValueError – Se credenciais inválidas ou sessão inválida.
- exchange_code_for_token(code: str, code_verifier: str, redirect_uri: str, client_id: str = None) dict[source]
Troca o código de autorização por tokens (simulando o endpoint /token do Gov.br).
- Parameters:
code – Código de autorização.
code_verifier – Verificador PKCE.
redirect_uri – URI de redirecionamento (deve ser a mesma).
client_id – ID do cliente (opcional, para validação).
- Returns:
Dicionário com access_token, id_token, etc.
- Raises:
ValueError – Se código inválido ou code_verifier não corresponder.
FakeUserData
- class govbr_auth.fake_govbr.FakeUserData(*, cpf: str, nome: str, email: str, picture: str = 'https://www.gov.br/++theme++padrao_govbr/img/govbr-logo-large.png')[source]
Bases:
BaseModelSchema para dados de um usuário fake no sistema.
- Parameters:
cpf – CPF do usuário (11 dígitos, usado como senha no fake).
nome – Nome completo do usuário.
email – E-mail do usuário.
picture – URL da foto do usuário (opcional).
- model_config = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
Funções Auxiliares
- govbr_auth.fake_govbr.create_default_fake_users() dict[str, FakeUserData][source]
Cria um conjunto de usuários fake padrão para desenvolvimento.
- Returns:
Dicionário de usuários (chave=CPF).
- govbr_auth.fake_govbr.render_fake_login_page(service: FakeGovBrService, auth_request: AuthorizationRequest) tuple[str, str][source]
Renderiza a página de login fake e cria a sessão OAuth.
- Parameters:
service – Instância do FakeGovBrService.
auth_request – Dados da requisição de autorização.
- Returns:
Tupla com (HTML da página, request_id da sessão).
- govbr_auth.fake_govbr.process_fake_login(service: FakeGovBrService, request_id: str, email: str, cpf: str) str[source]
Processa o login fake e retorna a URL de redirecionamento.
- Parameters:
service – Instância do FakeGovBrService.
request_id – ID da sessão OAuth.
email – E-mail fornecido pelo usuário.
cpf – CPF fornecido como senha.
- Returns:
URL de redirecionamento com code e state.
- Raises:
ValueError – Se credenciais inválidas.