🛡️ MFA do Cliente
📋 Visão Geral
A área restrita de MFA cobre o gerenciamento da opção de aplicativo autenticador do cliente logado.
O fluxo é dividido em três etapas: iniciar setup, confirmar setup e remover chave MFA.
🔄 Entidades Envolvidas
- Cliente autenticado
- Opções MFA ativas no escopo atual
- Chave MFA do cliente
- Token de contexto MFA (
mfaToken) - O setup retorna
mfaTokeneoptionspara continuidade do fluxo. - A confirmação exige senha atual, código TOTP, chave MFA e
mfaToken. - A remoção elimina a chave MFA atual do cliente.
- A remoção pode ser bloqueada quando a política global de MFA obrigatório está ativa.
- O setup aceita
force=truepara iniciar novo contexto de configuração mesmo em cenário de MFA obrigatório por política.
📌 Notas e Considerações
🔗 Endpoints Relacionados
| Método | Endpoint | Descrição |
|---|---|---|
GET | /customer/mfa/app/setup | Inicia o setup do app autenticador |
POST | /customer/mfa/app/confirm | Confirma o setup com código TOTP |
DELETE | /customer/mfa/app/setup | Remove a chave MFA configurada |
POST | /customer/login/mfa | Conclui login com MFA |
POST | /customer/login/mfa/send | Envia código MFA para canal notificável |
📱 Setup de App MFA do Cliente
/customer/mfa/app/setup
Inicia setup do app autenticador
📋 Descrição
Endpoint responsável por iniciar o setup do app autenticador para o cliente logado, retornando o mfaToken de contexto e a lista de opções MFA elegíveis.
Quando a opção app ainda precisa de configuração, o campo settings inclui os dados de setup: secretKey, otpauth e qrCode.
🔐 Permissão
CustomerAuth— autenticação do cliente via token JWT
📝 Parâmetros
🏷️ Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Authorization | Bearer {token} | Token de autenticação do cliente |
🔗 Parâmetros de Query
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
force | boolean | ❌ Não | Quando true, inicia novo contexto de setup mesmo se a política global exigir MFA |
💡 Exemplo de Requisição
1curl --request GET \2 --url '{{MAIN_URL}}/customer/mfa/app/setup?force=true' \3 --header 'Authorization: Bearer SEU_TOKEN_AQUI'✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 "status": true,3 "data": {4 "mfaToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJI...",5 "options": [6 {7 "id": 1,8 "type": "app",9 "label": "Aplicativo autenticador",10 "settings": {11 "secretKey": "JBSWY3DPEHPK3PXP",12 "otpauth": "otpauth://totp/...",13 "qrCode": "data:image/png;base64,..."14 }15 }16 ]17 }18}⚠️ Possíveis Erros
> Os cenários abaixo representam os principais erros que podem ocorrer neste endpoint, servindo como referência para entendimento e tratamento das falhas.
| Código do Erro | HTTP | Descrição |
|---|---|---|
UAPPI_STORE_CUSTOMER_MFA_APP_SETUP_DISABLED | 400 | Setup indisponível — política global exige MFA e a requisição não usa force=true |
UAPPI_STORE_CUSTOMER_MFA_NO_VALID_OPTION | 400 | Nenhuma opção MFA elegível para o cliente no contexto atual |
UAPPI_STORE_CUSTOMER_NOT_FOUND | 404 | Cliente não encontrado |
✅ Confirmação de App MFA do Cliente
/customer/mfa/app/confirm
Confirma setup do app MFA com código TOTP
📋 Descrição
Endpoint responsável por confirmar o setup do app MFA para o cliente autenticado.
Valida a senha atual do cliente, o código TOTP gerado pelo aplicativo e a chave MFA enviada no setup — e retorna a lista atualizada de opções MFA configuradas.
🔐 Permissão
CustomerAuth— autenticação do cliente via token JWT
📝 Parâmetros
🏷️ Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Authorization | Bearer {token} | Token de autenticação do cliente |
Content-Type | application/json | Tipo de conteúdo |
📦 Parâmetros do Corpo
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
mfaToken | string | ✅ Sim | Token de contexto MFA retornado no setup |
secretKey | string | ✅ Sim | Chave MFA informada no setup |
code | string | ✅ Sim | Código TOTP de 6 dígitos gerado pelo app |
password | string | ✅ Sim | Senha atual do cliente — entre 8 e 64 caracteres |
💡 Exemplo de Requisição
1curl --request POST \2 --url '{{MAIN_URL}}/customer/mfa/app/confirm' \3 --header 'Authorization: Bearer SEU_TOKEN_AQUI' \4 --header 'Content-Type: application/json' \5 --data '{6 "mfaToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJI...",7 "secretKey": "JBSWY3DPEHPK3PXP",8 "code": "123456",9 "password": "SenhaAtual123"10 }'✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 "status": true,3 "data": {4 "options": [5 {6 "id": 1,7 "type": "app",8 "label": "Aplicativo autenticador",9 "settings": []10 }11 ]12 }13}⚠️ Possíveis Erros
> Os cenários abaixo representam os principais erros que podem ocorrer neste endpoint, servindo como referência para entendimento e tratamento das falhas.
| Código do Erro | HTTP | Descrição |
|---|---|---|
INVALID_REQUEST_PAYLOAD | 400 | Payload inválido — campos obrigatórios ausentes ou com formato incorreto |
UAPPI_STORE_INVALID_CURRENT_PASSWORD | 400 | Senha atual inválida |
UAPPI_STORE_CUSTOMER_MFA_CODE_INVALID | 400 | Código MFA inválido |
UAPPI_STORE_CUSTOMER_MFA_CODE_ATTEMPTS_EXCEEDED | 400 | Limite de tentativas de validação do código excedido |
UAPPI_STORE_CUSTOMER_MFA_NO_VALID_OPTION | 400 | Nenhuma opção MFA app elegível no contexto atual |
INVALID_MFA_TOKEN | 401 | Token MFA inválido |
EXPIRED_MFA_TOKEN | 403 | Token MFA expirado — reinicie o setup |
UAPPI_STORE_CUSTOMER_NOT_FOUND | 404 | Cliente não encontrado |
🗑️ Remoção de Setup de App MFA do Cliente
/customer/mfa/app/setup
Remove a chave MFA configurada para o cliente
📋 Descrição
Endpoint responsável por remover a chave MFA atualmente configurada para o cliente autenticado.
A operação pode ser bloqueada quando a política global de MFA obrigatório está ativa na loja.
🔐 Permissão
CustomerAuth— autenticação do cliente via token JWT
📝 Parâmetros
🏷️ Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Authorization | Bearer {token} | Token de autenticação do cliente |
💡 Exemplo de Requisição
1curl --request DELETE \2 --url '{{MAIN_URL}}/customer/mfa/app/setup' \3 --header 'Authorization: Bearer SEU_TOKEN_AQUI'✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 "status": true,3 "data": true4}⚠️ Possíveis Erros
> Os cenários abaixo representam os principais erros que podem ocorrer neste endpoint, servindo como referência para entendimento e tratamento das falhas.
| Código do Erro | HTTP | Descrição |
|---|---|---|
UAPPI_STORE_CUSTOMER_MFA_APP_SETUP_DISABLED | 400 | Remoção bloqueada — política global exige MFA ativo |
UAPPI_STORE_CUSTOMER_MFA_NO_VALID_OPTION | 400 | Cliente não possui chave MFA configurada para remoção |
UAPPI_STORE_CUSTOMER_NOT_FOUND | 404 | Cliente não encontrado |