Verificação em duas etapas do cliente
Liga, confere e desliga o segundo fator (aplicativo autenticador) na conta do cliente logado.
A verificação em duas etapas (2FA) pede, além da senha, um código de 6 dígitos gerado por um aplicativo autenticador (Google Authenticator, Authy, 1Password). Estas quatro rotas deixam o cliente ligar e desligar o recurso na própria conta. Os mesmos caminhos existem para administrador e seller, em /api/v1/admin/2fa/... e /api/v1/vendor/2fa/..., com o mesmo comportamento.
Ligar tem dois passos: setup gera um segredo e um QR code; o cliente cadastra no aplicativo e confirm prova que o aplicativo gera códigos corretos. Só então o 2FA fica ativo e a plataforma entrega os códigos de recuperação.
- Gerar o segredo
POST /2fa/setupdevolvesecret,otpauth_urleqr_code. Mostre o QR code. - ConfirmarO cliente digita o código atual do aplicativo;
POST /2fa/confirmativa o 2FA e devolvebackup_codes. - Guardar os códigosPeça que o cliente salve os códigos de recuperação antes de fechar a tela.
/api/v1/storefront/2fa/setupClienteGerar o segredo do autenticador
Sem corpo. Cada chamada gera um segredo novo e deixa o 2FA como não confirmado.
curl -X POST "$BASE_URL/api/v1/storefront/2fa/setup" \
-H "Authorization: Bearer $TOKEN"{
"secret": "JBSWY3DPEHPK3PXP",
"otpauth_url": "otpauth://totp/Minha%20Loja:maria.souza@example.com?secret=JBSWY3DPEHPK3PXP&issuer=Minha%20Loja",
"qr_code": "data:image/png;base64,iVBORw0KGgo..."
}Campos da resposta
secretstringotpauth_urlstringotpauth:// que o aplicativo entende.qr_codestringdata: URL em base64, pronta para um img src./api/v1/storefront/2fa/confirmClienteConfirmar o código e ativar o 2FA
Corpo da requisição
codestringobrigatóriocurl -X POST "$BASE_URL/api/v1/storefront/2fa/confirm" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"code": "123456"
}'{
"backup_codes": [
"a1b2c3d4e5",
"0f9e8d7c6b",
"5a4b3c2d1e",
"91827364aa",
"bb11cc22dd",
"ee33ff4455",
"6677889900",
"12ab34cd56",
"78ef90ab12",
"cd34ef5678"
]
}Campos da resposta
backup_codesarray/api/v1/storefront/2fa/disableClienteDesligar o 2FA
Corpo da requisição
codestringobrigatóriocurl -X POST "$BASE_URL/api/v1/storefront/2fa/disable" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"code": "123456"
}'{
"message": "2FA disabled"
}/api/v1/storefront/2fa/statusClienteConsultar se o 2FA está ativo
curl "$BASE_URL/api/v1/storefront/2fa/status" \
-H "Authorization: Bearer $TOKEN"{
"enabled": true
}Campos da resposta
enabledbooleantrue quando o 2FA está confirmado e ativo.Erros
| Status | Quando | Exemplo de corpo |
|---|---|---|
| 400 | confirm sem setup prévio. | {"error":"2FA setup not initiated"} |
| 400 | Código errado em confirm ou disable. | {"error":"invalid verification code"} |
| 400 | disable com o 2FA desligado. | {"error":"2FA is not enabled"} |
| 401 | Sem token, ou token inválido. | {"error":"missing authorization header"} |
| 403 | Módulo de 2FA desligado na loja. | {"error":"module_disabled","module":"two-factor-auth"} |
| 403 | Administrador em impersonação. | {"error":"impersonation_blocked","message":"Esta ação requer login direto do usuário."} |
| 429 | Limite de requisições da família /storefront/. | {"error":"rate limit exceeded","detail":"too many requests, please try again later"} |
A mensagem de impersonation_blocked volta em português; ela é parte do contrato atual.